2013-11-12 3 views
0

У меня есть несколько раскрывающихся ящиков, и я пытаюсь сохранить выбранные значения в базе данных mysql и все одним нажатием кнопки. Количество выпадающих списков определяется пользователем. У меня есть функция jquery, которая генерирует нужное количество выпадающих меню для отображения. Как упоминалось ранее, я пытаюсь сохранить выбранные значения каждого раскрывающегося списка. Каждый со своей собственной строкой и уникальным идентификатором. Запрос, который у меня есть, вообще ничего не хранит. SITEХранить несколько выпадающих выбранных значений в mysql db

Jquery генерировать количество выпадающих

<script> 
    $(document).ready(function() { 

    $('select').change(function() { 
    var option = $(this).val(); 
    showFields(option); 
    return false; 
     }); 


     function showFields(option){ 

      var content = ''; 
      for (var i = 1; i <= option; i++){ 
       content += '<div id="course_'+i+'"><label>Course # '+i+'</label><br /><label>Course Name:</label> <select id="coursename_'+i+'" name="coursename_'+i+'"><option value="">--- Select ---</option>"' 
         <?php 


          $mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
          if (mysqli_connect_errno()) { 
           printf("Connect failed: %s\n", mysqli_connect_error()); 
           exit(); 
          } 
          $course_query = "SELECT course_id, course_name FROM courses "; 
            if($result = mysqli_query($mysqli, $course_query)) { 
             while ($idresult = mysqli_fetch_row($result)) 
             { 
              //dropdown values pulled from database 
              $course_id = $idresult[0]; 
              $course_name = $idresult[1]; 
              echo 'content += \'<option value="' . $course_id . '">' . $course_name . '</option>\';'; 
             } 
            } 
         ?> 
       '"';     

       content += '</select><br /><div><br />'; 

      } 
      $('#course_catalog').html(content); 

     } 
    }); 
</script> 

PHP Вставьте

<?php 
if(isset($_POST['submit'])){ 

     $coursename = $_POST["coursename"]; 
     $courseid = $_POST["courseid"]; 

     $db_con = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
     $db_insert4 = "INSERT INTO courses_bridge (course_name, course_id) VALUES ('$coursename', '$courseid')"; 
     mysqli_query($db_con, $db_insert4); 

} 

?> 

HTML

<form action="index.php" method="post"> 
    Courses being offered? 
     <select> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
     </select> 

    <div id="course_catalog"></div> 

    </br> 
    <input value="SAVE" type="submit"> 
</form> 
+0

В заявлении вставки вы пытались с помощью '"».' вместо '' 'вокруг переменных ..? –

+1

Во-первых, ваша форма никогда не будет отправляться, потому что вы используете 'if (isset ($ _ POST ['submit']))', и он будет искать кнопку с именем 'named' submit, которую ваш еще не назвал. –

+0

@ Fred-ii Wow очень глупая ошибка с моей стороны, я потратил впустую часы и часы, считая это –

ответ

1

Это должно сработать.

HTML:

<form action="" method="post"> 
    Courses being offered? 
    <select name="coursesOffered"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     </select> 

    <div id="course_catalog"></div> 

    </br> 
    <input value="SAVE" type="submit" name="submit"> 
</form> 

JS:

<script> 
    $(document).ready(function() { 

    $('select').change(function() { 
var option = $(this).val(); 
showFields(option); 
return false; 
    }); 


    function showFields(option){ 

     var content = ''; 
     for (var i = 1; i <= option; i++){ 
      content += '<div id="course_'+i+'"><label>Course # '+i+'</label><br /><label>Course Name:</label> <select id="coursename_'+i+'" name="coursename_'+i+'"><option value="">--- Select ---</option>"' 
        <?php 


         $mysqli = new mysqli('localhost', 'root', '123456', 'test'); 
         if (mysqli_connect_errno()) { 
          printf("Connect failed: %s\n", mysqli_connect_error()); 
          exit(); 
         } 
         $course_query = "SELECT id, tags FROM tags "; 
           if($result = mysqli_query($mysqli, $course_query)) { 
            while ($idresult = mysqli_fetch_row($result)) 
            { 
             //dropdown values pulled from database 
             $course_id = $idresult[0]; 
             $course_name = $idresult[1]; 
             echo 'content += \'<option value="' . $course_id . ':'.$course_name.'">' . $course_name . '</option>\';'; 
            } 
           } 
        ?> 
      '"';     

      content += '</select><br /><div><br />'; 

     } 
     $('#course_catalog').html(content); 

    } 
}); 
</script> 

PHP:

<?php 
if(isset($_POST['submit'])){ 
$coursesOffered=$_POST['coursesOffered']; 
$db_con = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
    for($i=1;$i<=$coursesOffered;$i++) 
    { 
    $courseVals=explode(':',$_POST["coursename_".$i]); 

    $db_insert4 = "INSERT INTO courses_bridge (course_name, course_id) VALUES ('".$courseVals[1]."', '".$courseVals[0]."')"; 
    mysqli_query($db_con, $db_insert4); 
    }  
} 

?> 
+0

Извините, что я в настоящее время проверяю ваш ответ –

+0

Thats ok. Пожалуйста, замените соединения db и проверьте его. – sudhakar

+0

Почти там спасибо. Я поместил 'print_r ($ _ POST);' и правильные значения публикуются, но ничего не отображается в базе данных. Означает ли порядок значений? У меня в моей базе данных 'course_id' до' course_name' –

1

сначала каждый выберите должны быть частью одного массива

'<select name="coursename['+i+']">...</select>'//no need for an underscore 

затем использовать цикл Еогеаспа в вашем PHP как $ _POST [ «coursename»] теперь массив

[coursename] => array(
[0] => 3 
[1] => 2 
) 

Вы можете пройти через этот массив легко и вставить два значения из ваших выбери

$db_con = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 

foreach($_POST['coursename'] as $key=>$val){ 
    $db_insert4 = "INSERT INTO courses_bridge (course_name, course_id) VALUES ('$key', '$val')"; 
    mysqli_query($db_con, $db_insert4); 
} 
+0

Хорошо, это имеет смысл сейчас. Но по-прежнему не вставляются значения. Я проверил соединение и все остальное, но никаких результатов. –

+0

Я оставил ваш $ db_con вне ответа. Это должно быть вне цикла. Просто повторите проверку, чтобы убедиться в этом. –

+0

Заглавие POST в методе = "POST".Кроме того, вы можете сделать print_r ($ _ POST), чтобы убедиться, что ваш массив не пуст в скрипте php. –

-1

хранящие несколько значений из списка в в базе данных с помощью сериализации и десериализации в PHP

HTML код:

    <option value="" selected>Any</option> 
        <option value="Hindu">Hindu</option> 
        <option value="Muslim-Shia">Muslim - Shia</option> 
        <option value="Muslim-Sunni">Muslim - Sunni</option> 
        <option value="Muslim-Others">Muslim - Others</option> 
        <option value="Christian-Catholic">Christian - Catholic</option> 
        <option value="Christian-Orthodox">Christian - Orthodox</option> 
        <option value="Christian-Protestant">Christian - Protestant</option> 
        <option value="Christian-Others">Christian - Others</option> 
        <option value="Sikh">Sikh</option> 
        </select> 

PHP код:

$religion=$_POST['religion']; 

if(isset($religion)){ 

//$rel=explode(':',$_POST["religion_".$i]); 
//$rel=implode(',',$religion); 
$serializedoptions1 = serialize($religion); 
$serializedoptions123 = unserialize($serializedoptions1); 
//print_r($serializedoptions123); 
foreach($religion as $key=>$val){ 
echo $val; 
} 

}

$qry1="insert into preference(id,email,toage,fromage,maritalstatus,toheight,fromheight,phc,religion,star,caste, mangalik,mothertongue,qualification,occupation,income,country,state,city,citizenship,food, smoking,drinking,partner_desc) 
VALUES('','" . $_SESSION['user'] . "','$toage','$fromage','$maritalstatus','$toheight',  '$fromheight','$phc','".implode(',',$serializedoptions123)."','$serializedoptions2','$serializedoptions','$mangalik','$serializedoptions3',   '$serializedoptions8','$serializedoptions9','$income','$serializedoptions4','$serializedoptions5','$serializedoptions6','$serializedoptions7','$food','$smoking','$drinking','$description')"; 

mysql_query($qry1) or die(mysql_error()); 
-1
<?php          
$pid=$row['pid']; 
//echo $pid;die; 
{ 
?>       
    <form name="my_form" id="my_form" method="POST">            
    <label>Pid</label> 
    <select id="pid" name="Pid"> 
    <option value="1" <?php if($pid==1) { ?> selected="selected" <?php } ?>> Factory</option> 
    <option value="2" <?php if($pid==2) { ?> selected="selected" <?php } ?> >Plant</option> 
    <option value="3" <?php if($pid==3) { ?> selected="selected" <?php } ?> >Sugar Firm</option> 
    <option value="4" <?php if($pid==4) { ?> selected="selected" <?php } ?> >Warehouse</option> 
    <option value="5" <?php if($pid==5) { ?> selected="selected" <?php } ?> >Machinery</option> 
    </select> 
+0

Подумайте о добавлении некоторых слов, чтобы описать, что делает этот код и почему он отвечает на вопрос. –

Смежные вопросы