2011-09-13 14 views
0

私は、リストチェックボックスの項目をデータベースに解析する必要があるアプリケーションがあります。現在、私はオプションをループし、各オプションの前にチェックボックスを置いて各入力に名前の例[]を付けることで、それらを配列に集めています。問題は、その配列をjqueryに、次にphpの解析ファイルにどのように送ることができるのかです。その結果、カンマで区切られたリストとしてデータベースに記録され、そのリストをWebサイトの別のフィールドに呼び出すことができます。データベースへのチェックボックス配列の解析に関する問題

だからこれは私が持っているものですが、それはjqueryの

$chart_query = mysql_query("SELECT id, title FROM songs WHERE team_name='$team_name' ORDER BY title ASC"); 
while($row = mysql_fetch_array($chart_query)){ 
    $song_id = $row['id']; 
    $song_title = $row['title']; 

    $song_chart .= '<div align="left" class="song_links"><input class="allcharts" type="checkbox" name="charts[]" value="'.$song_title.'" />&ndash;<a href="http://' . $dyn_www . '/template.php?id='.$song_id.'" style="color:white; text-decoration:none; margin-left:5px;">'.$song_title.'</a></div>'; 
} 

が動作していない...

function post_song_list(){ 
    var allcharts = $(".allcharts").each().val(); 
    var team_name = $("#team_name").val(); 
    var list_date = $("#list_date").val(); 

    if (allcharts = ""){ 
     alert("You must select at least one song"); 
    }else{ 
     $.post("scripts/post_song_list.php", {allcharts: allcharts, team_name: team_name, list_date: list_date}, function(data){ 
      $(".allcharts").val(""); 
      $("#team_name").val("#team_name"); 
      $("#list_date").val(""); 
     }); 
    } 
} 

PHPのパース...

if(isset($_POST['team_name']) != '' && isset($_POST['list_date']) != '' && isset($_POST['charts']) != ''){ 
    if(isset($_POST['team_name'])){ 
     $team_name = $_POST['team_name']; 
      $team_name = stripslashes($team_name); 
      $team_name = strip_tags($team_name); 
      $team_name = mysql_real_escape_string($team_name); 
      $team_name = str_replace("'", "&#39;", $team_name); 
    } 
    $sql = mysql_query("SELECT admin_id FROM myTeams WHERE team_name=$team_name"); 
    while($row = mysql_fetch_assoc($sql)){ 
     $admin_id=$row['admin_id']; 
     if(isset($_SESSION['idx']) != $admin_id) { 
      $msgToUser = '<br /><br /><font color="#FF0000">Only Team Administrators can do that!</font><p><a href="register.php">Join Here</a></p>'; 
      include_once '../msgToUser.php'; 
      exit(); 
     } 
    } 
    if(isset($_POST['list_date'])) 
    $list_date = $_POST['list_date']; 
      $list_date = stripslashes($list_date); 
      $list_date = strip_tags($list_date); 
      $list_date = mysql_real_escape_string($list_date); 
      $list_date = str_replace("'", "&#39;", $list_date); 
      $list_date = "".$list_date.""; 
    } 

    if(isset($_POST['charts']) != ""){ 
    $checkboxes = isset($_POST['charts']) ? (array)$_POST['charts'] : array(); 
    $charts = implode('<br />', $checkboxes); 
     $charts = stripslashes($charts); 
     $charts = strip_tags($charts); 
     $charts = mysql_real_escape_string($charts); 
     $charts = str_replace("'", "&#39;", $charts); 

    $sql_charts = mysql_query("INSERT INTO list (date, team_name, song_list) VALUES ('$list_date','$team_name','$charts')") or die (mysql_error()); 
    echo "<span>List Uploaded</span>"; 
} 

ことができる人私が間違っているところを教えてください。解析ファイルには行きません。

+2

はあなたがたもの私たちを見ることができます:PHP側で

<form class="checkbox-form"> <input type="checkbox" class="chk" name="check[]" value="val1" /> <input type="checkbox" class="chk" name="check[]" value="val2" /> <input type="checkbox" class="chk" name="check[]" value="val3" /> <input type="button" class="send" value="Send" /> </form> <script type="text/javascript"> function checkbox_callback(){ $(".chk").each(function(index, domElem){ //here you grab each checkbox element and do anything you want //(i think you want to do some validation here) }); } //To send to php you can use ajax $(".send").click(function(){ //here you can call the checkbox function callback valid = checkbox_callback(); if(valid){ $.ajax({ type: "POST", url: "yourphp.php", data: $(".checkbox-form").serialize() }); } }); </script> 

だけで崩壊するか、参加機能を呼び出しますこれまでのところ? –

答えて

2

通常のフォーム送信をしてjqueryの一部を覆うが、それを想定していない:

HTML:

<input type="checkbox" name="cb[]" value="1" /> 
<input type="checkbox" name="cb[]" value="2" /> 
etc... 

PHP:あなたがしている方法に応じて、当然の

<?php 

$checkboxes = isset($_POST['cb']) ? (array)$_POST['cb'] : array(); 

$string = implode(',', $checkboxes); 
$ready_for_sql = mysql_real_escape_string($string); 

$sql = "INSERT INTO yourtable (checkboxfield) VALUES ('$ready_for_sql')"; 
$result = mysql_query($sql) or die(mysql_error()); 

、これらの値を使用する場合は、コンマ区切りのリストとして保存することはできません。そのリスト内の個々の値を参照する必要がある場合は、子テーブルを使用して各値を個別に格納する方がよいでしょう。

0

まあ、フォームシリアライズ機能使用してチェックボックスをつかむことができますjqueryの:

$str = implode(",", $_POST["check"]); 
    $str = join(",", _POST["check"]; //is the same function. 
関連する問題