Я пытаюсь извлечь данные из базы данных с помощью ajax и заполнить в форме, которая находится в режиме начальной загрузки

#php #jquery #mysql #ajax

#php #jquery #mysql #ajax

Вопрос:

Мне нужна помощь здесь, когда я нажимаю на кнопку редактирования на изображении ниже, я ожидаю увидеть данные, заполненные в форме в окне bootstrap modal. Я использую метод jquery ajax для заполнения данных в виде Моя домашняя страница

и редактировать модальное изображение введите описание изображения здесь

Вот код для домашней страницы

 	<?php require_once("connect.php"); ?>
	<?php require_once("fetch.php"); ?>
	<?php require_once("select.php"); ?>
	<?php require_once("process.php"); ?>
	<!DOCTYPE html>
	<html lang="en">
	  <head>
	    <meta charset="utf-8">
	    <meta http-equiv="X-UA-Compatible" content="IE=edge">
	    <meta name="viewport" content="width=device-width, initial-scale=1">
	    <title>Home</title>
	    <link href="css/bootstrap.min.css" rel="stylesheet">
	    <link rel="stylesheet" href="css/style.css">
		
	    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
	    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
	    <!--[if lt IE 9]>
	      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
	      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
	    <![endif]-->
	  </head>
	  <body>
	  	<div class="container">
	  		<div class="row">
	  			<div class="col-sm-8 col-sm-offset-2">
	  				<ul class="nav nav-pills">
	  					<li><a href="#">Home</a></li>
	  				</ul>
	  				<button type="button" class="btn btn-primary pull-right" data-toggle="modal" data-target="#myModal">Add</button>
	  				<table class="table" id="table">
	  					<tr>
	  						<th>S/N</th>
	  						<th>Name</th>
	  						<th>Email</th>
	  						<th>Description</th>
	  						<th>Edit</th>
	  						<th>View</th>
	  						<th>Delete</th>
	  					</tr>
	  					<?php
	  						$query = "SELECT * FROM contact";
	  						$runQuery = mysqli_query($connect, $query);
	  						if(!$runQuery){
	  							die("Could not run select query ".mysqli_error($connect));
	  						}
	  						$sn = 1;
	  						while($row = mysqli_fetch_assoc($runQuery)){  ?>	
						<tr>
							<td><?php echo $sn    ?></td>
							<td><?php echo $row["name"]  ?></td>
							<td><?php echo $row["email"]  ?></td>
							<td><?php echo $row["description"]  ?></td>
							<td>
								<button type="button" data-toggle="modal" data-target="#myModal"  class="btn btn-warning btn-sm edit-data" id="<?php echo $row['userid']  ?>">Edit</button>
							</td>
							<td>
								<button type="button" data-target="#viewModal" data-toggle="modal" class="btn btn-primary btn-sm view-data" id="<?php echo $row['userid']  ?>">View</button>
							</td>
							<td>
								<button type="button" class="btn btn-danger btn-sm del-data" id="<?php echo $row['userid']  ?>">Danger</button>
							</td>
						</tr>
	  					<?php } ?>
	  				</table>
	  				<!-- Modal -->
	  				<div id="myModal" class="modal fade" role="dialog">
	  				  <div class="modal-dialog">

	  				    <!-- Modal content-->
	  				    <div class="modal-content">
	  				      <div class="modal-header">
	  				        <button type="button" class="close" data-dismiss="modal">amp;times;</button>
	  				        <h4 class="modal-title">Add Data</h4>
	  				      </div>
	  				      <div class="modal-body">
	  				      	<div id="success" class="alert alert-success"></div>
	  				        <form class="form" method="POST" id="insertData">
	  				        	<div id="nameError" class="alert alert-danger"></div>
	  				        	<div class="form-group">
	  				        		<label>Name</label>
	  				        		<input type="text" class="form-control" name="name" id="name">
	  				        	</div>
	  				        	<div id="emailError" class="alert alert-danger"></div>
	  				        	<div class="form-group">
	  				        		<label>Email</label>
	  				        		<input type="text" class="form-control" name="email" id="email">
	  				        	</div>
	  				        	<input type="hidden" name="userid" id="contactUserId">
	  				        	<div id="descriptionError" class="alert alert-danger"></div>
	  				        	<div class="form-group">
	  				        		<label>Description</label>
	  				        		<textarea name="description" id="description" class="form-control"></textarea>
	  				        	</div>	  				
	  				        	<input type="submit" class="btn btn-primary" value="Add" name="add" id="add">
	  				        </form>
	  				      </div>
	  				      <div class="modal-footer">
	  				        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
	  				      </div>
	  				    </div>

	  				  </div>
	  				</div>
	  				<div id="viewModal" class="modal fade" role="dialog">
	  				  <div class="modal-dialog">

	  				    <!-- Modal content-->
	  				    <div class="modal-content">
	  				      <div class="modal-header">
	  				        <button type="button" class="close" data-dismiss="modal">amp;times;</button>
	  				        <h4 class="modal-title">View Data</h4>
	  				      </div>
	  				      <div class="modal-body" id="contactDetail">
	  				      </div>
	  				      <div class="modal-footer">
	  				        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
	  				      </div>
	  				    </div>

	  				  </div>
	  				</div>
	  				
	  			</div>
	  		</div>
	  	</div>
	  	
	    

	    <script src="js/jquery.js"></script>
	    <script src="js/bootstrap.min.js"></script>
	    <script src="js/myscript.js"></script>
	  </body>
	</html>  

Этот код предназначен для ввода и обновления данных в базе данных process.php

 <?php 
if(!empty($_POST)){

    $name = $_POST["name"];
    $email = $_POST["email"];
    $description = $_POST["description"];
    $userid = $_POST["userid"];

    if($userid != ''){
        $query = "UPDATE contact SET name = '$name', email='$email', description='$description' WHERE userid = $userid ";
        $runQuery = mysqli_query($connect, $query);
        if(!$runQuery){
            die("Could not run query ".mysqli_error($connect));
        }
    }else{
        $query = "INSERT INTO contact(name, email, description) VALUES ";
        $query .=" ('$name', '$email', '$description')";
        $runQuery = mysqli_query($connect, $query);
        if(!$runQuery){
            die("Could not run insert query ".mysqli_error($connect));
        }
    }
}
  

Этот код извлекает данные из базы данных

 <?php 
if(isset($_POST['userid'])){
    $editId = (int)$_POST['userid'];
    $query = "SELECT * FROM contact WHERE userid = $editId";
    $runQuery = mysqli_query($connect, $query);
    if(!$runQuery){
        die("Could not run query ".mysqli_error($connect));
    }
    $getData = mysqli_fetch_assoc($runQuery);
    echo json_encode($getData);

}
  

Это мой файл js

 $(document).ready(function(){

$("#insertData").submit(function(event){
    event.preventDefault();
    if($("#name").val() == ""){
        $("#nameError").css("display", "block").html("Name is required");
    }else if ($("#email").val() == "") {
        $("#emailError").css("display", "block").html("Email is required");
    }else if ($("#description").val() == "") {
        $("#descriptionError").css("display", "block").html("Description is required");
    }else{
        $.ajax({
            url: "index.php",
            method: "POST",
            data: $("#insertData").serialize(),
            success: function(data){
                $("#success").css("display", "block").html("Data added");
                $("#insertData")[0].reset();
            }
        });
    }

});

$(document).on("click", ".edit-data", function(){
    var contactId = $(this).attr("id");
    $.ajax({
        url:"index.php",
        method: "POST",
        data: {contactId:contactId},
        dataType: "json",
        success: function(data){
            $("#name").val(data.name);
            $("#email").val(data.email);
            $("#description").val(data.description);
            $("#contactUserId").val(data.userid);
            $("#add").val("Update");
            $("#myModal").modal("show");

        }

    });

});

$(document).on('click', '.view-data', function(){  
          var contactId = $(this).attr("id");  
          if(contactId != '')  
          {  
               $.ajax({  
                    url:"index.php",  
                    method:"POST",  
                    data:{contactId:contactId},  
                    success:function(data){  
                         $('#contactDetail').html(data);  
                         $('#viewModal').modal('show');  
                    }  
               });  
          }            
     });  
  

});

Комментарии:

1. Способ, которым вы пытались, очень грязный, ИМО. вам просто нужно это сделать. HTML / CSS в порядке. нажав кнопку редактирования, вы можете отобразить модальное окно и выполнить вызов ajax, который будет считывать базу данных, а затем возвращать данные. затем вы можете использовать jquery для установки каждого значения в соответствующее поле

2. Вы кодируете данные, но я нигде не смог найти их декодирование. При успешном выполнении ajax «data = JSON.parse (data);» поместите это в качестве первой строки, а затем попробуйте. Это может решить вашу проблему.

3. @Vishwa спасибо за ваши усилия, я буду признателен, если вы покажете мне фрагмент кода для этого

4. @Rishi большое вам спасибо за ответ, я пробовал, но все равно не сработало, я пытаюсь воспроизвести то, что я узнал из видео на YouTube youtube.com/watch?v=SpyVEbFQ6Bcamp;feature=youtu.be

5. можете ли вы также сократить свой код и вставить только ту часть, которая не работает.

Ответ №1:

Вы отправляете contactId и в вашем PHP вы ищете userid . Измените ваши данные на data: { userid: userid } .

 $(document).on("click", ".edit-data", function() {

    var userid = $(this).attr("id");

    $.ajax({
      url: "index.php",
      method: "POST",
      data: { userid: userid },
      dataType: "json",
      success: function(data) {
        $("#name").val(data.name);
        $("#email").val(data.email);
        $("#description").val(data.description);
        $("#contactUserId").val(data.userid);
        $("#add").val("Update");
        $("#myModal").modal("show");
      }
    });
});
  

Комментарии:

1. Спасибо за ваш ответ, это все еще не сработало, я думаю, проблема исходит от data: {ContactID: ContactID} Мне еще предстоит понять эту концепцию.

2. Да, измените data: {contactId : contactId} на data: { userid: userid } , как я сказал, потому что ваш PHP ищет $_POST['userid']) , и вы отправляете contactId

3. а также убедитесь, что index.php не содержит HTML-кода.