php - mysqli 动态生成的表,带有打开包含行中所有值的表单的链接

标签 php mysql mysqli

我有这张表:(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) 中的数据打开表单。

这是来自 (offertemaken.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'] . "'>

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

something/formulieren/overzichten/offertemaken.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=?'我不再有错误。但它仍然没有在输入字段中显示任何内容

编辑 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 - 在 offertemaken.php37

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

编辑 5 通过更改 <?php echo $data2[formuliernummer]?> 修复此问题至 <?php echo $data2['formuliernummer']?>但仍然没有显示信息。

编辑 6 解决方案

我添加了下面问题的答案。只需寻找 HennySmafter 撰写的答案即可。

感谢:

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

最佳答案

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

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!");
 }

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

关于php - mysqli 动态生成的表,带有打开包含行中所有值的表单的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18576194/

相关文章:

php - CSS - PHP header 包含文件不适合设备大小/达到整个宽度

php - mysqli_stmt_bind_param 用于搜索

php - 创建排名基础系统并更新排名

php - 用于评论和回复 PHP 应用程序的递归函数

php - Move_Uploaded_File 导致 500 错误并且不会移动文件

php - 如何将重试的数据库数据传递到另一个页面?

php - Laravel Eloquent PHP 如何获取 MySQL 表中以唯一列值作为键的所有行

php - 在一个php脚本中使用多个数据库

php - MySQLI 扩展和原生错误处理

php - 将日期列表添加到数据库