复选框:获取所有值,不仅是最后一个(来自,mysql和php)

时间:2013-03-05 21:31:44

标签: php mysql foreach


我的表格有问题。我有一个数据库,并使用表格从客户端使用php函数foreach获取所有数据。

在操作页面(invoice.php)上,我可以显示所有选定的项目,但每次我为每个项目设置数量时,它只会显示我填写的最后一个文本框。

我不知道如何解释它,所以这是我的代码:

form.php:     

    <input type="text" name="txtbox[<?php echo $input->id_article; ?>]" value="<?php echo $input->id_article; ?>" placeholder="1" style="text-align: center; width:30px;"></input>

        <input
            type="checkbox" 
            name="checked_articles[]"
            value="<?php echo $input->id_article; ?>">
        <?php echo "(".
                        ($input->ref_article).")".
                        ($input->nom_article)." (".
                        ($input->prix_article)." €)"; ?><br>
  <?php endforeach; ?>


invoice.php(带有mysql数据查询的标题):

if(isset($_POST['checked_articles'])){
foreach($_POST['checked_articles'] as $chkbx){
$sql_articles = 'SELECT * FROM articles WHERE id_article="'.$chkbx.'"';
$req_articles = mysql_query($sql_articles) or die('Erreur SQL !<br>'.$sql_articles.'<br>'.mysql_error());
$data_articles[] = mysql_fetch_assoc($req_articles);
}}


$textbox = $_POST['txtbox'][$chkbx];


invoice.php(显示数据的位置):

<?php foreach ($data_articles as $input) : ?>
    <tr>
        <td><?php echo $input['ref_article']; ?></td>
        <td><?php echo $input['nom_article']; ?></td>
        <td><?php echo $textbox; ?></td> <!-- Where I want the quantity to be displayed -->
        <td><?php echo $input['prix_article']; ?> €</td>
        <td><?php echo $input['prix_article']*$textbox; ?> €</td>
    </tr>
    <?php endforeach; ?>




我想为每个选定的项目显示用户在文本框中放置的数量。

任何帮助都会得到高度赞赏!
谢谢!

1 个答案:

答案 0 :(得分:1)

从代码的外观来看,$ textbox是一个填充了id的数组,如下所示:

Array
(
    [txtbox] => Array
        (
            [1] => 1
            [2] => 1
            [3] => 1
        )

)

在foreach中,您需要使用文章ID引用该值,如下所示:

<td><?php echo $_POST['txtbox'][$input['id_article']]; ?></td>

另外,你应该考虑防止sql注入。你的SQL中的id直接从帖子传递。

希望它有所帮助。