2016-08-05 5 views
1

Я пытаюсь вставить данные из формы в базу данных mysql. Место, где я думаю, проблема, где я использую кнопку в HTML, поэтому я скопировал все это. Любая помощь будет оценена!Вставить в базу данных (mysql) с помощью Ajax и PHP

Когда я нажал кнопку отправки, страница мигает, и в базу данных ничего не вставлено. Он должен отображать зеленую рамку, в которой запись была отправлена ​​на странице html.

Потому что некоторые люди более обеспокоены тем, что я строю систему аутентификации, а затем что не так. Это NOT система аутентификации, ее просто пример того, как вставлять в mysql db.

Index.html

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t <title>Bootstrap Example with Ajax</title> 
 
\t <meta charset="utf-8"> 
 
\t <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
\t <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
 
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
 
\t <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 
\t <script src="js/insert.js"></script> 
 
\t 
 
\t <style> 
 
\t .custom{ 
 
\t \t margin-left:200px; 
 
\t } 
 
\t </style> 
 
</head> 
 
<body> 
 

 
<div class="container"> 
 
\t <h2 class="text-center">Insert Data Using Ajax</h2> 
 
\t 
 
\t <br/> 
 
\t <p id="alert" style="display:none;" class="alert alert-success text-center"><i class="glyphicon glyphicon-ok"></i><span> id="show"</span></p> 
 
\t <br/> 
 
\t <hr/> 
 
\t <form class="form-horizontal" role="form" method="POST"> 
 
\t \t <div class="form-group"> 
 
\t \t \t <label class="col-sm-2 control-label">Name</label> 
 
\t \t \t \t <div class="col-sm-10"> 
 
\t \t \t \t \t <input class="form-control" id="name" type="text" placeholder="Enter you name"> 
 
\t \t \t \t </div> 
 
\t \t \t </div> 
 
\t \t \t <div class="form-group"> 
 
\t \t \t \t <label for="email" class="col-sm-2 control-label">Email</label> 
 
\t \t \t \t <div class="col-sm-10"> 
 
\t \t \t \t \t <input class="form-control" id="email" type="text" placeholder="Your Email..."> 
 
\t \t \t \t </div> 
 
\t \t \t </div> 
 
\t \t \t <fieldset > 
 
\t \t \t \t <div class="form-group"> 
 
\t \t \t \t \t <label for="password" class="col-sm-2 control-label">Password</label> 
 
\t \t \t \t \t <div class="col-sm-10"> 
 
\t \t \t \t \t <input class="form-control" id="password" type="text" placeholder="Your Password..."> 
 
\t \t \t \t </div> 
 
\t \t \t </div> 
 
\t \t \t <div class="form-group"> 
 
\t \t \t \t <label for="gender" class="col-sm-2 control-label">Gender</label> 
 
\t \t \t \t <div class="col-sm-10"> 
 
\t \t \t \t <select id="gender" class="form-control"> 
 
\t \t \t \t \t <option value="Male">Male</option> 
 
\t \t \t \t \t <option value="Female">Female</option> 
 
\t \t \t \t </select> 
 
\t \t \t \t </div> 
 
\t \t \t </div> 
 
\t \t <div class="form-group"> 
 
     <div class="col-sm-offset-2 col-sm-10"> 
 
     <button type="submit" class="btn btn-default">Submit</button> 
 
     </div> 
 
    </div> 
 
    </form> 
 
</div> 
 
</body> 
 
</html> 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t \t

insert.php

<?php 
 
\t //Create connection 
 
\t $connection = mysqli_connect('localhost','username','passwd','dbName'); 
 
\t 
 
\t if($_REQUEST['name']){ 
 
\t $name = $_REQUEST['name']; 
 
\t $email = $_REQUEST['email']; 
 
\t $password= $_REQUEST['password']; 
 
\t $gender = $_REQUEST['gender']; 
 
\t 
 
\t $q = "INSERT INTO user VALUES ('','$name', '$email', '$password', '$gender')"; 
 
\t 
 
\t $query = mysqli_query($connection,$q); 
 
\t if($query){ 
 
\t \t echo ' Data Inserted Successfully' 
 
     mysql_close($connection); 
 
\t \t } 
 
\t } 
 
?>

JS/insert.js

$(document).ready(function(e) { 
 
\t $('#submit').click(function(){ 
 
\t \t var name = $('#name').val(); 
 
\t \t var email = $('#email').val(); 
 
\t \t var password = $('#password').val(); 
 
\t \t var gender = $('#gender').val(); 
 
\t \t 
 
\t \t $ajax({ 
 
\t \t \t type:'POST', 
 
\t \t \t data:{name:name,email:email,password:password,gender:gender}, 
 
\t \t \t url:"insert.php", //php page URL where we post this data to save in databse 
 
\t \t \t success: function(result){ 
 
\t \t \t 
 
\t \t \t \t $('#alert').show(); 
 
\t \t \t \t 
 
\t \t \t \t $('#show').html(result); 
 
\t \t \t \t \t \t 
 
\t \t \t \t 
 
\t \t \t } 
 
\t \t }) 
 
\t }); 
 
});

+0

Что именно проблема? Что не работает? – WillardSolutions

+0

вы понимаете, что это никогда не закрыто 'echo 'Data Inserted Successfully'' и должно было вызвать ошибку анализа. Вы также не сказали нам, какие ошибки вы можете получить (это если вы их проверяете вообще), что это делает, эхо и т. Д.Итак, проверьте это и консоль. –

+0

Когда я нажимаю кнопку отправки, она просто мигает на странице, и в базе данных ничего нет. На странице должно отображаться зеленое поле вверху, показывающее добавленную запись. – Colin

ответ

2

В любом случае, этот конкретный код работает, позволяя вставлять его в базу данных, хотя есть еще некоторые проблемы, которые я не могу найти.

index.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <title>Bootstrap Example with Ajax</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    <script> 
     $(function() { 
     $('button').click(function() { 
      var name2 = $('#name').val(); 
      var email2 = $('#email').val(); 
      var password2 = $('#password').val(); 
      var gender2 = $('#gender').val(); 
      console.log('starting ajax'); 
      $.ajax({ 
      url: "./insert.php", 
      type: "post", 
      data: { name: name2, email: email2, password: password2, gender: gender2 }, 
      success: function (data) { 
       var dataParsed = JSON.parse(data); 
       console.log(dataParsed); 
      } 
      }); 

     }); 
     }); 

    </script> 

    <style> 
     .custom{ 
     margin-left:200px; 
     } 
    </style> 
    </head> 
    <body> 

    <div class="container"> 
     <h2 class="text-center">Insert Data Using Ajax</h2> 

     <form class="form-horizontal" > 
     <div class="form-group"> 
      <label class="col-sm-2 control-label">Name</label> 
      <div class="col-sm-10"> 
      <input class="form-control" name="name" id="name" type="text" placeholder="Enter you name"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label for="email" class="col-sm-2 control-label">Email</label> 
      <div class="col-sm-10"> 
      <input class="form-control" name="email" id="email" type="text" placeholder="Your Email..."> 
      </div> 
     </div> 
      <div class="form-group"> 
      <label for="password" class="col-sm-2 control-label">Password</label> 
      <div class="col-sm-10"> 
       <input class="form-control" name="password" id="password" type="text" placeholder="Your Password..."> 
      </div> 
      </div> 
      <div class="form-group"> 
      <label for="gender" class="col-sm-2 control-label">Gender</label> 
      <div class="col-sm-10"> 
       <select id="gender" class="form-control"> 
       <option value="Male">Male</option> 
       <option value="Female">Female</option> 
       </select> 
      </div> 
      </div> 
      <div class="form-group"> 
      <div class="col-sm-offset-2 col-sm-10"> 
       <button type="submit" class="btn btn-default">Submit</button> 
      </div> 
      </div> 
     </form> 
    </div> 
    </body> 
</html> 

insert.php

<?php 

    //Create connection 
    $connection = mysqli_connect('localhost', 'root', '', 'dbase'); 
    if($_POST['name']){ 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $password= $_POST['password']; 
     $gender = $_POST['gender']; 

     $q = "INSERT INTO user (name, email, password, gender) VALUES ('$name', '$email', '$password', '$gender')"; 

     $query = mysqli_query($connection, $q); 

     if($query){ 
      echo json_encode("Data Inserted Successfully"); 
      } 
     else { 
      echo json_encode('problem'); 
      } 
     } 

?> 
+0

Ill придется переписать зеленый всплывающее слово, сказав успешное! Но большое спасибо, что работает отлично! – Colin

0

Во-первых, обработчик событий JQuery, что вы прикрепляться к элементу с идентификатором «представить» никогда не будет стрелять, так как он не будет соответствовать какие-либо элементы в вашем HTML. Изменение HTML-то вроде этого:

<button type="submit" name="submit" id="submit"> Submit! </button>

Затем вам нужно изменить ваш синтаксис SQL немного. Ваш запрос:

$q = "INSERT INTO user VALUES ('','$name', '$email', '$password', '$gender')";

где вы говорите MySQL вставить эти значения в таблицу «пользователь», но не указать, какие столбцы для вставки в. Вам нужно что-то вроде этого:

$q = "INSERT INTO user (name, email, password) VALUES ('$name', '$email', '$password', '$gender')";

Я предполагаю, что пустая строка в вашем ЗНАЧЕНИЯ должен зарезервировать место для идентификатора вставки ... если у вас есть автоинкрементные включен в вашем таблице БД вам не нужно включать пустую строку. Это только начало исправить ваши проблемы, но если вы включите более подробную информацию о том, какие ошибки вы получаете, мы сможем помочь больше.

+0

Большое спасибо за подробное предложение, вы правы. У меня есть набор автоинкрементов. Я создал изменения в кнопке, но он все еще не вставляет в db (и в php). – Colin

+0

У вас есть ssh доступ к серверу, на котором работает база данных? Если это так, вы можете просмотреть журналы ошибок Apache, и они могут дать вам указание, почему ваша вставка не работает. Чтобы помочь вам, нам понадобится дополнительная информация о том, какие ошибки выбрасываются, и о среде, в которой работает ваш код. Если вы этого не сделали, установите error_reporting в -1 в вашем php-скрипте, чтобы получить более подробную информацию о том, что может привести к сбою вашего сценария: http://php.net/manual/en/function.error-reporting.php –

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