1

我有这个表:(megaoverzicht.php)(我省略了它连接到数据库的部分)

echo "<table border='1'><tr><th>Formulier Id</th><th>Domeinnaam</th><th>Bedrijfsnaam</th><th>Datum</th><th>Periode</th><th>Subtotaal</th><th>Dealernaam</th><th>Offerte Maken</th></tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['formuliernummer'] . "</td>";
  echo "<td>" . $row['domeinnaam'] . "</td>";
  echo "<td>" . $row['bedrijfsnaam'] . "</td>";
  echo "<td>" . $row['datum'] . "</td>";
  echo "<td>" . $row['periode'] . "</td>";
  echo "<td> &euro; " . $row['subtotaal'] . "</td>";        
  echo "<td>" . $row['dealercontactpersoon'] . "</td>";     
  echo "<td><a href='offertemaken.php?id=" . $row->id . "'>Offerte Maken </a></td>";            
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

当用户单击 Offerte Maken 时,我想打开 offertemaken.php。它需要使用该行(id)中的数据打开表单。

这是来自(offteremaken.php)的代码(我省略了它连接到数据库的部分)

<?php
$id=$_POST['id'];
$data = 'SELECT * FROM cypg8_overzicht WHERE id="$id"';  
  $query = mysqli_query($con,$data) or die("Couldn't execute query. ". mysqli_error()); 
  $data2 = mysqli_fetch_array($query); 
?>
<form>
<div class="formcontainer" onmousemove="">
 <input type="text" name="datum" id="datum"                                                                     value="<?php echo $data2[datum]?>">
 <input type="text" name="formuliernummer" id="formuliernummer"                             value="<?php echo $data2[formuliernummer]?>">
 <input type="text" name="periode" id="periode"                                                             value="<?php echo $data2[periode]?>">
 <input type="text" name="domeinnaam" id="domeinnaam"                                                   value="<?php echo $data2[domeinnaam]?>">
 <input type="text" name="bedrijfsnaam" id="bedrijfsnaam"                                           value="<?php echo $data2[bedrijfsnaam]?>">
 <input type="text" name="dealercontactpersoon" id="dealercontactpersoon"           value="<?php echo $data2[dealercontactpersoon]?>">     
</div><!--/.formcontainer-->
</form>

我无法让它工作。我错过了一些我认为的东西!我在下面的代码中出错:

  echo "<td><a href='offertemaken.php?id=" . $row->id . "'>Offerte Maken </a></td>";

  $id=$_POST['id'];
  $data = 'SELECT * FROM cypg8_overzicht WHERE id="$id"'; 

我一直在看很多教程,但无法理解我做错了什么。这是一个列表,表明我不仅在问,而且实际上一直在自己寻找解决方案。

http://www.daniweb.com/web-development/php/threads/341921/-php-mysqli-update-database-using-id-syntax-help-requested- http://www.codeofaninja.com/2012 /01/phpmysqli-update-record.html

我看了很多,但我不想用一长串的链接来打扰你们所有人。我不允许,因为我的代表不够大!请不要对我投反对票!

问题 当用户点击 Offerte Maken 时,我想打开 offertemaken.php。它需要使用该行(id)中的数据打开表单吗?

编辑 1 接近最终结果 我发现(感谢 Cuba32)megaoverzicht.php 中的链接什么也没做,所以我更改了以下内容

  <a href='offertemaken.php?id=" . $row->id . "'>

  <a href='offertemaken.php?id=" . $row['id'] . "'>

现在它正在创建这些类型的链接:

某事/formulieren/overzichten/offeremaken.php?id=24

这是一件好事(我认为),但打开的表格是空白的,所以 offertemaken.php 对 id 没有任何作用???

编辑 2(感谢 Cube32)

从昨天开始,代码发生了很大变化。我相信 megaoverzicht.php 已经完成,它会按照编辑 1 中的描述发送链接。唯一的问题是在 offertemaken.php 中知道。下面我将输入代码。

 $con = mysqli_connect($server,$username,$password,$database);
 if (!$con){
die('Could not connect: ' . mysqli_error($con));
 }
 mysqli_select_db($con,$database);

 $id=$_GET['id'];
 if($data = mysqli_prepare($con, 'SELECT * FROM cypg8_overzicht WHERE id="?"'))
 {

 /* bind parameters for markers */
 mysqli_stmt_bind_param($data, "s", $id);

 /* execute query */
 mysqli_stmt_execute($data); 
 $data2 = mysqli_stmt_fetch($data);

但是这段代码给了我以下错误。

警告:mysqli_stmt_bind_param():变量数与第 31 行准备好的语句中的参数数不匹配。第 31 行:

 mysqli_stmt_bind_param($data, "s", $id);

我不知道如何解决这部分。我当然会在互联网上寻找解决方案,但如果有人知道,请发布。提前致谢。

编辑 3 <= 没有更多错误(感谢您的常识)

通过更改WHERE id="?"'WHERE id=?'i 不再有错误。但它仍然没有在输入字段中显示任何内容

编辑 4 <= 混淆并返回原始代码。

感谢所有让我到目前为止的人。但是我再也看不到森林了。我将回到原始代码并尝试解决该问题。所以现在的代码如下:

$id=$_GET['id'];
$data = 'SELECT * FROM cypg8_overzicht WHERE id="$id"';  
  $query = mysqli_query($con,$data) or die("Couldn't execute query. ". mysqli_error()); 
  $data2 = mysqli_fetch_array($query);
error_reporting(E_ALL); 

但这会在输入字段中出现以下错误:


注意:使用未定义的常量formuliernummer -在第37行的offertemaken.php中假定为“formuliernummer”

此错误适用于所有输入字段。

编辑 5 通过更改<?php echo $data2[formuliernummer]?>为解决了这个问题,<?php echo $data2['formuliernummer']?>但它仍然没有显示信息。

编辑 6 解决方案

我在下面的问题中添加了答案。只需寻找 HennySmafter 写的答案。

谢谢:

Cube32,SITDGNymall,你的常识。感谢大家帮助我找到解决方案。

4

2 回答 2

0

我花了一段时间,但我找到了答案。

megaoverzicht.php

echo "<td><a href='offertemaken.php?id=" . $row['id'] . "'>Offerte Maken </a></td>";

offertemaken.php

 // Check whether the value for id is transmitted
 if (isset($_GET['id'])) {

 // Put the value in a separate variable
 $id = $_GET['id'];

 // Query the database for the details of the chosen id
 $result = mysqli_query($con,"SELECT * FROM cypg8_overzicht WHERE id = $id");

 // Check result
 // This shows the actual query sent to MySQL, and the error. Useful for debugging.
 if (!$result) {
 $message = "Invalid query: " . mysqli_error($result) . "\n";
 $message .= "Whole query: " . $query;
 die($message);
 }

 // Use result
 // Attempting to print $result won't allow access to information in the resource
 // One of the mysql result functions must be used
 // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(),etc.
 while ($row = mysqli_fetch_assoc($result)) {

 echo $row['formuliernummer'] . "\n";
 echo $row['domeinnaam'] . "\n";
 echo $row['bedrijfsnaam'] . "\n";
 echo $row['datum'] . "\n";
 echo $row['periode'] . "\n";

 }
 } else {
 die("No valid id specified!");
 }

它没有显示输入框中的值,因为回显中没有输入框,但我想这些可以很容易地添加。

于 2013-09-03T13:01:54.790 回答
-1

参考编辑1:

您通过关联引用变量,但将 mysql 作为默认数组输出。代替

$data2 = mysqli_fetch_array($query); 

尝试这个:

$data2 = mysqli_fetch_assoc($query);

或者:

$data2 = mysqli_fetch_array($query, MYSQLI_ASSOC); 

另外,您是否打开了错误报告?如果是这样,那么如果数组不包含数据,您应该会收到某种警告。如果没有,一个好的测试是:

error_reporting(E_ALL);

这将警告您任何未设置变量或数组为空的地方。另一个好的测试是简单地回显您的查询,它会告诉您查询本身是否有任何错误(这可以节省一些时间)。如果您不打算采用 Prepared Statements 路线(强烈建议这样做),您可以简单地将 $data 回显到您的脚本中。

于 2013-09-02T17:53:20.170 回答