php – 使用复选框从MySQL中的多个表中选择数据,并根据复选框显示表字段

我的用户数据库中有两个表.

第一个表包含用户唯一ID,名称,联系人号码和其他个人信息.

第二个表包含来自第一个表的用户的唯一ID以及设备信息,例如他的第一个机器号,第二个机器号以及许多其他.

我的表没有2结构是..

table2

在报告页面上,我使用此表格以表格形式显示所有信息

$sql = "SELECT e.* ,d.* FROM emitra_basic As e INNER JOIN emitra_device as d  ON d.uid=e.uid";
$result = $conn->query($sql);

if ($result->num_rows>0) {?>
            <table ><tr><td> Uid</td><td> Name</td>
             <td> Micro Atm</td>.......and all column of both tables </tr>                            
 <?php while($row = $result->fetch_array()) {
   echo "<td>".  $row['uid']. "</td>";
     echo "<td>".  wordwrap($row['name'],15,"\n",1). "</td>"; ....and all  
    } echo "</table>";  

它工作正常.但我想展示一份定制报告.这意味着我想为表字段的用户提供复选框/单选按钮.如果他选择字段使用复选框,则其仅显示选中复选框/单选按钮的那些值.它喜欢用户选择三个复选框/单选按钮,如Uid,name,m_atm.它仅显示来自两个表的三列的详细信息,并相应地显示这些列.

最佳答案
如果我没有理解你,要做到这一点,你需要添加到ON d.uid = e.uid“类似这样的东西在d.uid = e.uid”和Uid = $id AND name = $name和m_atm = $atm,或者把它添加到哪里(到哪里我不好)

例如

HTML:

 <form method="get" action="/a.php">
 <input type="checkbox" name="check1" value="text1"/>
 <input type="checkbox" name="check2" value="text2"/>
 <input id="submit" onclick="f();return false;" type="button" value="ok"/>
 </form>

PHP(test.php)

     if(isset($_GET['check1'])) $id=" AND Uid='$_GET[check1]'"; //if is checked first
if(isset($_GET['check2'])) $name=" AND name='$_GET[check2]'"; //if is checked second

/* . . . */

$sql = "SELECT e.* ,d.* FROM emitra_basic As e INNER JOIN emitra_device as d  ON (d.uid=e.uid $id $name )";

var_dump($sql);

JS:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

 <script>
 function f() {
 var url;
 var xmlhttp,

 url="/text.php?"+$('form').serialize(); //change text.php

 if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.open('GET', url, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            myfunction(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null); 


  function myfunction(response) { alert(url+'   '+response);
 //do something
  }
  }

 </script>

那个Php代码很简单,但你可以使用循环和键值使它看起来更好

例如,您可以使用< input name = text []>对于所有ckeckboxes元素并执行此操作

 foreach ($_GET['text'] as $key => $value) {
 if($key==0) $key='uid'; else
 if($key==1) $key='name'; else
 if($key==2) $key='m_atm'; 

 $q.="$key='$value' AND ";
 }

 $q=substr($q,0,strlen($q)-5);

 $sql2 = "SELECT e.* ,d.* FROM emitra_basic As e INNER JOIN emitra_device as d  ON (d.uid=e.uid $q )";

 var_dump($sql2);

转载注明原文:php – 使用复选框从MySQL中的多个表中选择数据,并根据复选框显示表字段 - 代码日志