我有一些php在医疗招聘网站上查询和打印mysql表的信息。 有时用户进入,导致换行,我宁愿没有它们,因为 它会以不应该的方式影响呈现的HTML表的布局。
我可以在填写表单时修剪字符串并将数据写入表中,但是那里已经有很多数据了,所以我决定删除页面上的换行符 php读取并打印结果。
我声明了其中一个导致问题的字符串:
$specialtr = trim($special, "\n");
,然后呈现html表的位置:
echo '<td width="150">' . $specialtr . '</td>';
以下是整个代码:
所有代码都有效,只有上面添加的部分现在导致带有$ 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>
代码运行得很好,但是由于我添加了修剪,整个列($ special列消失了)。
我希望也许有人可以告诉我它为什么会消失或我的语法有一点错误。
答案 0 :(得分:1)
像这样使用extract()
是一件可怕的事情。作为一般规则,应该避免使用该功能。
另请注意,在定义$ special之前,您正在进行trim()
调用,因此$ specialtr变量将是一个空字符串。在开始获取数据库结果并将结果行提取到$ special之前调用该函数不会奇怪地应用trim()
来到达您获取的行。如果您希望在获取结果时修剪结果,则必须在执行提取后应用修剪:
while ($row = mysql_fetch_assoc($result)) {
echo '<td>' . $row['userid'] . '</td>';
...
echo '<td width="150">' . trim($row['special']) . '</td>';
^^^^^^^^^^^^^^^^^^^^^
}