2

我一直在寻找为什么这段代码不起作用。通过搜索具有相同问题的帖子多次调整代码。

问题:我的 php 文件似乎没有通过 POST 方法从简单的 HTML 表单(使用引导程序制作)中获取所需的值。我使用 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 代码。

不再收到未定义的索引错误。
var_dump($vnaam); 和 var_dump($anaam); 确实表明字符串被传递给了 php,但在那之后,当查询被触发时,事情似乎并没有被发送到数据库。

这可能是我的查询中的问题吗?

(已经感谢提示:给按钮一个值并使用 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);

?>
4

5 回答 5

1

编辑:

您需要给按钮一个,否则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'];    
    }
}
于 2013-04-23T00:59:25.837 回答
1

您可以通过使用 var_dump() 输出 $_POST 变量来进行调试,以查看是否有任何内容。

如果什么都没有,您确定您没有将浏览器重定向到您尝试查找值的页面吗?

如果设置了一些东西,那么 isset($_POST["send"]) 可能返回 false。

请使用 PDO 代替那些即将被弃用和坏的 mysql_ 函数。

于 2013-04-23T01:11:14.993 回答
1

你可以试试:

代替

<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);
    [...]
}

可点击按钮

<button type="submit" name="send" class="btn">Sign in</button>

要指定单击按钮时应该发生什么,您可以使用例如侧面 onclick 事件处理程序。分配给事件处理程序属性的值,然后可以编写 JavaScript 代码。

在其他方面,这些按钮对于它们的传统对应物来说是同样的事情:没有 JavaScript,它们完全没有功能

于 2013-04-23T01:33:12.883 回答
1

通过调整我在原始帖子中写的更新中看到的代码解决了未定义索引的问题。解决该问题后,由于主键的重复,查询拒绝触发并将数据放入数据库中。解决这个问题后,它就像一个魅力。这些信息是否足以帮助面临一些相同问题的人,还是我应该更彻底?

无论如何,非常感谢所有响应者!

于 2013-04-23T21:52:14.350 回答
0

尝试这个....

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();
}
于 2013-04-23T01:07:57.823 回答