1
echo "<form method='POST' action=''><br>";
$query = mysql_query("set names 'utf8'");
$query = mysql_query("
  SELECT * FROM pages WHERE user_id = '$_SESSION[user_id]'
") or die(mysql_error());

while($pagek = mysql_fetch_array($query)) {
  $name = $pagek['page_name'];
  $pageid = $pagek['page_id'];
  echo '<input type="checkbox" name="page_ids[]" value="'.$pageid.'">'
      .$name
      ."<br>";
}

echo "<br>
      <input type='submit'
             value='Adatok frissítése'
             name ='adat'
             class='button small radius center black'
      >";
echo "</form>";

foreach($_POST['page_ids'] as $page){
  if ($page){
    mysql_query("
      UPDATE pages
      SET    page_value = '0'
      WHERE  user_id = '$_SESSION[user_id]'
    ");
    mysql_query("
      UPDATE pages
      SET    page_value = '1'
      WHERE  user_id = '$_SESSION[user_id]'
         AND page_id = '$page'
    ");
  }
}

私は、どのチェックボックスがチェックされている場合、この mysql 更新 1 と 0 よりも多くの場合が好きです。

このコードは良くありません。ここではサイトの更新のみで、残りはゼロです。いつでもサイトを選択できます

4

4 に答える 4

3

初め!

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

真剣に、あなたのコードにはSQL インジェクションと呼ばれる重大な脆弱性が含まれています。修正しないと、Web サイトは非常に簡単に侵害される可能性があります。


チェックされていないチェックボックスは送信されません。したがって、基本的に、サーバーは何も表示しません。

それを考慮に入れるには、デフォルトで無条件に 0 に設定し、チェックボックスがオンになっている場合は 1 に設定する必要があります。

はい、リクエストで 2 つのクエリを実行する必要がありますが、必要な結果を確実に得るにはそれが唯一の方法です。

于 2013-07-24T08:53:25.780 に答える
3

isset()チェックボックスがチェックされているかどうかを確認するために使用できます。

if(isset($_POST['checkbox']))
{
    $update = 1;
}
else
{
    $update = 0;
}

次に、クエリに $update を追加します。お役に立てれば。

于 2013-07-24T09:23:11.910 に答える
0

次のような $_SESSION 変数を試してください。

UPDATE pages SET page_value = '0' WHERE user_id = {$_SESSION['user_id']}
UPDATE pages SET page_value = '1' WHERE user_id = {$_SESSION['user_id']} AND page_id = '$page'  

セキュリティを強化するために使用mysql_real_escape_stringします。

$pages = mysql_real_escape_string(serialize($_POST['page_ids']));

foreach($pages as $page) {
   // action
}
于 2013-07-24T09:00:51.863 に答える