您可以对不同的表进行 2 个查询来创建复选框并“选中”它们吗?

问题描述 投票:0回答:1

我当前正在使用一个表,该表使用

show columns
查询将所有列回显到复选框中。下面的代码适用于此。我尝试在查询下创建另一个查询来搜索具有相同列的不同表,如果该表中的行有 0 或 1,它将显示一个“选中”框。我使用“显示列”查询的原因是因为总是为项目添加更多列。

/////编辑 发布后,我意识到使用同一个表会更好,因为无论如何“列”代表输出时的所有“复选框”。但同样的问题仍然存在。我正在尝试加倍查询。查询 1 = 提取所有列并创建复选框 查询 2 = 使用与 $newloc 匹配的行,并且如果复选框位于特定列中,则用“选中”框标记出放置的列。我在同一页面上有另一个查询,该查询填充了用户信息,效果很好。此页面用作确认页面,其中包含所有用户信息以及他们拥有的某些项目(复选框),然后他们可以在此页面上进行编辑并根据需要进行提交。我想清楚本页中的所有内容,以防影响这部分。我需要添加的另一件事是,因为我使用同一个表,所以我需要跳过前 3 列,因为这是我不希望作为列的其他数据。

 <?php 
  $conc = new mysqli("127.0.0.1:3306", "root", "", "mydb");
  $res= $conc ->query("SHOW COLUMNS from matmemmatrix");
  
  // this part here is what I was imagining would work
  $sql = "SELECT * FROM matmemmatrix WHERE memid1 = '$uid' AND memlocid = '$newloc'";
  $datam = mysqli_query($conc, $sql);
  $a = 1;
  $row1 = $datam[$a]; // first column ?? 
  //      


  echo "<html>";
  echo "<body>";               
  echo "<table>";
  $i = 0;
  while ($row = $res->fetch_assoc()) {
     $id = $row['Field']; 


       // EDIT : check to see if $id matches $row1
     if($id = $row1){
        $checked = 1;
        }else{
        $checked = 0;
        }
        //



     if($i >'5'){
        $i=='0';
    
     if($i=='5'){
        echo "</tr>";
        echo "<tr>";
        $i ='0'; 
     ;   
     if ($i =='0' ){
        echo "<tr>";
  };
  echo "<td>";
  echo '<input type ="checkbox"  
                       value="'.htmlspecialchars($id).'"  
                           id="'.htmlspecialchars($id).'"          
                          name="'.htmlspecialchars('mat[]').'"  
                        checked= '.$checked.'>
                        </option>';
 echo '<label for ="'.htmlspecialchars($id).'">'.htmlspecialchars($id).'</label>';
 echo "</td>";
 $i++;
 // EDIT Increment next column to see if 0 or 1
 $a++;
//
 }
  echo "</table>";
  echo "</body>";
  echo "</html>";   
?>

我尝试将下面的查询与上面的查询一起使用来获取复选框“已选中”列。但失败了。

$sql = "SELECT * FROM matmemmatrix WHERE memid1 = '$uid' && memlocid = '$newloc'";

我无法从该查询中获得任何结果来处理上述查询。

我尝试单独使用上面的查询来提取所有列以用作复选框,并使用带有 1 或 0 的行数据来标记为已选中但失败。

是否可以从此查询中获取列用作复选框,并使用行数据来显示它是否已选中(1 或 0)?我想确保表中的所有列都显示是否已选中。

php mysql checkbox echo
1个回答
0
投票

我通过 2 个查询得到了这段代码。不过需要一点清洁。

<?php
$conc = new mysqli("127.0.0.1:3306", "root", "", "database");           
$sqla = "SHOW COLUMNS from matmemmatrix";
$res= mysqli_query($conc, $sqla);
$uid = $_SESSION[ 'uid' ];
$newloc = $_SESSION[ 'newloc'];

$sql = "SELECT * FROM matmemmatrix WHERE memid1 = '$uid' AND memlocid = '$newloc'";
$resu = $conc->query($sql);
$datam = $resu->fetch_assoc();
$a = "0";
echo "<html>";
echo "<body>";               
echo "<table>";             
$i = 0;
while ($row = $res->fetch_assoc()) {
$id = $row['Field']; //prints column names
$id1 = $rowa['MatName']; 
if ($datam[array_keys($datam)[$a]] == "1")
{ $checked = "checked";
}else{
$checked = "";
}
$a++;
if($i >'5'){
$i=='0';
};

if($i=='5'){
echo "</tr>";
echo "<tr>";      
$i ='0';           
};
if ($i =='0' ){
echo "<tr>";
};
echo "<td>";
echo '<input type ="checkbox"  value="'.htmlspecialchars($id).'"  id="'.htmlspecialchars($id).'"  name="'.htmlspecialchars('mat[]').'"  '.$checked.'>
</option>';
echo '<label for ="'.htmlspecialchars($id).'">'.htmlspecialchars($id).'</label>';
echo "</td>";
$i++;
                  
}   
echo "</table>";
echo "</body>";
echo "</html>";   
$_POST['access_listb'];
?>
© www.soinside.com 2019 - 2024. All rights reserved.