0

ループを使用して、更新するレコードのリストをエコーする更新フォームがあります。これには、テキスト フィールド 'Sentences' とチェックボックス 'Acceptable' が含まれます。私の foreach の取り組みが機能せず、データの列をむさぼり食っているので、助けを求める時が来ました。紳士淑女の皆さん、これはどうやって書きますか?

ご協力いただきありがとうございます。

<?php 
if( isset($_POST["Sentences_ID"]) ) {
    foreach($_POST['Sentences_ID'] as $key=>$value) {
        $updateSQL = sprintf("UPDATE Sentences SET Sentences=%s, Acceptable=%s WHERE   Sentences_ID=$value",
            GetSQLValueString($_POST['Sentences'], "text"),
            GetSQLValueString($_POST['Acceptable'], "text"),
            ($_POST['Sentences_ID']));

        mysql_select_db($database_name, $name);
        $Result1 = mysql_query($updateSQL, $name) or die(mysql_error());
    }
}
?>


<?php
do {
?>
Sentence:<input type="hidden" name="Sentences_ID[]" id="Sentences_ID[< ?php echo     $row_rsCounting['Sentences_Id'];?>]" value="<?php echo $row_rsCounting['Sentences_Id'];?>"   />

Acceptable:<input type="checkbox" name="Acceptable" id="Acceptable"     value="Acceptable"/></label> | 
<input type="text" name="Sentences" id="Sentences" value="< ?php echo     $row_rsCounting['Sentences'];?>" size="50" />
<?php
} while ($row_rsCounting = mysql_fetch_assoc($rsCounting));
?>
4

2 に答える 2

1

Acceptable および Sentences 入力も、name="Acceptable[]" のように配列である必要があります。そして、$_POST['Acceptable'][$key] のように PHP ループでそれらにアクセスします。ただし、複数の入力配列が同じ順序になるという保証はないと思うので、入力名に文 ID を使用することをお勧めします。すべての入力に対してそれを行います。

みたいなの...

<?php 
if( isset($_POST["Sentences_ID"]) ) {
    foreach($_POST['Sentences_ID'] as $key=>$value) {
        $updateSQL = sprintf("UPDATE Sentences SET Sentences=%s, Acceptable=%s WHERE   Sentences_ID=$value",
            GetSQLValueString($_POST['Sentences'][$key], "text"),
            GetSQLValueString($_POST['Acceptable'][$key], "text"),
            ($value));

        mysql_select_db($database_name, $name);
        $Result1 = mysql_query($updateSQL, $name) or die(mysql_error());
    }
}
?>


<?php
do {
?>
Sentence:<input type="hidden" name="Sentences_ID[< ?php echo  $row_rsCounting['Sentences_Id'];?>]" id="Sentences_ID[< ?php echo     $row_rsCounting['Sentences_Id'];?>]" value="<?php echo $row_rsCounting['Sentences_Id'];?>"   />

Acceptable:<input type="checkbox" name="Acceptable[< ?php echo     $row_rsCounting['Sentences_Id'];?>]" id="Acceptable" value="Acceptable"/></label> | 
<input type="text" name="Sentences[< ?php echo $row_rsCounting['Sentences_Id'];?>]" id="Sentences" value="< ?php echo $row_rsCounting['Sentences'];?>" size="50" />
<?php
} while ($row_rsCounting = mysql_fetch_assoc($rsCounting));
?>
于 2013-03-14T17:39:22.677 に答える
0

私の最初の提案は、少しデバッグすることです。

foreach($_POST['Sentences_ID'] as $key=>$value) {

置く

print_r($_POST['Sentences_ID']);die;

これにより、反復しようとしている変数の構造についての洞察が得られるはずです

于 2013-03-14T17:15:48.613 に答える