2012-12-10 45 views
0

我有一個表單,我在mysql數據庫中保存了各種字段(名稱,電子郵件,註釋),數據被寫入,但我想顯示數據而沒有重新加載頁面,按提交按鈕並查看新評論。 。如何插入SQL值而無需重新加載?(jQuery + PHP)

HTML:

<form action="" method="post" id="form"> 
    <fieldset> 
     <input type="hidden" name="noticia_id" value="<?php echo $id; ?>"><br> 
     <p><label>NOMBRE *</label> 
     <input type="text" id="nombre" name="usuario"></p> 
     <p><label for="email">EMAIL (No se publicará) *</label> 
     <input type="text" id="email" name="email"></p> 
     <p><label for="comment">COMENTARIO</label> 
     <textarea name="comentario" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p> 
     <p><input type="submit" name="submit" id="submit" tabindex="5" value="Enviar " /></p> 

    </fieldset> 
</form> 

PHP:

<?php 
if ($_POST) { 
    //conectamos a la base 
    $connect=mysql_connect("localhost","root",""); 
    //Seleccionamos la base 
    mysql_select_db("mostra",$connect); 
    $id=$_POST['noticia_id']; 
    $nick=$_POST['usuario']; 
    $email=$_POST['email']; 
    $comentario=$_POST['comentario']; 
    $query = "INSERT INTO comentarios (usuario,email,comentario,noticia_id, fecha) VALUES('$nick','$email','$comentario','$id', NOW())"; 
    mysql_query($query) or die(mysql_error()); 

    $query = "UPDATE noticias SET num_comentarios= num_comentarios+1 where id_noticia='".$id."'"; 
    mysql_query($query) or die(mysql_error()); 
} 

?> 

如何創建一個jQuery函數或其他方法,而無需重新加載頁面中插入這些數據?

我看過教程,但我不能幫助我!

+1

你需要使用AJAX。 – ewein

+0

http://api.jquery.com/jQuery.ajax/ –

+1

您還需要防範SQL注入。我建議參數化查詢。 – BAF

回答

1

在你的JavaScript來看看使用jQuery作出AJAX調用這樣:

假設你有一個PHP頁面調用url.php這是做SQL插入和要傳遞一個參數調用PAR1做到以下幾點:

$.ajax({ 
    url: "ver.php?par1=" + parValue, 
    type: 'POST', 
    success: function(result) { 
     // use the result as you wish in your html here 
}}); 

然後在ver.php做:

$par1 = $_POST['par1']; 

好試試這個代碼:

HTML代碼:

<fieldset> 
    <input type="hidden" name="noticia_id" value="<?php echo $id; ?>"><br> 
    <p><label>NOMBRE *</label> 
    <input type="text" id="nombre" name="usuario"></p> 
    <p><label for="email">EMAIL (No se publicará) *</label> 
    <input type="text" id="email" name="email"></p> 
    <p><label for="comment">COMENTARIO</label> 
    <textarea name="comentario" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p> 
    <p><input type="button" name="submit" id="submit" onclick="send_data()" tabindex="5" value="Enviar " /></p> 

</fieldset> 

Javascript Code: 

function send_data() 
{ 
    var usuario = $('#nombre').val(); 
    var email = $('#email').val(); 
    var commentario = $('#comment').val(); 

    $.ajax({ 
    url: "ver.php?usuario=" + usuario + "&email=" + email + "&comentario=" + commentario, 
    type: 'POST', 
    success: function(result) { 
     // use the result as you wish in your html here 
    }}); 

} 

PHP Code: 

$connect=mysql_connect("localhost","root",""); 
//Seleccionamos la base 
mysql_select_db("mostra",$connect); 
$nick=$_POST['usuario']; 
$email=$_POST['email']; 
$comentario=$_POST['comentario']; 
$query = "INSERT INTO comentarios (usuario,email,comentario,noticia_id, fecha) VALUES('$nick','$email','$comentario','$id', NOW())"; 
mysql_query($query) or die(mysql_error()); 

$query = "UPDATE noticias SET num_comentarios= num_comentarios+1 where id_noticia='".$id."'"; 
mysql_query($query) or die(mysql_error()); 
+0

您使用GET在ajax中並在php中發佈 –

+0

是,該文件被稱爲「ver.php」 – berti

+0

什麼是$ par1 = $ _POST ['par1'] ;?我不明白:S。已粘貼在腳本內並且不起作用:S – berti

0

AJAX是完成你所尋找的最好的方法也是你的代碼非常容易受到SQL注入的影響我建議你在PDO準備的語句上做功課,以幫助防範它。就拿這裏Reload MySQL data inside a DIV using Ajax

+0

id有興趣找出爲什麼這個投下了票 – Yamaha32088

+0

對不起,但我想我沒有任何負面反饋 – berti

0
<script type="text/javascript"> 
    $(function(){ 
     $('form').submit(function(){ 
      $.ajax({ 
       type:'POST', 
       data:{'usuario':$(this).find("input[name=usuario]").val(),'email':$(this).find("input[name=email]").val()}, 
       success:function(returnData){ 
        console.log(returnData) 
       } 
      }) 
      return false; 
     }) 
    }) 
</script> 
+1

-1,代碼轉儲不是答案,你還沒有解釋這個代碼是什麼,它是如何工作的這是爲什麼寫的,或者它如何幫助解決問題。 – Charles

+0

你好:)謝謝,我只是測試你的代碼,但不工作。我已經粘貼腳本,並且不起作用:( – berti

相關問題