2017-10-05 1 views
0

フィールドにクエリ結果を入力するフォームがあり、フィールドを更新できます。私の問題は、任意のフィールドはレコードのその列の最初の単語のみを表示することです。フィールドに何かを入力するとレコードが更新されますが、最初の単語のみが表示されます。ここに私が持っているものがあります。あなたは二重引用符で値をラップしていないので、クエリからフォームフィールドにデータを入力すると、最初の単語しか表示されません。

<html> 
<body> 
<?php 
$con = mysql_connect("localhost","db_username","db_pw"); 
{ 
} 
mysql_select_db("db_name",$con); 
if (isset($_POST['update'])){ 
$UpdateQuery = "UPDATE db_table SET Name='$_POST[Name]', Email='$_POST[Email]', ID='$_POST[ID]', Notes='$_POST[Notes]' WHERE ID='$_POST[Hidden]'"; 
mysql_query($UpdateQuery, $con); 


}; 

$sql = "SELECT * FROM db_table "; 
$mydata = mysql_query($sql,$con); 

echo "<table border='1'> 
<tr> 
<th>Name</th> 
<th>Email</th> 
<th>Member Number</th> 
<th>Notes</th> 
</tr>"; 

while($row = mysql_fetch_array($mydata)) 
{ 
echo "<form action=updaterec.php method=post>"; 
echo "<tr>"; 
echo "<td>" . "<input type=text name=Name value=" . $row['Name'] . " ></td>"; 
echo "<td>" . "<input type=text name=Email value=" . $row['Email'] . " ></td>"; 
echo "<td>" . "<input type=text name=ID value=" . $row['ID'] . " ></td>"; 
echo "<td>" . "<input type=text name=Notes value=" . $row['Notes'] . " ></td>"; 
echo "<td>" . "<input type=hidden name=Hidden value=" . $row['ID'] . " ></td>"; 
echo "<td>" . "<input type=submit name=update value=update" . " ></td>"; 
echo "</form>"; 
echo "</tr>"; 
} 
echo "</table>"; 
mysqli_close($con); 
?> 
</body> 
</html> 
+3

ボビーのテーブルが来てくれています。http://bobby-tables.com/ – miknik

+0

これはパスワード保護ディレクトリにあります。私はそれを使用する唯一の人になります。 – PCMedicJAX

答えて

0

問題がある、あなたのhtmlはあなたの入力フィールドの値全体をラップしてから有効になると思われる、<input name=john smith>代わりの<input name="john smith">として生成されています。

だから、あなたは二重引用符を使用しているので、あなたが\"を使用する必要があります...

value=" . $row['Name'] . " 

...になるはず...

value=\"" . $row['Name'] . "\" 

あなたは常にあなたのソースを確認する必要がありますPHPが問題を抱えているときに有効であることをブラウザで(そして完成したdomだけでなく)生成した後のコード。

あなたの値をエスケープすることも見ていきます。

完全なソリューション:

while($row = mysql_fetch_array($mydata)) 
{ 
    echo "<form action=updaterec.php method=post>"; 
    echo "<tr>"; 
    echo "<td><input type=text name=Name value=\"" . htmlentities($row['Name']) . "\" ></td>"; 
    echo "<td><input type=text name=Email value=\"" . htmlentities($row['Email']) . "\" ></td>"; 
    echo "<td><input type=text name=ID value=\"" . htmlentities($row['ID']) . "\" ></td>"; 
    echo "<td><input type=text name=Notes value=\"" . htmlentities($row['Notes']) . "\" ></td>"; 
    echo "<td><input type=hidden name=Hidden value=\"" . htmlentities($row['ID']) . "\" ></td>"; 
    echo "<td><input type=submit name=update value=\"update\" ></td>"; 
    echo "</form>"; 
    echo "</tr>"; 
} 

エクストラ:また、単一引用符を使用すると、変数を解析する必要がない場合の混乱を避けるために助けることができます。

echo '<td><input type="text" name="Name" value="' . htmlentities($row['Name']) . '" ></td>'; 
+1

それは完璧に働きましたありがとうございます。 – PCMedicJAX

関連する問題