在数据表中单击PHP ID时如何显示模式?

时间:2019-07-09 18:34:18

标签: javascript php

我有一些php代码,可从数据库中获取数据并将数据插入到引导数据表中,并且在一行中有一个显示模式的单元格。 单击该按钮时,它包含ID和带有我要在模式中显示的子内容的ID。

//#Example datatable
foreach($xx as $item) {
  if($item) {
    if ($item->state){
    $id = $item->id;
    $dname = $item->district_name;
    $state = $item->state;
    $city = $item->city;
    $schools = $item->schools;
    $students = $item->students;
    global $stateId;
    $stateId = $item->state_district_id;
}
  }
   echo ' <tr>
            <td class="icon-class"></td>
     <td align="center">' . $dname . '</td>
     <td align="center">' . $state . '</td>
     <td align="center">' . $city . ' </td>
     <td align="center">' . $schools . '</td>
     <td align="center">' . $students . '</td>
     <td align="center">
<button onclick="myFunChild('. $stateId .')">View Schools</button>
</td>
<td align="center"><button onclick="myFunctionz(' . $id .')">Request District</button></td>
          </tr>';

这是我的功能,我意识到我尚未使用传递的$ stateId做任何事情

function myFunChild(strg){
"use strict";
("#myModal").modal('show');
}

然后我有类似以下部分的代码:#Example datatable使用$ stateId从数据库中获取数据

但是很明显,它只需要设置第一个数据表后数据库给我的最后一个ID 我想做的是获取单击“查看学校”的特定行的当前/正确ID。

I.E。我正在将数据放入主数据表中,与此同时,我的子表也正在填充,但是我需要等到用户单击更多视图以使用正确的ID填充子表。

我该如何处理? 谢谢!

1 个答案:

答案 0 :(得分:0)

您已正确将PHP变量传递给JS。只需使用strg JS辩论者而不是$stateId来引用它,它每次都是唯一的。您要在JS中显示的所有其他内容都需要作为JS函数的参数传递给JS。

重要的是要认识到PHP将只处理一次 。它是一种后端语言,可在完全不同的计算机上运行。 JS变量是客户端变量,可以在运行时更改,它们不知道PHP中发生了什么。示例:页面加载后,stateId已永久放置在页面中,并且不再可以作为变量访问。现在,对于客户端和JS来说,就好像它首先是硬编码一样。

所以您要做的是生成代码,例如:

<button onclick="showModal(1)">
<button onclick="showModal(2)">
<button onclick="showModal(3)">

这很好。

现在,由于JS不知道PHP是什么,或者不知道它是用来构建页面的,所以以上就是所见。按查看源以查看javascript看到的内容。像POST / GET这样的$ _REQUEST查询之外的任何东西都无法访问。

因此在JS中,您必须编写函数:

function showModal(id) {
  alert("You clicked button " + id);
}

如果您尝试错误地写:

function showModal(id) {
  alert("You clicked button " + $somePHPVariable);
}

然后按查看源代码,您将看到在JS代码甚至不知道发生了什么之前,您已经将此函数编写为alert("You clicked button " + 3);

因此,答案是您必须每次使用strg中的myFunChild创建唯一的对话框。

function myFunChild(strg){
  "use strict";
  ("#myModal" + strg).modal('show');
}

对于要在此处传递的任何其他数据,它必须是另一个参数,一个数组,通过AJAX或URL #query传递的。某种程度上,在使用它之前必须使其成为JS可访问的。