如何修改我的PHP查询以获取我想要的信息?

时间:2015-02-02 18:16:29

标签: javascript php

我正在用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);     
}

1 个答案:

答案 0 :(得分:0)

变量$ supplier设置为主脚本中查询的最后一行 - 您的弹出窗口被称为AFTER - 所以当然您总是得到最后一行的供应商。

您可以重置查询(哪个行计数器指向最后一个条目 - 或者您可以修改您的javascript函数,以便将供应商作为theader中的值 - &gt; popup('popupDiv','$ supplier') )