0

こんにちは、foreach 内に if 句を含める方法がわかりません。ユーザーが前のフォームに入力したデータをデータベースにコミットする前に表示できるページを作成しています。以前に入力したさまざまなサイズ、数量などのデータから選択することも、独自の新しいオプションを入力することもできます。今のところ、すべての選択肢が表示されるように設定していますが、それらはすべて 1 つの行にあり、セル内に積み重ねられています。私の問題は、新しい行を作成して値ごとに印刷する必要があること$sizeです$side

<tr>
    <td>
<?php
    if(isset($_POST['var1'])) {
        $var1 = $_POST['var1'];
        foreach($var1 as $value) {
            echo $value . "<br>";
        }
    }
    if(isset($_POST['new_var1'])) {
        $new_var1 = $_POST['new_var1'];
        foreach($new_var1 as $value) {
            echo $value . "<br>";
        }
    }
?>  
    </td>
    <td>
<?php
    if(isset($_POST['var2'])) {
        $var2 = $_POST['var2'];
        foreach($var2 as $value) {
            echo $value . "<br>";
        }
    }    
    if(isset($_POST['new_var2'])) {
        $new_var2 = $_POST['new_var2'];
        foreach($new_var2 as $value) {
            echo $side . "<br>";
        }
    }
?>
    </td>
</tr>

ifステートメントを a 内に挿入foreachして、どの選択肢が設定されているかを確認し、すべての選択肢を一度に循環させてから<tr></tr>タグを 内に含める方法はありますforeachか? 変数ifの各組み合わせをチェックし、セットの選択肢のみを含むステートメントを持つ複数のステートメントを作成することでそれを行うことを考えていましたが、それは非常に不格好で、必要なことを行うための回り道のようです。issetforeach

4

3 に答える 3

2

あなたの状況はよくわかりませんが、フォームを次のように変更することをお勧めします。

<input name="screws[0][size]" />
<input name="screws[0][side]" />

<input name="screws[1][size]" />
<input name="screws[1][side]" />

<input name="screws[2][size]" />
<input name="screws[2][side]" />

PHPがそれを取得したら、次のことができます。

<?php
$screws = @$_GET['screws'];
$newscrews = @$_GET['newscrews'];
?>
<table>
    <?php if($screws) foreach($screws as $screw): ?>
    <tr>
        <td><?php echo $screw['size'] ?></td>
        <td><?php echo $screw['side'] ?></td>
    </tr>
    <?php endforeach ?>
</table>
于 2012-06-06T20:40:41.640 に答える
0

既存のデータ形式を使用した別のソリューションを次に示します。

<?php
$sizes = @$_GET['screw_sizes'];
$sides = @$_GET['screw_sides'];
$screws = array()

if($sides && $sizes) {
    $n = min(count($sizes), count($sides))
    for ($i=0; $i < $n; $i++) {
        $screws[$i]['side'] = $sides[$i];
        $screws[$i]['size'] = $sizes[$i];
    }
}
?>

エコーアウトする方法は同じです:

<table>
    <?php foreach($screws as $screw): ?>
    <tr>
        <td><?php echo $screw['size'] ?></td>
        <td><?php echo $screw['side'] ?></td>
    </tr>
    <?php endforeach ?>
</table>
于 2012-06-08T16:05:02.603 に答える
0

はい、条件文はforeachステートメントで使用できます。通常はそれらを含めます。また、あなたのコードは XSS (クロス サイト スクリプティング) 攻撃に対して脆弱です。郵送で提出されたデータをサニタイズしたい場合があります。

質問を誤解していたら申し訳ありませんが、少し言葉遣いが..興味深いことに..

編集:if(isset($var1) && isset($var2) &&...etc)

于 2012-06-06T20:38:14.903 に答える