0

mysql データベースにさまざまなフィールド (名前、電子メール、コメント) を保持するフォームがあり、データが書き込まれますが、ページをリロードせずにデータを表示し、送信ボタンを押して新しいコメントを表示したいと考えています。.

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 関数またはその他のメソッドを作成するにはどうすればよいですか?

私はチュートリアルを見てきましたが、私は私を助けることができません!

4

3 に答える 3

1

JavaScript で Jquery を使用して、次のように AJAX 呼び出しを行います。

SQL 挿入を行う url.php という名前の php ページがあり、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());
于 2012-12-10T02:11:23.327 に答える
0

AJAX は、探しているものを達成するための最良の方法であり、コードは SQL インジェクションに対して非常に脆弱です。それを防ぐために、PDO 準備済みステートメントで宿題を行うことをお勧めします。こちらをご覧くださいAjaxを使用してDIV内のMySQLデータをリロードしてください

于 2012-12-10T02:08:47.727 に答える
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>
于 2012-12-10T02:10:08.820 に答える