繁体   English   中英

PHP为每个表行数据添加值

[英]PHP Add value to each table row data

我正在使用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>

任何建议表示赞赏。 提前致谢

我认为您需要更改的每一行的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之类的外部源转义任何内容

您只需要对下拉框进行如下排列,

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>';
}

您可以访问所有评论

<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>';
}

我想对您来说最简单的方法是以下方法(其他解决方案和评论的组合):

<?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>

代码未经测试!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM