配列を使用してデータを更新しようとしています。根拠は、私は次のように見えるテーブルを有することである:名前の配列から値を取得してデータを更新する
idtest主キーであり、外部IDが別のテーブルの主キーと相関IDであるので、行の、おそらくデータ値idtest =|| idtest || testfieldA || testfieldB || testfieldC || externalId ||
1,2,3はすべて同じ外部IDを共有します。
私の目標は、その中のデータを更新することです。私が作成したフォーム要素は以下の通りである:復帰番号の初期値と、例えば、=名[E]名前でフォームタグをエコーします
$sql = "SELECT * FROM test.test WHERE externalId = $callID";
$r = mysqli_query($conn, $sql) or die(mysqli_error($conn));
for ($tcount =1; $rowTest = mysqli_fetch_assoc($rtest); $tcount++){
$idtest = $rowTicket['idtest'];
$testfieldA = $rowTicket['testfieldA'];
$testfieldB = $rowTicket['testfieldB'];
$testfieldC = $rowTicket['testfieldC'];
$externalid = $rowTicket['externalId'];
echo "<div>";
echo "<input type='hidden' name='idtest' value='$idtest'>";
echo "<input type='text' name='testfieldA[$tcount]' value='$testfieldA'>";
echo "<input type='number' step='0.01' min='0' name='testfieldB[$tcount]' value='$testfieldB'>";
echo "<input type='number' name='testfieldC[$tcount]' value='$testfieldC'>";
echo "<input type='hidden' name='externalId' value='$externalid'>";
echo "</div>";
}
。とにかく毎回ユニークなので、私はidtestの名前= idtest []もしません。
これはうまく動作し、updatetest.php?callid =#にリンクするonclick関数によって呼び出されたときに、データから私が望むものをエコーします。しかし、今私はコンテンツを更新したい。私が試しているシステムは、次のようにwhileループを呼び出すことです:
$e = 0;
$more = TRUE;
$idtest = $_POST['idtest'];
while($more){
if(isset($_POST['testfieldA'.$e]) && isset($_POST['testfieldB'.$e]) && isset($_POST['testfieldC'.$e])){
$test1 = $_POST['testfieldA'.$e];
$test1 = trim($test1);
$test2 = $_POST['testfieldB'.$e];
$test2 = trim($test2);
$test3 = $_POST['testfieldC'.$e];
$test3 = trim($test3);
$sql = "UPDATE test.test SET testfieldA = ?, testfieldB = ?, testfieldC= ? WHERE idtest = ?";
$stmt = mysqli_prepare($conn, $sql) or die(mysqli_error($conn));
mysqli_stmt_bind_param($stmt, "sssd", $test1, $test2, $test3, $idtest) or die(mysqli_error($conn));
mysqli_stmt_execute($stmt) or die(mysqli_error($conn));
mysqli_stmt_close($stmt);
} else {
$more = FALSE;
}
}
$e++;
しかし、これは実行されません。各名前をループして番号を取得し、名前が存在する限りデータを更新する効果的な方法は何ですか?言い訳によると、この質問が不明なように見える場合、私はそれを表現するのが難しいです。
'while'ループであなたの期待は何ですか:
その後、処理データは、このような何かを書くのか? '$ e'を初期化し、' while'ループの外側でインクリメントしますが、 '$ l'(未定義?)をチェックします。しかし、どのようなユーティリティに '$ e'、' $ l'、 'while'自体がありますか? '$ _POST ['testfield1'。$ e]' = '$ _POST ['testfield10']' – fusion3k
私はスペルミスです。私はテーブルの見出しを変更したので少し質問を編集する必要があります。その場合、moreが真である間は、isset($ _ POST ['testfieldA'。$ e])が設定されていないか存在していないとfalseがfalseになります。 $ eも毎回加算されますが、あなたが指摘したように、これには欠陥があるようです。私の質問を更新して情報を更新してみましょう – verdeletg