我一直在寻找为什么这段代码不能工作。通过搜索具有相同问题的帖子多次调整代码。
问题:我的php文件似乎没有得到它需要的值从一个简单的HTML表单(使w. bootstrap)通过post方法。我使用issit函数检查是否已单击提交按钮,然后使用issit函数检查表单是否已完整填写。
请注意,我是相对较新的php。我希望我确实错过了什么,而不仅仅是一个简单的打字错误。
PHP代码(bootstrap/PHP/boeking.php)
<?php
//<!--debug-->
error_reporting(E_ALL);
ini_set('display_errors', '1');
//<!--connectie-->
mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("hota") or die(mysql_error());
//<!--boeking info verzenden-->
if(isset($_POST['send']))
{
if (isset($_POST['achternaam']))
{
$anaam = $_POST['achternaam'];
// do whatever here
}
if(isset($_POST['voornaam']))
{
$vnaam = $_POST['voornaam'];
}
}
$anaam = mysql_real_escape_string($anaam);
$vnaam = mysql_real_escape_string($vnaam);
$boek = "INSERT INTO klant (achternaam , voornaam) VALUES ('{$anaam}', '{$vnaam}')";
mysql_query($boek);
?>
HTML代码:<form id="newbook" method="POST" action="bootstrap/php/boeking.php" class="form-horizontal">
<legend>Nieuwe boeking</legend>
<div class="control-group">
<label class="control-label" for="voornaam">Voornaam</label>
<div class="controls">
<input type="text" name="voornaam" id="voornaam" placeholder="Voornaam">
</div>
</div>
<div class="control-group">
<label class="control-label" for="achternaam">Achternaam</label>
<div class="controls">
<input type="text" name="achternaam" id="achternaam" placeholder="Achternaam">
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" name="send" class="btn">Sign in</button>
</div>
</div>
</form>
提前感谢!
更新:
修改了我的php代码。
没有得到未定义的索引错误。
vnaam美元Var_dump ();var_dump (anaam美元);确实表明字符串被传递给PHP,但在那之后,当查询被触发时,事情似乎没有被发送到db。
这可能是我的查询中的问题吗?
(已经感谢提示:给按钮一个值并使用var_dump)
这是我的新代码:<?php
//<!--debug-->
error_reporting(E_ALL);
ini_set('display_errors', '1');
//<!--connectie-->
mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("hota") or die(mysql_error());
$anaam = '';
$vnaam = '';
if(!isset($_POST['send'])) {
}
else
{
if (isset($_POST['achternaam']))
{
$anaam = $_POST['achternaam'];
// do whatever here
}
if(isset($_POST['voornaam']))
{
$vnaam = $_POST['voornaam'];
}
var_dump($vnaam);
var_dump($anaam);
$anaam = mysql_real_escape_string($anaam);
$vnaam = mysql_real_escape_string($vnaam);
}
var_dump($vnaam);
$boek = "INSERT INTO klant (achternaam , voornaam) VALUES ('{$anaam}', '{$vnaam}')";
mysql_query($boek);
?>
你可以试试:
代替<button type="submit" name="send" class="btn">Sign in</button>
<input type="submit" name="send" value="Sign in" />
和
if(isset($_POST['send']))
{
if (isset($_POST['achternaam']))
{
$anaam = $_POST['achternaam'];
// do whatever here
}
if(isset($_POST['voornaam']))
{
$vnaam = $_POST['voornaam'];
}
}
$anaam = mysql_real_escape_string($anaam);
$vnaam = mysql_real_escape_string($vnaam);
[...]
if(!isset($_POST['send'])) {
echo " No valid Post ";
}
else
{
if (isset($_POST['achternaam']))
{
$anaam = $_POST['achternaam'];
// do whatever here
}
if(isset($_POST['voornaam']))
{
$vnaam = $_POST['voornaam'];
}
$anaam = mysql_real_escape_string($anaam);
$vnaam = mysql_real_escape_string($vnaam);
[...]
}
<<p> 点击按钮/strong> <button type="submit" name="send" class="btn">Sign in</button>
要指定单击按钮时应该发生什么,您可以使用例如侧面onclick事件处理程序。将值赋给事件处理程序属性,然后可以编写JavaScript代码。
在其他方面,这些按钮的功能与它们的传统对应项相同:如果没有JavaScript,它们完全没有功能。
您可以通过使用var_dump()输出$_POST变量来进行调试,以查看是否有任何内容。
如果没有,您确定您没有将浏览器重定向到您试图查找值的页面吗?
如果设置了某些内容,那么isset($_POST["send"])可能返回false。
编辑:
你需要给你的按钮一个值或isset
将返回false。
这是不清楚的,如果你仍然有未定义的索引错误,但如果你已经使它过去,尝试在if
语句外声明你的变量。
$anaam = '';
$vnaam = '';
if(isset($_POST['send']))
{
if (isset($_POST['achternaam']))
{
$anaam = $_POST['achternaam'];
// do whatever here
}
if(isset($_POST['voornaam']))
{
$vnaam = $_POST['voornaam'];
}
}
通过调整代码解决了未定义索引的问题,如我在原始帖子中所写的更新所示。在这个问题解决之后,由于PRIMARY KEY的重复,查询拒绝触发并将数据放入数据库中。在解决了这个问题之后,它就像魔法一样起作用了。这些信息是否足以帮助人们面对一些相同的问题,或者我是否应该更彻底?
无论如何,非常感谢所有响应者!
试试这个....
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
// Validate post input here
// Please use PDO or MySQLi at least. It's easier than it looks...
try {
$conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass, array(PDO::ATTR_PERSISTENT => true));
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(Exception $e) {
echo 'Error connecting to the database.';
}
$stmt = $conn->prepare('INSERT INTO klant (achternaam, voornaam) VALUES (:achternaam, :voornaam)');
$stmt->bindValue(':achternaam', $achternaam);
$stmt->bindValue(':voornaam', $voornaam);
$stmt->execute();
}