2011-12-05 109 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