我正在使用JQuery mobile,它在加载外部文件时出现问题-总是显示"加载页面错误"消息。所以我不能在提交表单后使用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);
?>
我只是不知道如何将回显消息与我的表单关联起来。
您可以使用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');
?>
创建一个函数,该函数将把它插入数据库,并在成功的情况下返回一个标志-true,如果出现问题则返回false。然后根据该标志回显您的消息。