2011-09-13 41 views
0

我有一個應用程序,我需要從列表複選框的項目,並將它們解析到我的數據庫。目前,我正在通過循環選項並在每個選項前放置一個複選框並在每個輸入中創建名稱示例[]來將它們收集到數組中。問題是我該如何將該數組發送到jquery,然後發送到php解析文件,以便它將作爲一個由逗號分隔的列表記錄在數據庫中,以便我可以將該列表調出到網站上的另一個字段中?解析複選框數組到數據庫的問題

所以這是我的,但它不工作

$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>'; 
} 

jQuery的...

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

你能告訴我們你已經什麼到目前爲止? –

回答

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的可以利用的形式序列化功能搶複選框:

<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> 

在PHP端只是調用破滅或加入功能:

$str = implode(",", $_POST["check"]); 
    $str = join(",", _POST["check"]; //is the same function.