0

少し紛らわしい状況になりましたが、ユーザーがデータベースに情報を入力できるフォームがWebページにあります...

<form id="insertbill">
     Total <input type="text" id="total" name="total" /><br />
     Bill name<input type="text" id="bill-name" name="bill-name" /><br />
     bill descriptiion <input type="text" id="bill-description" name="bill-description" /><br />
     bill colour<input type="text" id="bill-colour" name="bill-colour" />
     <input type="button" value="submit" onClick="insertBill();" />
</form>  

このフォームは、AJAXを介して私のphpに情報を送信し、PHPはそれを私のDBに入力します

AJAX

function insertBill()
{
    $.post('insert_bill.php', $('#insertbill').serialize(), 
        function(data) {
        $('#bills').append(data);
    });
};

PHP

   $uid = $_SESSION['oauth_id'];       
   $bill = mysql_real_escape_string($_POST['total']);
   $billname = mysql_real_escape_string($_POST['bill-name']);
   $billdescription = mysql_real_escape_string($_POST['bill-description']);
   $billcolour  = mysql_real_escape_string($_POST['bill-colour']);

    #Insert Record
    $query = mysql_query("INSERT INTO `outgoings` (user_id, bill, bill_name, bill_description, bill_colour ) VALUES ('$uid', '$bill', '$billname', '$billdescription', '$billcolour')") or die(mysql_error());

これが完了すると、データはWebページに返され、ユーザーがレコードを更新できる別のフォームが表示されます...

返されたデータ/フォーム

Print "<tr>"; 
Print "<th>total:</th> <td>".$bill . "</td> ";
Print "<th>bill name:</th> <td>".$$billname . "</td> ";
Print "<th>bill deposit:</th> <td>".$billdescription . "</td> "; 
Print "<th>colour:</th> <td>". $billcolour . " </td></tr>"; 
echo "<th>edit:</th> <td>

<form id='bill-upd'>
        <input type='hidden' value='". $billname."' name='billid' id='billid''>
        Total <input type='text' id='total' name='total' /><br />
        Bill name<input type='text' id='bill-name' name='bill-name' /><br />
        bill descriptiion <input type='text' id='bill-description' name='bill-description' /><br />
        bill colour<input type='text' id='bill-colour' name='bill-colour' />
        <input type='button' value='submit' onClick='updateBill();' />
    </form>   
</td>"; 

私の問題は、返されたフォームが更新されないことです。これは、挿入されたレコードのIDを何らかの方法で見つけて、フォームに配置して返す必要があるためです...これがあまり混乱しないことを願っています、しかし、ページをリロードせずにこれを行うためのより良い方法はありますか?

4

2 に答える 2

0

insert_bill.php のビュー ページに含めることができる内容は次のとおりです。

<script> 
   var json=<? 
       $arr=array($bill, $billname, $billdescription, $billcolour);
       echo json_encode($arr); ?>;

     $('tr td:nth-child(0)').html(json[0]);
     $('tr td:nth-child(1)').html(json[1]);
     $('tr td:nth-child(2)').html(json[2]);
     $('tr td:nth-child(3)').html(json[3]);

</script>

未解決の問題の1つは、データベースから返されると言う「id」だと思います。もう少し説明していただけますか?insert_bill.php ページに複数のフォームがありますか? とにかく、それを$id配列に入れ、それをフィードしhtml()て、他の変数で行ったように機能させることができます。

于 2012-05-04T22:25:02.730 に答える
0

データベースからデータを返してから変更する必要があります。必要なIDだけが必要な場合は想像できます。

PHP では echo mysql_last_insert_id(); // したがって、最後に挿入された ID を取得し、JS に「戻る」 JS では、関数データ内でエコーを戻り値として取得し、ID を変更してから $("#billid").val(data)

お役に立てば幸いです

于 2012-05-04T22:30:45.870 に答える