Вставка данных через ajax в базу данных mysql

Новостная рассылка:

<form id="form-search" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> <span><span class="style2">Enter you email here</span>:</span> <input name="email" type="email" id="email" required/> <input type="submit" value="subscribe" class="submit" onclick="return fun()" /> </form> <?php mysql_connect("localhost","",""); mysql_select_db(""); error_reporting(E_ALL && ~E_NOTICE); $email=$_POST['email']; $sql="INSERT INTO newsletter_email(email) VALUES ('$email')"; $result=mysql_query($sql); if($result){ echo "You have been successfully subscribed."; } if(!$sql) die(mysql_error()); mysql_close(); ?> 

Но я хочу вставить свой E-Mail в базу данных через Ajax. Я не хочу, чтобы моя страница перенаправлялась, потому что каждый раз, когда страница обновлялась, нулевое значение вставлялось в базу данных.

Я просто хочу, чтобы мой E-mail был вставлен в базу данных через Ajax, после чего почтовый ящик, т.е.

 <input name="email" type="email" id="email" required/> <input type="submit" value="subscribe" class="submit" onclick="return fun()" /> 

должны исчезнуть, и должна быть строка «вы были успешно подписаны» ..

Любой короткий код будет очень полезен .. спасибо u заранее 🙂

Solutions Collecting From Web of "Вставка данных через ajax в базу данных mysql"

Попробуй это:

  $(document).on('click','#save',function(e) { var data = $("#form-search").serialize(); $.ajax({ data: data, type: "post", url: "insertmail.php", success: function(data){ alert("Data Save: " + data); } }); }); 

и в insertmail.php:

 <?php if(isset($_REQUEST)) { mysql_connect("localhost","root",""); mysql_select_db("eciticket_db"); error_reporting(E_ALL && ~E_NOTICE); $email=$_POST['email']; $sql="INSERT INTO newsletter_email(email) VALUES ('$email')"; $result=mysql_query($sql); if($result){ echo "You have been successfully subscribed."; } } ?> 

Не используйте mysql_ он устарел.

another method:

На самом деле, если ваша проблема имеет значение null, вставленное в базу данных, тогда попробуйте это и здесь не нужно ajax.

 <?php if($_POST['email']!="") { mysql_connect("localhost","root",""); mysql_select_db("eciticket_db"); error_reporting(E_ALL && ~E_NOTICE); $email=$_POST['email']; $sql="INSERT INTO newsletter_email(email) VALUES ('$email')"; $result=mysql_query($sql); if($result){ //echo "You have been successfully subscribed."; setcookie("msg","You have been successfully subscribed.",time()+5,"/"); header("location:yourphppage.php"); } if(!$sql) die(mysql_error()); mysql_close(); } ?> <?php if(isset($_COOKIE['msg'])){?> <span><?php echo $_COOKIE['msg'];setcookie("msg","",time()-5,"/");?></span> <?php }?> <form id="form-search" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> <span><span class="style2">Enter you email here</span>:</span> <input name="email" type="email" id="email" required/> <input type="submit" value="subscribe" class="submit"/> </form> 

Ajax будет фрагментом javascript, который передает информацию в небольшой файл php, который делает то, что вы хотите. Поэтому на вашей странице вместо всего этого php вам нужен небольшой javascript, предпочтительный jquery:

 function fun() { $.get('\addEmail.php', {email : $(this).val()}, function(data) { //here you would write the "you ve been successfully subscribed" div }); } 

также вы должны будете:

 <input type="button" value="subscribe" class="submit" onclick="fun();" /> 

последний файл addEmail.php должен выглядеть примерно так:

 mysql_connect("localhost","root",""); mysql_select_db("eciticket_db"); error_reporting(E_ALL && ~E_NOTICE); $email=mysql_real_escape_string($_GET['email']); $sql="INSERT INTO newsletter_email(email) VALUES ('$email')"; $result=mysql_query($sql); if($result){ echo "You have been successfully subscribed."; } if(!$sql) die(mysql_error()); mysql_close(); 

Также сергей прав, вы должны использовать mysqli. Это еще не все, но достаточно, чтобы вы начали.

Зачем использовать обычную функцию ajax jquery. Почему бы не использовать плагин jquery ajax form, который отправляет данные формы с помощью ajax в ссылку действия формы.

Проверьте это здесь:

http://malsup.com/jquery/form/#getting-started

Он очень прост в использовании и поддерживает несколько форматов данных, включая json, html xml и т. Д. Проверьте пример, и вы найдете его очень простым в использовании.

спасибо

Доступные ответы привели к тому, что я ввел пустые значения в базу данных. Я исправил эту ошибку, заменив функцию serialize () следующим кодом.

 $(document).ready(function(){ // When click the button. $("#button").click(function() { // Assigning Variables to Form Fields var email = $("#email").val(); // Send the form data using the ajax method $.ajax({ data: "email=" + email, type: "post", url: "your_file.php", success: function(data){ alert("Data Save: " + data); } }); }); }); 

Ajax:

 $(document).on('click','#mv_secure_page',function(e) { var data = $("#m_form1").serialize(); $.ajax({ data: data, type: "post", url: "adapter.php", success: function(data){ alert("Data: " + data); } }); }); 

PHP-код:

 <?php /** * Created by PhpStorm. * User: Engg Amjad * Date: 11/9/16 * Time: 1:28 PM */ if(isset($_REQUEST)){ include_once('inc/system.php'); $full_name=$_POST['full_name']; $business_name=$_POST['business_name']; $email=$_POST['email']; $phone=$_POST['phone']; $message=$_POST['message']; $sql="INSERT INTO mars (f_n,b_n,em,p_n,msg) values('$full_name','$business_name','$email','$phone','$message') "; $sql_result=mysqli_query($con,$sql); if($sql_result){ echo "inserted successfully"; }else{ echo "Query failed".mysqli_error($con); } } ?>