繁体   English   中英

下拉框,使用AJAX和PHP向MYSQL db OnChange插入值

[英]Dropdown box to insert value to MYSQL db OnChange using AJAX and PHP

更改下拉列表框时,我无法通过AJAX执行SQL,并且如果可能需要帮助。

背景信息我的任务是创建一个日程日历,以显示在健身房进行的所有课程,最多5课时每小时6(30)人,共14个小时。我不是专业人士,我可能有围绕此问题创建了一个复杂的方法,如果有请告诉我。

我设法创建了一个由30下拉框的14列组成的视图(5 x每小时6类,共14个小时)。 每个下拉框都会轮询数据库,如果有一个条目驻留,它将使用bookinguser的名称填充该框。 如果未找到预订,它将创建一个下拉列表框,用于轮询成员表并显示健身房的所有成员,当更改时,希望可以预定该人。-这是我当前的问题!

每个下拉框的名称对应于我打算传递给javascript函数并最终传递给SQL语句的时间,组和人数。 每个选项的值都与memberid相对应,该memberid也将被传递,并提供构造SQL所需的所有信息。

我到目前为止的代码

HTML-从php循环中生成的片段

    <div id="results">
<div id="07" class="column">07:00<br/>
<div id="group1">
<select name="07:00-1-0" onchange="getda(this.value,this)">
    <option value="none">---------------</option>
    <option value="2">John Doe</option>
    <option value="1">Joe Bloggs</option>
</select>
<select name="07:00-1-1" onchange="getda(this.value,this)">
    <option value="none">---------------</option>
    <option value="2">John Doe</option>
    <option value="1">Joe Bloggs</option>
</select>

PHP

<?php
$mysqli = new mysqli("localhost", "root", "", "gym");

/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
function hyphenate($str) {
return implode("-", str_split($str, 2));
}
function getmembers($time,$group,$iteration)
{
$date=$_GET["date"];

$date=hyphenate($date);
$date = explode('-', $date);
$new_date = $date[2].'-'.$date[1].'-'.$date[0];

$mysqli = new mysqli("localhost", "root", "", "gym");
if ($iteration == 0){
$result = $mysqli->query("select members.memberid, members.firstname, members.lastname from bookings inner join members on bookings.memberid = members.memberid where bookings.date = '$new_date' and time = '$time' and bookings.groupnumber = '$group' order by bookings.bookingid ASC limit 1");
}
else {$result = $mysqli->query("select members.memberid, members.firstname, members.lastname from bookings inner join members on bookings.memberid = members.memberid where bookings.date = '$new_date' and time = '$time' and bookings.groupnumber = '$group' order by bookings.bookingid ASC limit 1,$iteration");
}
$rowcount=mysqli_num_rows($result);
if ($rowcount==$iteration && $iteration == 0)
{
 $result = $mysqli->query("select firstname, lastname,memberid from members order by firstname ASC");


echo '<select name="'.$time.'-'.$group.'-'.$iteration.'" onchange="getda(this.value,this)"><option value="---------------">---------------</option>';

while ($row = $result->fetch_assoc()) {

              unset($firstname, $lastname);
              $firstname = $row['firstname'];
              $lastname = $row['lastname']; 
              $memberid = $row['memberid'];
              echo '<option value="'.$memberid.'">'.$firstname . ' ' . $lastname .'</option>';

}

echo "</select>";
}
else if ($rowcount>=$iteration){
echo '<select name="'.$time.'-'.$group.'-'.$iteration.'" onchange="getda(this.value,this)">';

while ($row = $result->fetch_assoc()) {

              unset($firstname, $lastname);
              $firstname = $row['firstname'];
              $lastname = $row['lastname']; 
              $memberid = $row['memberid'];
              echo '<option value="'.$memberid.'">'.$firstname . ' ' . $lastname .'</option><option value="cancel">Cancel</option>';
}
echo "</select>";
}
else{
     $result = $mysqli->query("select firstname, lastname, memberid from members order by firstname ASC");


echo '<select name="'.$time.'-'.$group.'-'.$iteration.'" onchange="getda(this.value,this)"><option value="---------------">---------------</option>';

while ($row = $result->fetch_assoc()) {

              unset($firstname, $lastname);
              $firstname = $row['firstname'];
              $lastname = $row['lastname']; 
              $memberid = $row['memberid'];
              echo '<option value="'.$memberid.'">'.$firstname . ' ' . $lastname .'</option>';

}

echo "</select>";

 }
}

 ?> 

JS

function getda(id,booking){
 $.ajax({
 type: 'post',
 url: 'samefile.php',
 data: {
   get_option:id
    },
 success: function (response) {
   document.getElementById("result").innerHTML=response; 
 }
   });
}

samefile.php

<?php 
if(isset($_POST['get_option']))
   {
inlude 'config/config.php';

$name=$_POST["get_option"];
echo "<SCRIPT>
alert('$name');
</SCRIPT>";

$sql = "insert into bookings (memberid,date,time,groupnumber) values (1,'2016-04-14','09:00',3)";
$query = mysqli_query($sql);



$mysqli->close();


  ?>

chrome中的控制台看起来不错(如下),但未插入任何记录,并且未显示php警报。 当我第一次测试查询是否正确执行时,我没有将任何变量传递给SQL

jquery.min.js:4 XHR完成加载:POST“ http://localhost/gym/samefile.php ” .send @ jquery.min.js:4n.extend.ajax @ jquery.min.js:4getda @ cal。 php?date = 140416:42onchange @ cal.php?date = 140416:36ListPicker._handleMouseUp @ about:空白:535

可能希望研究jQuery的.change() 我认为它将与下面的代码一起使用。 您也可以让它调用也具有ajax的函数

    $( ".class" ).change(function() { //can use #id here too
         $.ajax({
         type: 'post',
         url: 'samefile.php',
         data: {
             get_option:this.value
         },
         success: function (response) {
             document.getElementById("result").innerHTML=response; 
         }
         });
   });

我在samefile.php中看到三个问题- include拼写错误,多余的分号和缺少的右括号:

<?php 
if(isset($_POST['get_option']))
   {
      include 'config/config.php';

      $name = $_POST["get_option"];

      //this should be converted to parameterized queries
      $sql = "insert into bookings (memberid,date,time,groupnumber) values (1,'2016-04-14','09:00',3)";
      $query = mysqli_query($sql); 

      if(is_object($query)){
          echo 'successfully inserted';
      } else {
         echo 'insert failed';
      }

      $mysqli->close();

   } else {
       echo 'no data to process!';
   }

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM