2016-07-01 12 views
1

私は単純なブログプラットフォームを作成しようとしていますが、今のところ私のページにはそのリストがあります私のSQLデータベースと記事が公開されているかどうかを示す列もあります。問題は、これらのチェックボックスのすべてを、(チェックされた入力1の場合は0以外の)動作するブール値として書くことができないことです。PHPはチェックボックスを使ってデータベースの複数の値を変更するブール

<input type="checkbox" name="public[<?php echo $postID ?>]"> 

その後、あなたはこのPHPを使用することができます。私はそれがうまくいかないと思う部分は、それぞれがこのような名前にIDを持っているように、配列形式を使用して

<?php 
if (isset($_POST['submit'])) { 
    try { 
     $stmt = $db->prepare('SELECT postID FROM blog_posts') ; 
     $idArray = $stmt->fetch(); 

     for($i = $idArray; $i > 0; $i--){ 
      if(document.getElementById($i).checked){ 
       $public = 1; 
      } else { 
       $public = 0; 
      } 

      try { 
       $stmt = $db->prepare('UPDATE blog_posts SET public = :public WHERE postID = '$i) ; 
       $stmt->execute(array(
        ':public' => $public 
        )); 
      } 
     } 
    } 
?>The entire code can be found here on [Hastebin][1] Thanks in advance 
+1

'document.getElementById($ i)'それはどういう意味ですか?それはJavaScriptコードであり、PHPではありません! – FirstOne

+0

フォームを使用している場合は、おそらく隠された入力に真偽値を追加するjavascriptスクリプトを実行する必要があります。 – Jojo01

+0

ステートメントを準備してから、ステートメントを実行せずにフェッチしようとします。あなたの準備された文をうまく実行したなら、あなたのforループは '--'何を配列にしようとします。 PHP if条件にJavaScriptコードがあります。あなたはネストされたtryブロックを持っています。それらが私が見る主要な問題です。 –

答えて

0

名前あなたのpublicチェックボックスでありますあなたの更新を行うためのコード:フォームにはないので、もしあなたがSELECT、すべてのブログ記事をINGのしている

if (isset($_POST['submit'])) { 

    // You can use query here instead of prepare if you want all the blog posts 
    $stmt = $db->query('SELECT postID FROM blog_posts'); 

    // fetch the postID from each row in the query result 
    while ($id = $stmt->fetchColumn()) { 

     // set public based on the submitted value from your form 
     $public = empty($_POST['public'][$id]) ? 0 : 1; 

     // do the update 
     $stmt = $db->prepare('UPDATE blog_posts SET public = ? WHERE postID = ?') ; 
     $stmt->execute(array($public, $id); 
    } 
} 

注意すべてのブログ投稿を含めると、このコードはあなたのフォームにないすべてのものをpublic=0に設定します。あなたのフォームにすべてのブログ投稿を表示しない場合は、ステートメントにWHERE句を追加して、フォームにである行だけが含まれるようにする必要があります。

+0

あなたの助けをありがとう、今私は残っている問題(一種)残りの問題は、私は配列のインデックス1と他のどれもチェックボックスを編集することができないので、 //hastebin.com/xideferowe.xmlフルページコードと完全にロードされたページhttp://hastebin.com/obobituhot.dosはい、すべてのチェックボックスと記事がフォームにあります。 –

関連する問題