php小白求教form display and update mysql的问题

2014-01-24 00:08:49 +08:00
 yappa
php小白,各种谷歌,也试了好多stackoverflow上的代码,都只能正常display,无法update。代码如下:
<?php
define('DB_NAME', 'form');
define('DB_USER', 'root');
define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost');


$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link)
{
die('could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected)
{
die('Can\'t use ' .DB_NAME .':' . mysql_error());
}
$query = "SELECT * FROM articles";
$result = mysql_query($query) or die(mysql_error());
?>
<div class="content-holder">
<form action="" method="post">
<table border='1' cellpadding='10' id='ViewTable'>
<tr>
<th>title</th>
<th>id</th>
</tr>
<?php
while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$title = $row['title'];
?>
<tr>
<td>
<input type="textbox" class="TextAreaTitle" name="title" value="<?=$title?>"></input>
<input type="hidden" name="id" value="<?=$title?>"></input>
</td>
<td><?=$id?></td>
</tr>
<?php
}
?>
</table>
<input type="submit" name="update" class="submitlink" Value="update">
</form>
</div>

<?php
if(isset($_POST['update']))
{
for ($i=count($_POST['id']); $i--;)
{
$id = $_POST['title'][$i];
$title = $_POST['id'][$i];
mysql_query("UPDATE articles SET title= $title WHERE id= $id ");
}
}
?>

3248 次点击
所在节点    PHP
4 条回复
vibbow
2014-01-24 05:33:00 +08:00
槽点很多

http://pic.vsean.net/di/MBB4/QQ截图20140123212941.png

你的这个hidden input明明是id,为什么你要设置变量为value。
其次Input标签是自闭和的。

还有如果你的input有N多相同name的元素的话,那么name应该这样写:
<input type="hidden" name="id[]" value="<?=$title?>" />
这样PHP才会把这些name相同的元素识别成一个数组了,否则应该是后者替换前者的关系。

最后你mysql语句update数值的时候不转移特殊字符么...

看着太纠结了,给你重写一份出来吧。
vibbow
2014-01-24 06:30:38 +08:00
重写完成
http://pastebin.com/XPFa1EaS

虽然我写的代码也很挫...
vibbow
2014-01-24 06:37:16 +08:00
重写的时候又发现了代码的两个槽点:

1. for loop写错了
2. for loop没必要每次都去求一次数组的大小,太浪费性能了...

LZ是在HTML中间去运行sql查询的,我重写的时候也这样写了。

不过一般情况下我喜欢在开头把所有该查的东西都查完了,保存成数组,然后在HTML里直接输出。虽然会浪费点内存,反正这年头内存也不值钱。
yappa
2014-01-24 08:34:32 +08:00
@vibbow 感谢已发送

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/98159

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX