2011-12-05 13 views
0

私は、医療募集Webサイトにmysqlテーブルの情報を照会して印刷するphpがあります。 レンダリングされたHTMLテーブルのレイアウトに影響を与えるべきではない方法で、ユーザが入力して、改行しないように改行することがあります。php linebreakによって文字列の値が消えます

文字列を整形してテーブルにデータを書き込むことができますが、データはすでにたくさんあるので、ページ上の改行を削除することにしました。 phpの読み込みと印刷結果。

は、私はこのようなトラブルの原因となる文字列のいずれかを宣言した。ここで

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

は、全体のコードです:HTMLテーブルがレンダリングされる

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

、その後、 :

すべて彼はコードがうまく動作しますが、それは上の部分だけです。これで$ 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> 

コードが十分に働いていたが、私は、その列全体をトリムを追加しましたので、。

誰かがなぜ消えているのか、私の構文に間違いがあるのか​​を教えてください。

+1

DBホスト/ユーザー名/パスワードを共有していただきありがとうございます。あなたはおそらくあなたの名前を変更する必要があります。パスワードを右に。 –

+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

関連する問題