0

JQuery モバイルを使用していますが、外部ファイルのロードに問題があり、常に「ページのロード中にエラーが発生しました」というメッセージが表示されます。そのため、フォームを送信した後、PHP のヘッダーの場所を使用してページにリダイレクトすることはできません。

送信ボタンが押されたら、その下に送信済みメッセージをどのように表示しますか?

これはHTMLです:

<form method="post" id="update_beer" action="php/input_pint.php">
      <p><label for="name">Your name</label><input type="text" size="30" name="name" id="name" /></p>
      <p><label for="price">Price of a pint</label><input type="number" name="price" id="price" cols="5" /></p>
      <p><input type="submit" value="Update" name="commit" id="message_submit"/> or 
      <a class="close" href="/">Cancel</a></p>
</form>

これは、すべての入力をデータベースに送信する PHP です。

<?php
//input price_pint.php
$con = mysql_connect("hostname", "databasename", "password");
if (!$con) {
die("Could not connect." . mysql_error());
}
mysql_select_db("databasename", $con);

$sql="INSERT INTO price_pints (name, price)
VALUES
('$_POST[name]','$_POST[price]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}

mysql_close($con);
?>

エコー メッセージをフォームに関連付ける方法がわかりません。

4

2 に答える 2

3

ajax を使用できます。また、入力を sql エスケープする必要がありFoster's Sam Smith'sます。そうしないと、ect のような飲み物がクエリを壊してしまいます。

<script>
$("#update_beer").submit(function(e){
    $.ajax({
        type: "POST",
        url: "php/input_pint.php",
        data: $("#update_beer").serialize(),
        success: function(data){
            if(data=='true'){
                alert('Beer Added');
            }
        }
    });
    e.preventDefault();
});
</script>

また、PDO を使用して、データベースに接続して挿入するより良い方法があります。

<?php
try {
    $db = new PDO("mysql:host=127.0.0.1;dbname=databasename", 'dbuser', 'dbpassword');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch (Exception $e){
    die('Cannot connect to mySQL server.');
}

if($_SERVER['REQUEST_METHOD']=='POST'){
    if(!empty($_POST['name']) && !empty($_POST['price'])){
        $sql = 'INSERT into price_pints (`name`,`price`) VALUES (:name,:price)';
        $query = $db->prepare($sql);
        $query->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
        $query->bindParam(':price', $_POST['price'], PDO::PARAM_STR);
        $query->execute();
        die('true');
    }
}
die('false');
?>
于 2013-02-15T13:33:57.563 に答える
1

それをデータベースに挿入し、成功した場合はtrue、何かが摩耗した場合はfalseのようなフラグを返す関数を作成します。次に、フラグに従ってメッセージをエコーし​​ます。

于 2013-02-15T13:34:42.870 に答える