代码之家  ›  专栏  ›  技术社区  ›  Max

使用数据库中的值和PHP自动突出显示

  •  1
  • Max  · 技术社区  · 7 年前

    我在同一页上有五个(有时是7、8等)PHP生成的小HTML表,每个表都有不同的 <table id=""> . 我在mysql表上有与html表ID相同的唯一ID的数据。

    我需要的是每个HTML表匹配要用具有相同表ID的mysql表行的值突出显示的值。

    因此,我不需要使用带有多个选择器值的复选框,而是需要在不单击任何复选框的情况下自动执行该操作。通常,对于复选框,我使用如下内容: https://jsfiddle.net/zt54jqtL/ 谢谢!!

    <div>
    
    <form id="form1" name="form1" method="post" action="">
        <label>
            <input type="checkbox" name="SelectAll" class="all" />All</label>
        <label>
            <input type="checkbox" name="2" class="selector" />2</label>
        <label>
            <input type="checkbox" name="7" class="selector" />7</label>
        <label>
            <input type="checkbox" name="7" class="selector" />7</label>
    
    </form>
    

    PHP代码:

     <?php
    
    $conn=mysqli_connect("localhost","root","","Mdata");
    
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
    
    function print_tableX ($conn, $id) {
        $sql = "SELECT Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8 FROM tableA";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            echo "<table id='$id'>";
            while($row = $result->fetch_assoc()) {
                echo '<tr><td>' . join('</td><td>', $row) . "</td></tr>\n" ;
            }
            echo "</table>";
        }
    }  
    
    
    $result = $conn->query("SELECT sID from tableB");
    while ($row = $result->fetch_assoc()) {
        print_tableX ($conn, $row['sID']);
    }
    
    ?>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Tobia    7 年前

    我不确定我是否正确理解了这个问题。此外,从您的代码中,我无法理解哪些行必须突出显示。

    假设这是生成的HTML:

    <table id="tab1">
        <tr data-dbval="3"><td>Value</td><td>3</td></tr>
        <tr data-dbval="5"><td>Value</td><td>5</td></tr>
        <tr data-dbval="8"><td>Value</td><td>8</td></tr>
     </table>
    
     <table id="tab2">
        <tr data-dbval="2"><td>Value</td><td>2</td></tr>
        <tr data-dbval="7"><td>Value</td><td>7</td></tr>
        <tr data-dbval="8"><td>Value</td><td>8</td></tr>
     </table>
    

    这是一个带有要突出显示的行引用的javascript对象:

    <script>
        var defaultValue={"tab1":["3","8"],"tab2":["7"]}
    </script>
    

    此jquery代码获取每个表要突出显示的值,并向tr元素添加一个“highlight”类:

    $(document).ready(function() {
    
      $.each(defaultValue,function(k,v){
        var $tab=$("table#"+k);
        if($tab.length>0){
            $.each(v,function(k1,v1){
            $tab.find("tr[data-dbval='"+v1+"']").addClass("highlight");
          })
        }
      })
    
    });
    

    https://jsfiddle.net/moc5sq4w/

    要从PHP生成JS对象,可以使用它(这是丑陋的嵌入式PHP)。例如,SQL,我不理解您的数据库数据结构:

    <script>
    var defaultValue=<?php
    $result = $conn->query("SELECT sID from tableB");
    $out=array();
    while ($row = $result->fetch_assoc()) {
        $id=$row['sID'];
        $out[$id]=array();
        $sql = "SELECT Value1, Value2, Value3, Value4, Value5 FROM tableA WHERE sID='$id'";
        $result1 = $conn->query($sql);
        if ($result1->num_rows > 0) {
            while($row1 = $result1->fetch_assoc()) {
               $out[$id][]=$row;
            }
        }
    }
    echo json_encode($out);
    
    ?>;</script>