我正在用HTML构建一个表,其行使用数据库中的内容通过PHP填充。我正在努力解决的问题是我需要返回并引用每个吐出的变量,但我不知道该怎么做。
方案
以下是代码示例:
<table>
<thead>
<th>Supplier</th>
<?php
$supplierQuery = "SELECT * FROM allparts WHERE partNumber = '$q'" ;
$supplierResult = mysqli_query($con, $supplierQuery);
while ($row = mysqli_fetch_array($supplierResult)) {
$supplier = $row['supplier'];
}
$popupQuery = "SELECT * FROM $supplier" ;
$popupResult = mysqli_query($con, $popupQuery);
?>
<tbody>
<tr>
<td><a href="#" onclick="popup('popUpDiv')"><?= $supplier ?></td>
</tr>
</tbody>
<?php
}
?>
</table>
假设当$supplierResult
运行时,它会生成一个如下所示的表:
Supplier
a
b
c
d
从<a href="#" onclick="popup('popUpDiv')">
代码触发的弹出窗口应该向用户提供信息,但现在,无论我点击哪个供应商,它都会向我提供有关d
的信息而且我不确定为什么会这样做。
以下是用户点击超链接时运行的代码:
<!-- Start pop-up -->
<div id="blanket" style="display:none;"></div>
<div id="popUpDiv" style="display:none;"">
<a href="#"" onclick="popup('popUpDiv')"><img src="/img/close.png"></a>
<h2 style="text-align: center;">Supplier</h2>
<table>
<thead>
<th style="text-align: center;">NAME</th>
<th style="text-align: center;">ADDRESS</th>
</thead>
<?php
while ($row = mysqli_fetch_array($popupResult)) {
$popupName = $row['supplierName'];
$popupAddress = $row['supplierAddress'];
?>
<tbody>
<tr>
<td style="text-align: center;"><?= $popupName ?></td>
<td style="text-align: center;"><?= $popupAddress ?></td>
</tr>
</tbody>
<?php
}
?>
</table>
</div>
<!-- End popup section -->
显然,每次有人点击供应商时,$supplier
的值都是d
,但我无法弄清楚为什么会这样。
问题:
如何修改我的php查询或弹出查询的位置,以确保每个弹出窗口都在正确的供应商上提供数据?
是否可以将弹出查询修改为数组,以便4行中的每一行实际上都是唯一值,而不是每一行都填充d
?
更新:popup.js
function toggle(div_id) {
var el = document.getElementById(div_id);
if ( el.style.display == 'none' ) { el.style.display = 'block';}
else {el.style.display = 'none';}
}
function blanket_size(popUpDivVar) {
if (typeof window.innerWidth != 'undefined') {
viewportheight = window.innerHeight;
} else {
viewportheight = document.documentElement.clientHeight;
}
if ((viewportheight > document.body.parentNode.scrollHeight) && (viewportheight > document.body.parentNode.clientHeight)) {
blanket_height = viewportheight;
} else {
if (document.body.parentNode.clientHeight > document.body.parentNode.scrollHeight) {
blanket_height = document.body.parentNode.clientHeight;
} else {
blanket_height = document.body.parentNode.scrollHeight;
}
}
var blanket = document.getElementById('blanket');
blanket.style.height = blanket_height + 'px';
var popUpDiv = document.getElementById(popUpDivVar);
popUpDiv_height=blanket_height/2-150;//150 is half popup's height
popUpDiv.style.top = popUpDiv_height + 'px';
}
function window_pos(popUpDivVar) {
if (typeof window.innerWidth != 'undefined') {
viewportwidth = window.innerHeight;
} else {
viewportwidth = document.documentElement.clientHeight;
}
if ((viewportwidth > document.body.parentNode.scrollWidth) && (viewportwidth > document.body.parentNode.clientWidth)) {
window_width = viewportwidth;
} else {
if (document.body.parentNode.clientWidth > document.body.parentNode.scrollWidth) {
window_width = document.body.parentNode.clientWidth;
} else {
window_width = document.body.parentNode.scrollWidth;
}
}
var popUpDiv = document.getElementById(popUpDivVar);
window_width=window_width/2-150;//150 is half popup's width
popUpDiv.style.left = window_width + 'px';
}
function popup(windowname) {
blanket_size(windowname);
window_pos(windowname);
toggle('blanket');
toggle(windowname);
}
答案 0 :(得分:0)
变量$ supplier设置为主脚本中查询的最后一行 - 您的弹出窗口被称为AFTER - 所以当然您总是得到最后一行的供应商。
您可以重置查询(哪个行计数器指向最后一个条目 - 或者您可以修改您的javascript函数,以便将供应商作为theader中的值 - &gt; popup('popupDiv','$ supplier') )