複数の mysql テーブルに基づいて動的に作成されるフォームがあります。このフォームは、処理のために外部ページに送信されます。
これは、私の $_POST データが常に異なることを意味します。投稿配列を抽出し、それを削除して、クエリを作成する必要があります。
Posted 配列の print_r は次のとおりです。
Array ( [userid] => 1 [modid1] => on [fid1] => on [fid3] => on [fid5] => on [fid7] => on [fid8] => on [modid3] => on )
ご覧のとおり、この userid、modid、および fid には 3 つの部分があります。問題は、必要な ID を渡すことができる唯一の方法は、そのフィールドに名前を付けることです。したがって、各 modid と fid はデータベース内の行です。その後の数字は更新が必要なIDで、もちろん「オン」はチェックボックスからです。
したがって、最終結果は次のようになります。
より良いアイデアを得るために、通常のクエリの書き方を次に示します
modid1 の場合: UPDATE テーブル SET var = var WHERE modid = 1
for fid1 UPDATE テーブル SET var = var WHERE fid = 1
この配列を生成したコードは次のとおりです。
<form id="ajaxsubmit" method="post" action="modules/users/updaterights.php">
<?php
$modsql = mysql_query("SELECT * FROM modules")or die("Mod failed " .mysql_error());
while($row = mysql_fetch_array($modsql))
{
echo '<div class="rights">';
echo "<ul>";
$userid = safe($_POST['user']);
$id = $row['id'];
$sql = mysql_query("SELECT * FROM modpermissions WHERE userid = '$userid' AND modid = '$id'")or die("Mod died " .mysql_error());
$sql2 = mysql_fetch_array($sql);
$modper = $sql2['modpermission'];
if($modper == 1){
echo '<li><input type="checkbox" name="modid'.$row["id"].'" checked> <b>'.$row["name"].'</b></li>';
}
if($modper == 0){
echo '<li><input type="checkbox" name="modid'.$row["id"].'"> <b>'.$row["name"].'</b></li>';
}
if($row['features'] == 1)
{
echo "<ul>";
$sql = mysql_query("SELECT * FROM features WHERE modid = '$id'")or die("Features loop failed " .mysql_error());
while($row2 = mysql_fetch_array($sql))
{
$userid2 = safe($_POST['user']);
$id2 = $row2['id'];
$sql3 = mysql_query("SELECT * FROM fpermissions WHERE userid = '$userid2' AND fid = '$id2'")or die("features died " .mysql_error());
$sql4 = mysql_fetch_array($sql3);
$fper = $sql4['fpermission'];
if($fper == 1){
echo '<li><input type="checkbox" name="fid'.$row2["id"].'" checked> '.$row2['feature'].'</li>';
}
if($fper == 0){
echo '<li><input type="checkbox" name="fid'.$row2["id"].'"> '.$row2['feature'].'</li>';
}
}
echo "</ul>";
}
echo "</ul>";
echo '</div>';
}
?>
<p><input type="submit" id="submit" value="Submit" class="button"> <input type="reset" class="reset" value="Reset Form"> </p>
</form>
それは私が知っている混乱です、私は学んでいます。誰かが私の質問を理解し、私が試みていることを達成するために正しい方向に私を向けることができれば、私は感謝します.