【问题标题】:Submit data from loop Ajax从循环 Ajax 提交数据
【发布时间】:2017-04-11 08:39:28
【问题描述】:

只有第一个按钮将数据发送到我的数据库。我还没有想出如何解决这个问题......它不需要很复杂,但我想不通。请帮帮我,我已经找了好几天了。

index.php

<!DOCTYPE html>
<html>  
      <head> 
      <meta charset="utf-8">
           <title>AJAX</title>  
           <link rel="stylesheet" href="css/bootstrap.mini.css" />  
           <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  
           <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
           <script src="js/jquery.js"></script>  
           <script src="js/jquery.nice-select.js"></script>
           <link href="css/nice-select.css" rel="stylesheet" type="text/css" />
           <link rel="stylesheet" type="text/css" href="style.css">
      </head>

      <body>  
           <div class="container"><br/>       
                <div class="table-responsive">   
                     <div id="live_data"></div>                 
                </div>  
           </div>  

      </body>  
 </html> 
  
<script> 


$(document).ready(function(){ 



$('select').niceSelect();

      function fetch_data()  
      {  
           
		   $.ajax({  
                url:"selecto.php",  
                method:"POST",  
                success:function(data){  
                     $('#live_data').html(data);  
                }  
           });  
      }  
      fetch_data();
	  

	   $(document).on('click', '.btn_add', function(){
           var client = $('#client').text();  
           var contact = $('#contact').text();  
		   var note = $('#note').text();
		   var status = $('#status').val(); 
		   var id_table = $('#id_table').text();
		   
		   
           $.ajax({  
                url:"insert.php",  
                method:"POST",  
                data:{client:client, contact:contact, note:note, status:status, id_table:id_table},  
                dataType:"text",  
                success:function(data)  
                {  
			
                     alert(data);  
                     fetch_data();  
					 
                }  
           })  
      });
	   
      function edit_data(id, text, column_name)  
      {  
           $.ajax({  
                url:"edit.php",  
                method:"POST",  
                data:{id:id, text:text, column_name:column_name},  
                dataType:"text",  
                success:function(data){  
                     //alert(data);  
                }  
           });  
      }  
      $(document).on('keyup', '.client', function(){  
           var id = $(this).data("id1");  
           var client = $(this).text();  
           edit_data(id, client, "client");  
      });  
      $(document).on('keyup', '.contact', function(){  
           var id = $(this).data("id2");  
           var contact = $(this).text();  
           edit_data(id,contact, "contact");  
      });
	  $(document).on('keyup', '.note', function(){  
           var id = $(this).data("id3");  
           var note = $(this).text();  
           edit_data(id,note, "note");  
      }); 
	  $(document).on('change', '.status', function(){  
           var id = $(this).data("id4");  
           var status = $(this).val();  
           edit_data(id,status, "status"); 
		   console.log(status);   
      }); 
	  
      $(document).on('click', '.btn_delete', function(){  
           var id=$(this).data("id5");  
           if(confirm("Etes-vous sur de vouloir supprimer cette ligne ?"))  
           {  
                $.ajax({  
                     url:"delete.php",  
                     method:"POST",  
                     data:{id:id},  
                     dataType:"text",  
                     success:function(data){  
                          //alert(data);  
                          fetch_data();  
                     }  
                });  
           }  
      });  
 });


 </script>

selecto.php

<?php
// Connexion à la base de donnée
try{
  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  $db = new PDO('mysql:host=db413029631.db.1and1.com;dbname=db413029631', 'dbo413029631', 'N5frH7yg', $pdo_options);
  $db->exec("SET NAMES utf8");
}
catch(Exception $e) {
	die($e->getMessage());
}
?>
 
<?php
$reqTables = $db->query("SELECT id, name FROM PulseTables"); // Récupération de la liste des tables
$tableResult = $reqTables->fetchAll(PDO::FETCH_ASSOC); // On stock la liste des tables dans $tables
$reqTables->closeCursor();

$reqTasks = $db->query("SELECT id, id_table, client, contact, note, status FROM PulseTasks ORDER BY id DESC"); // Récupération de la liste des tâches
$result = $reqTasks->fetchAll(PDO::FETCH_ASSOC); // On stock la liste des tâches dans $tasks
$reqTasks->closeCursor();

?>


<?php foreach( $tableResult as $table){ ?>


<h2><?= $table["name"] ?></h2>
    <div class="table-responsive">
        <table class="table table-bordered">
            <tr>
                <th style="display:none;"></th>	
                <th width="5%" contenteditable>id</th>  
                <th width="30%" contenteditable>client</th>  
                <th width="30%" contenteditable>contact</th>
                <th width="15%" contenteditable>devis</th> 
                <th width="15%" contenteditable>statut</th>
                <th width="5%"></th>  
            </tr>
            
			
      
            <tr>         
              	<td></td> 
                <td style="display:none;" id="id_table"><?= $table["id"] ?></td>
                <td id="client" class="clientadd" contenteditable="true">+ Nouveau Projet</td>  
                <td id="contact" contenteditable></td>
                <td id="note" contenteditable></td> 
                <td id="status">
                <select name="devis" id="status" class="devis">
                <option value="OK">VALIDER</option>
                <option value="EN ATTENTE">EN ATTENTE</option>
                <option value="VALIDER">VALIDER</option>
                <option value="ANNULE">ANNULE</option>
                <option value="PARTIEL">PARTIEL</option>
                </select> 
                </td> 
                <td><button type="button" name="btn_add" id="btn_add" class="btn btn-xs btn-success btn_add" value="btn_add">+</button></td>  
            </tr>  
        
           
<?php 
foreach( $result as $row ){ 
if( $table['id'] !== $row['id_table'] ){
continue;
}	
?>   
        
            <tr>
                <td style="display:none;"></td> 
              
                <td width="5%"><?= $row["id"] ?></td>  
                <td width="30" class="client" data-id1="<?= $row["id"] ?>" contenteditable><span class="tabGreen"></span><?= $row["client"] ?></td>  
                <td width="30%" class="contact" data-id2="<?= $row["id"] ?>" contenteditable><?= $row["contact"] ?></td>
                <td class="note" data-id3="<?= $row["id"] ?>" contenteditable ><?= $row["note"] ?></td> 
                
                <td width="15%" class="status">
                <select data-id4="<?= $row["id"] ?>" name="status" id="status" class="status">
                <option><?= $row["status"] ?></option>
                <option class="status" value="EN ATTENTE">EN ATTENTE</option>
                <option class="status" value="VALIDER">VALIDER</option>
                <option class="status" value="ANNULE">ANNULE</option>
                <option class="status" value="PARTIEL">PARTIEL</option>
                </select> 
              </td>
              <td width="5%"><button type="button" name="delete_btn" data-id5="<?= $row["id"] ?>" class="btn btn-xs btn-danger btn_delete">x</button></td>  
            </tr>
            
<?php }  ?>       

         
        </table>
        </div>
        
        <br/>
        
<?php } ?>

插入.php

<?php
header ('Content-type: text/html; charset=UTF-8');
?>

<?php  
 $connect = mysqli_connect("db413029631.db.1and1.com", "dbo413029631", "N5frH7yg", "db413029631");
 $connect->set_charset('utf8');
	
		 $sql = "INSERT INTO PulseTasks (client, contact, note, status, id_table) VALUES('".$_POST["client"]."', '".$_POST["contact"]."', '".$_POST["note"]."', '".$_POST["status"]."', '".$_POST["id_table"]."')";  
		 if(mysqli_query($connect, $sql))  
		 {  
			  echo 'Data Inserted';  
		 }else{
			 echo 'Probleme';  
		 }

  ?>  

【问题讨论】:

  • 您在每一行中使用相同的 ID。 $("#client") 将始终选择第一个。改用类,$(this).closest("tr").find(".client") 选择与按钮在同一行中的输入。
  • $(document).on('click', '.btn_add', function(){ var client = $(this).closest("tr").find(".client_add") .text(); var contact = $('.contact_add').text(); var note = $('.note_add').text(); var status = $('.status_add').val(); var id_table = $('.id_table_add').text();
  • 你在调用ajax,因为ajax是异步的,不能执行多个异步调用。您必须在第二个 ajax 调用上设置 async = false 。您可以查看此链接stackoverflow.com/questions/1639555/…
  • 哈,没关系!谢谢!

标签: php jquery ajax send


【解决方案1】:

谢谢!

$(document).on('click', '.btn_add', function(){
var client = $(this).closest(".formulaire").find('.client_add').text();  
var contact = $(this).closest(".formulaire").find('.contact_add').text();  
var note = $(this).closest(".formulaire").find('.note_add').text();
var status = $(this).closest(".formulaire").find('.status_add').val(); 
var id_table = $(this).closest(".formulaire").find('.id_table_add').text();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多