0

同じページにレコードを表示するためのコードを作成しましたが、機能しません。実際には、同じページにすべてのレコードを表形式で表示し、ページを更新せずに最近追加されたレコードを表示する必要があります。

ajaxinsert.php

<script type="text/javascript" src="../jquery.js"></script>

<script type="text/javascript" >
$(document).ready(function() {
    $("#insert").click(function() {
       var name  = $("#name").val();
       var rno  = $("#rno").val();
    var address = $("#address").val();

    //var dataString = "&name="+name"+&address="+address;
    $.ajax({
      type:'POST',
      data:{name: name,
            rno:rno,
            address:address},
      url:'demo_insert.php',
      success:function(data){
       if(data="inserted") {
          alert("Insertion Success");
        } else {
          alert("Not Inserted"); 
        }
     } 
   });  
    });
});
</script>
</head>

<body>
<form id="myform" action="demo_insert.php"> 
<label>Name: </label> <input id="name" type="text" />
<label>Rno: </label> <input id="rno" type="text" />
<label>Address: </label> <input id="address" type="text" />
<input name="Submit" type="button"  id="insert" value="Submit"/>
<!--<a id="insert" title="Insert Data" href="#">Push into mysql</a>-->
 <!-- For displaying a message -->

<div id="message"></div>
</form>
</body>

demo_insert.php

<?
    include('connection.php');
 //Pull data from home.php front-end page

 $name=mysql_escape_string($_POST['name']);
 $rno=mysql_escape_string($_POST['rno']);
 $address=mysql_escape_string($_POST['address']);
 //Insert Data into mysql
$query=mysql_query("INSERT INTO school(name,rno,address) VALUES('$name','$rno','$address')");

$dispquery=mysql_query("select * from school"); 
echo "<table border=1>";

   echo "<tr>";
   echo"<td>Srno</td>";
   echo "<td>Name</td>";
   echo"<td>Rno</td>";
   echo "<td>Address</td>";  
   echo"</tr>";
$i=1;
while($result=mysql_fetch_array($dispquery))
{
    echo "<tr>";
    echo "<td>" .$i."</td>";
    echo "<td>" .$result['name'] ."</td>";
     echo "<td>" .$result['rno'] ."</td>"; 
    echo "<td>" .$result['address'] ."</td>";   
    echo "</tr>";
    $i++;
}
   echo"</table>";
?>
4

4 に答える 4

1

まず、mysqli または PDO を使用してデータベースに接続してください。mysql メソッドは推奨されておらず、すぐに機能しなくなり、すべてのコードが壊れます。

第二に、完全ではありませんが、あなたはほとんどそこまで来ています。少し異なるアプローチを取ることをお勧めします。おそらく、jQuery と JSON を利用することをお勧めします。

最初のファイルを次のように変更します。

<script type="text/javascript" >
    $(document).ready(function() {
        $.ajax({
            type:'POST',
            data: {
                name: $("#name").val(),
                rno: $("#rno").val(),
                address: $("#address").val()
            },
            dataType: 'json',
            url:'demo_insert.php',
            success: function(data) {
                if(data.insert) {
                    alert("Insertion Success");
                    // All your content will be in data.output now which you can append wherever
                } else {
                    alert("Not Inserted"); 
                }
            } 
        }); 
    });
</script>

そして、あなたのphp自体、私はあなたのコードをPDOやmysqliに変更していないことに注意してください。しかし、あなたはそれを調べるべきです!

<?php
include('connection.php');
//Pull data from home.php front-end page

$response = new StdClass();

$name=mysql_escape_string($_POST['name']);
$rno=mysql_escape_string($_POST['rno']);
$address=mysql_escape_string($_POST['address']);

//Insert Data into mysql
$query=mysql_query("INSERT INTO school(name,rno,address) VALUES('$name','$rno','$address')");

// Add the insert to the response
$response->insert = !$query ? false : true;

// Only continue if its true
if ($response->insert) {
$dispquery=mysql_query("select * from school");
    $response->output = '';
    $response->output .= "
        <table border=1>
        <tr>
        <td>Srno</td>
        <td>Name</td>
        <td>Rno</td>
        <td>Address</td>
        </tr>";
    $i=1;

    while($result=mysql_fetch_array($dispquery)) {
        $response->output .= "
        <tr>
        <td>$i</td>
        <td>{$result['name']}</td>
        <td>{$result['rno']}</td>
        <td>{$result['address']}</td>
        </tr>";
        $i++;
    }
    $response->output .= "</table>";
}

header('Content-Type: application/json');
echo json_encode($response);

?>

于 2013-04-09T01:57:18.133 に答える
1

実際にコンテンツを DOM に追加する必要があります。.append()Ajax 呼び出しのコールバック関数では、や などの関数を使用してテーブルにデータを入力するために使用できるデータを取得します.html()。PHP スクリプトから返された Ajax 呼び出しを確認するにconsole.log(data)は、コールバックを挿入します。これを使用して、コンテンツを生成する方法を正確に把握できます。

また、PHPmysql拡張機能は非推奨です。mysqliまたはPDOに置き換えてください。

于 2013-04-09T01:45:59.490 に答える
0

あなたのifステートメントは、あなたが返すものと互換性がありません。あなたはhtmlテーブルで応答しており、成功のコールバックではそれを単純な変数として扱っています。

success:function(data){
       if(data="inserted") {
          alert("Insertion Success");
        } else {
          alert("Not Inserted"); 
        }
     } 

DOM に追加dataするか、DOM で何か他のことをしたい。あなたのphpに基づいて、どこかに追加したいと考えています。

于 2013-04-09T01:48:47.227 に答える
0

いくつかのこと、私が目にするいくつかの問題に対する一般化された答え

通常、php コーディングのある種の MVC 構造に従っている場合は、 Read クエリ ロジックを Update 、 Insert ロジックなどから分離する必要があります。

したがって、php で挿入を関数または別のページにカプセル化する場合、挿入が成功した場合はブール値を返し、成功関数で別の ajax getJson を介して読み取りテーブル クエリを呼び出すことができます。

PHP では、通常、クエリの結果セットを返す必要があります。 echo json_encode($results)

次に、javascript で、ajax が done() (ajax json の成功を処理するための最新の jquery メソッド) または success() になったら、 $.each を使用して結果セットを反復処理できます。

興味があれば、より多くのコード例を提供できます

于 2013-04-09T01:57:16.480 に答える