0


フォームに問題があります。私はデータベースを持っており、フォームを使用して、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']; ?> €&lt;/td>
        <td><?php echo $input['prix_article']*$textbox; ?> €&lt;/td>
    </tr>
    <?php endforeach; ?>




選択したアイテムごとに、ユーザーがテキストボックスに入力した数量を表示したいと思います。

どんな助けでも大歓迎です!
ありがとうございました!

4

1 に答える 1

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は、投稿から直接渡されます。

それが役に立てば幸い。

于 2013-03-05T22:11:56.730 に答える