2012-12-13 3 views
-2

У меня есть модальное окно с формой, и оно должно отправлять данные поля в базу данных, а не закрывать модальную вдову, а затем отображать «Вы были RSVP'd», прежде чем погасить модальное окно.Данные, не вставляемые в базу данных

2 вещи:

1) На представить модальное окно закрывается ?! Он должен оставаться открытым 2) Данные не вставляя в базу данных ..

Модальные окна HTML

<form id="rsvp-yes" action="#" method="post" name="rsvp-yes"> 
<label for="email">Your E-mail</label> 
    <input id="email" class="txt" type="email" name="email" /> 
    <label for="location">Choose your location</label> 
    <select name="city" id="city"> 
    <option value="None Selected" selected>Select</option> 
    <option value="Perth">Perth</option> 
    <option value="Brisbane">Brisbane</option> 
    <option value="Sydney">Sydney</option> 
    <option value="Melbourne">Melbourne</option> 
    </select> 

    <button id="rsvp">RSVP</button></form></div> 

JAVASCRIPT

$(document).ready(function() { 
     $(".modalbox").fancybox(); 
     $("#rsvp").submit(function() { return false; }); 

     function validateEmail(email) { 
     var reg = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
     return reg.test(email); 
    } 

     $("#rsvp").on("click", function(){ 
      var emailval = $("#email").val(); 
      var city  = $("#city").val(); 
      var mailvalid = validateEmail(emailval); 

      if(mailvalid == false) { 
       $("#email").addClass("error"); 
      } 
      else if(mailvalid == true){ 
       $("#email").removeClass("error"); 
      } 

      if(mailvalid == true) { 
       //&& msglen >= 4 
       // if both validate we attempt to send the e-mail 
       // first we hide the submit btn so the user doesnt click twice 
       $("#rsvp").replaceWith("<em>RSVP'ing you...</em>"); 

       $.ajax({ 
        type: 'POST', 
        url: 'rsvp-yes.php', 
        data: $("#rsvp-yes").serialize(), 
        success: function(data) { 
         if(data == "true") { 
          $("#rsvp-yes").fadeOut("fast", function(){ 
           $(this).before("<p><strong>You have been RSVP'd</strong></p>"); 
           setTimeout("$.fancybox.close()", 1000); 
          }); 
         } 
        } 
       }); 

PHP

<?php 
$email = $_POST['email']; 
$city = $_POST['city']; 

mysql_connect(myhost,myuser,mypass) or die("Could not connect: " . 
mysql_error()); 
mysql_query("USE mydbname"); 

mysql_query("INSERT INTO rsvp-yes (ID, email, city) 
VALUES ('NULL', '".$email"', '".$city"')"); 

?> 
+1

Первое соединение проверка устанавливается или нет? –

+0

Для этого требуется базовая отладка. Является ли кнопка отправки заменена? Вызывается ли запрос ajax? Что возвращает запрос ajax? – hakre

+0

Как я могу их отладить? И проверьте, что соединение установлено? – Dave

ответ

-1

Вы должны использовать функцию mysql_real_escape_string() для предотвращения внедрения SQL. Это также предотвращает ошибку при вставке данных из-за цитаты или двойной кавычки.

$email = $_POST['email']; 
$email=mysql_real_escape_string($email); 

$city = $_POST['city']; 
$city=mysql_real_escape_string($city); 

Надежда ваша ID столбец является первичным ключом и также автоматически увеличивается поле. Поэтому вы не должны включать ID в свой SQL-запрос.

mysql_query("INSERT INTO rsvp-yes (email, city) 
VALUES ('$email', '$city')"); 
+0

Ну, вы могли бы сказать, что вы должны использовать подготовленные заявления (параметризованные запросы), однако это все не ответ на вопрос. И, пожалуйста, не распространяйте устаревшие функции, такие как 'mysql_real_escape_string'. – hakre

+1

Это не проблема mysql_real_escape_string() –

+0

Упс. Должно было ускользнуть от них. – Dave

0

Я думаю, что ваш ID является autoincreament в базе данных. Таким образом, вместо

mysql_query("INSERT INTO rsvp-yes (ID, email, city) VALUES ('NULL', '".$email"', '".$city"')"); 

использование

mysql_query("INSERT INTO rsvp-yes (ID, email, city) VALUES ('', '".$email"', '".$city"')"); 

удалить NULL

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