2017-01-21 7 views
1

私はPHPとMySQLに触れてから5〜6年ほど経ちました。このすべて。チェックボックスを使用してMySqlデータベースを更新する

私はHTMLフォームを持っています。これは一連のチェックボックスです。クリックすると、データベースの相対エントリが0または1に設定されます。更新が完了すると、フォームに戻ります必要に応じて再度設定を変更することができます。

静的な量は静的な値になりますので、foreachループは必要ではないと思いますが、PHPを使用する方法については、私は何かしようとしていることにちょっとだけ対処しなければならないので、あまりにも多くの運がありません。

ご協力いただきますようお願い申し上げます。

FORM:

<?php 

require "config.php"; 

$db = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); 
mysql_select_db($db_name) or die(mysql_error()); 

$query = "SELECT * FROM roster"; 
$result = mysql_query($query); 

?> 
<form action="update.php" method="POST"> 
<?php 

     while($row = mysql_fetch_array($result)){ 
      $active = $row['active']; 
      $name = $row['name']; 
      $class = $row['class']; 
      $value = '0'; 

      if ($active == '1'){ 
       $value = '0'; 
      } else { 
       $value = '1'; 
      } 

      echo "<label class='switch'><input type='checkbox' name='".$class."' value='". $value."'"; 

      if($active == '1'){ 
       echo "checked='checked'"; 
      } 

      echo "/><div class='slider'></div><span>" . $name . "</span></label>"; 
     } 

mysql_close(); 
?> 
<input type="submit" class="submit" value="Update Active Roster"> 
</form> 

update.phpを(今のところ) - これは私が助けを必要とするところ、私は

<?php 
require "config.php"; 

$db = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); 
mysql_select_db($db_name) or die(mysql_error()); 

$checkbox = $_POST['activate']; 
for($i = 1; $i < sizeof($checkbox)+1; $i++){ 
    $query = "UPDATE roster SET active='".$checkbox[$i]."' WHERE id='".$i."'"; 
    echo "active='".$checkbox[$i]."' WHERE id='".$i."'"; 
    mysql_query($query) or die(mysql_error()); 
} 

?> 

MySQLデータベース

id class  name   active 
0 thisdude This Dude 0 
1 thatguy That Guy  0 
2 somechick Some Chick 0 
を考えます

答えて

-1

jQueryとAjaxを使用すると簡単に解決できます。

<input type='checkbox' name='".$class."' value='". $value."'"; class="mycheckbox" /> 

ここで、update_datase.phpファイルに更新クエリを含めることができるように、ユーザーが確認したらajax呼び出しを送信します。

$('.mycheckbox').click(function() { 
    alert($(this).attr("value")); //-->this will alert value that will be update to DB. 
     if(this.checked){ 
      $.ajax({ 
       type: "POST", 
       url: 'update_databse.php', 
       data: $(this).attr("value"), 
       success: function(data) { 
        alert('DB updated'); 
       }, 
       error: function() { 
        alert('it broke'); 
       }, 
       complete: function() { 
       } 
      }); 

      } 
     }); 

私はそれが役に立ちそうです。

+0

ページに戻る方法についての質問に答えるかもしれませんが、データベースをまったく更新していません。また、なぜinput(type = checkbox)を呼び出すことができるのか、なぜconsole.log()を呼び出すべきなのかを警告する理由について、それぞれのチェックボックスにクラスを追加しているのだろうかと思います。私の更新スクリプトは、私が上に示した最も注目すべきものです。 – Murphy1976

関連する問題