2011-09-13 3 views
0

목록 체크 박스의 항목을 데이터베이스로 파싱해야하는 애플리케이션이 있습니다. 현재 옵션을 반복하고 각 옵션 앞에 확인란을 배치하고 각 입력에 이름 예제 []를 작성하여 배열로 모으고 있습니다. 질문은 그 배열을 jquery에 보내고 php parse 파일로 보내어 데이터베이스에 쉼표로 구분 된 목록으로 기록되어 웹 사이트의 다른 필드로 그 목록을 불러올 수있는 방법입니다.체크 박스 배열을 데이터베이스로 파싱하는 문제

그래서 이것은 내가 무엇을 가지고 있지만,

$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

당신이했습니다 무엇을 우리에게 보여줄 수 : 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.