我有这张表:(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> € " . $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.php 的 37
此错误适用于所有输入字段。
编辑 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/