2011-12-05 43 views
0

我有一些PHP查询和打印在医疗招聘网站上的MySQL表的信息。 有时用户输入,导致换行符,我宁愿没有它们,因为 它影响了呈现的HTML表格的布局,它应该不会。PHP linebreak导致字符串值消失

我可以修剪字符串,当他们填写表格和数据写入表中,但那里已经有很多数据,所以我决定删除页面 的换行符,其中php读取和打印结果。

我声明的字符串之一,这会导致麻烦的,因为这样:

$specialtr = trim($special, "\n"); 

,然后在HTML表格获取呈现:

echo '<td width="150">' . $specialtr . '</td>'; 

这里是整个代码:

全部t他的代码工作,它只是上面的部分,我补充说,现在导致列$ specialtr变量不打印/打印为空。

<form action="selected.php" method="POST"> 
<table border="1" cellpadding="2" cellspacing="2" style="width: 98%; margin-left: auto; margin-right: auto;"> 
<tr> 
<td> 
<?php 
$dbhost = 'xxx'; 
$dbuser = 'xxx'; 
$dbpass = 'xxx'; 
$dbname = 'xxx'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (mysql_error($conn)); 
mysql_select_db($dbname) or die(mysql_error($conn)); 

$specialtr = trim($special, "\n"); 

echo '<table border="1" cellpadding="2" cellspacing="2" style="margin-left: auto; margin-right: auto;">'; 

$query = 'SELECT userid FROM employee 
     ORDER BY userid ASC'; 
$result = mysql_query($query, $conn) or die(mysql_error($conn)); 

$num_entries = mysql_num_rows($result); 

while ($row = mysql_fetch_assoc($result)) { 
foreach ($row as $value) { 
echo '<tr>'; 
echo '<td><input type="radio" name="employee" value="' . $row['userid'] . '"/></td>'; 
echo '<td>Select</td>'; 
} 
} 

echo '</tr>'; 
echo '</table>'; 

?> 

</td> 
<td> 

<?php 
echo '<table border="1" cellpadding="2" cellspacing="2" style="width: 98%; margin-left: auto; margin-right: auto;">'; 
echo '<tr>'; 
$query = 'SELECT userid, name, surname, sex, age, nationality, email, telnr, special FROM employee 
     ORDER BY userid ASC'; 
$result = mysql_query($query, $conn) or die(mysql_error($conn)); 
while ($row = mysql_fetch_assoc($result)) { 
extract($row); 
echo '<td>' . $userid . '</td>'; 
echo '<td>' . $name . '</td>'; 
echo '<td>' . $surname . '</td>'; 
echo '<td>' . $sex . '</td>'; 
echo '<td>' . $age . '</td>'; 
echo '<td>' . $nationality . '</td>'; 
echo '<td>' . $email . '</td>';    
echo '<td>' . $telnr . '</td>';     
echo '<td width="150">' . $specialtr . '</td>'; 
echo '</tr>'; 
} 
echo '</table>'; 
?> 

</td> 
</tr> 
</table> 

<br/> 
<br/> 
<input type="submit" name="go" value="Go!" /> 
</form> 

该代码运行良好,但自从我添加了trim,整个列($ special列消失)。

我希望也许有人能告诉我为什么它会消失,或者如果我的语法有一点小错误。

+1

感谢您分享数据库的主机/用户名/密码......你应该改变你密码RIGHT AWAY。 –

+0

感谢您的改变。 – Max

回答

1

使用extract()就像这是一件可怕的事情。作为一般规则应该避免该功能。

另外请注意,你正在做你的trim()调用BEFORE $ special被定义,所以你的$ specialtr变量将是一个空字符串。在开始获取数据库结果并将结果行提取到$ special之前调用函数将不会神奇地应用trim()以触及您获取的行。如果你想为你获取它们的结果进行修整,那么你必须在你做的获取申请修剪:

while ($row = mysql_fetch_assoc($result)) { 
    echo '<td>' . $row['userid'] . '</td>'; 
    ... 
    echo '<td width="150">' . trim($row['special']) . '</td>'; 
           ^^^^^^^^^^^^^^^^^^^^^ 
} 
+0

哦,当然。傻我.. – Max