PHP为每个表行数据添加值

时间:2014-03-03 15:03:27

标签: php mysql sql

我正在开发一个php脚本,其中我必须在每一行添加一定的分数值。我能够显示所有行,但我不确定如何将每个给定的分数存储在一个变量中,我应该用什么查询来添加所有这些。

这是我的代码

    <?php
echo '<html>';
?>
<body>
<table border=0 cellspacing=0 cellpadding=0>
<?php
$connect = mysql_connect('localhost', 'root', '');
$db = 'labs';
$tb = 'comments';
$seldb = mysql_select_db($db, $connect); 
echo '<form method="POST" action="..'.$_SERVER["PHP_SELF"].'">';
$query = mysql_query('SELECT com_id, comments FROM comments ORDER BY com_id ASC');
while($i = mysql_fetch_assoc($query)) {
    echo'<tr><td>'.$i['comments'].'</td>';
    echo'<td><select name="score" id="score" size="1">
    <option value="5">5</option>
    <option value="10">10</option>
    <option value="15">15</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="45">45</option>
    <option value="50">50</option>
    </select></td></tr>';
    echo'<br>';
}
echo'<input type="submit" name="submit" value="submit">';
echo'</form>';

if(isset($_POST['submit'])) {
    //not sure if all the scores will be stored in here.
    $id = $_POST['id'];
    $query = mysql_query('insert query here');
}
?>

</table>
</body>
</html>

任何建议表示赞赏。在此先感谢。:D

4 个答案:

答案 0 :(得分:0)

我认为你需要每个更改行的id(可能是每行的隐藏字段。然后只需循环遍历所有收到的行并更新每一行。

您可能还希望更改所有表单字段名称以使用数组格式。通过这种方式,可以更轻松地完成PHP循环。

示例行:

echo'<tr><td>'.$i['comments'].'</td>';
echo'<td><select name="score['.$i["id"].']" id="score" size="1">
    <option value="5">5</option>
    <option value="5">10</option>
    <option value="5">15</option>
    <option value="5">20</option>
    <option value="5">25</option>
    <option value="5">30</option>
    <option value="5">35</option>
    <option value="5">40</option>
    <option value="5">45</option>
    <option value="5">50</option>
    </select></td></tr>';

现在只需遍历$ _POST [“score”]数组并使用适当的ID进行更新。

foreach($_POST["score"] as $id => $value{
    // ESCAPE your db values!!!!!
    // query stuff with $value and $id
}

还要记住

  • 不推荐使用mysql!使用mysqli
  • 在SQL
  • 中使用之前,从$ _POST等外部来源中逃避任何事情

答案 1 :(得分:0)

您只需要在下拉框中创建一个数组,

while($i = mysql_fetch_assoc($query)) {
echo'<tr><td>'.$i['comments'].'</td>';
echo'<td><select name="score[".$i['com_id']."]" id="score" size="1">
<option valyue="5">5</option>
<option valyue="5">10</option>
<option valyue="5">15</option>
<option valyue="5">20</option>
<option valyue="5">25</option>
<option valyue="5">30</option>
<option valyue="5">35</option>
<option valyue="5">40</option>
<option valyue="5">45</option>
<option valyue="5">50</option>
</select></td></tr>';
echo'<br>';
}

您可以访问它以获取所有评论

答案 2 :(得分:0)

<option valyue="5">50</option> 

应该是

 <option value="5">50</option> 

要将评论的值发送到数据库,您需要添加评论的ID

你应该循环这样的东西。

 $query = mysql_query('SELECT com_id, comments FROM comments ORDER BY com_id ASC');

 while($i = mysql_fetch_assoc($query)) {

    echo '<form method="POST" action="..'.$_SERVER["PHP_SELF"].'">';

    echo '<input type="hidden" name="id" value="'.$i['com_id'].'">';

    echo'<tr><td>'.$i['comments'].'</td>';

    echo'<td><select name="score" id="score" size="1">
    <option value="5">5</option>
    <option value="5">10</option>
    <option value="5">15</option>
    <option value="5">20</option>
    <option value="5">25</option>
    <option value="5">30</option>
    <option value="5">35</option>
    <option value="5">40</option>
    <option value="5">45</option>
    <option value="5">50</option>
    </select></td></tr>';

    echo'<br>';

    echo'<input type="submit" name="submit" value="submit">';

    echo'</form>';
}

答案 3 :(得分:0)

我想最简单的方法是以下(其他解决方案和评论的混合):

<?php
echo '<html>';
?>
<body>
<table border=0 cellspacing=0 cellpadding=0>
<?php
$x = 0;
$connect = mysql_connect('localhost', 'root', '');
$db = 'labs';
$tb = 'comments';
$seldb = mysql_select_db($db, $connect); 
echo '<form method="POST" action="..'.$_SERVER["PHP_SELF"].'">';
$query = mysql_query('SELECT com_id, comments FROM comments ORDER BY com_id ASC');
while($i = mysql_fetch_assoc($query)) {
    $x++;
    echo'<tr><td>'.$i['comments'].'</td>';
    echo'<td><select name="score_'.$x.'" id="score" size="1">
    <option value="5">5</option>
    <option value="10">10</option>
    <option value="15">15</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="45">45</option>
    <option value="50">50</option>
    </select></td></tr>';
    echo'<br>';
}
echo'<input type="submit" name="submit" value="submit">';
echo'</form>';

if(isset($_POST['submit'])) {
    //not sure if all the scores will be stored in here.
    $id = $_POST['id'];

    for($y = 0;$y <= $x; $y++)
    {
        //This query is no sql injection save. Please add filters for productive uses!!
        $query = mysql_query('UPDATE table_name SET score = '.$_POST["score_".$y].' WHERE id='.$id);
    }
?>

</table>
</body>
</html>

代码未经过测试!