在 PHP 生成的表中添加和访问按钮 ID

Adding and accessing buttons IDs in a PHP-generated table

本文关键字:添加 访问 按钮 ID PHP      更新时间:2023-09-26

我的php生成表,从SQL数据库请求数据并将数据存储在表中时遇到问题。

表中每行的第一个单元格包含一个下拉按钮,该按钮链接到删除该行的 delete.php 脚本。它还链接到用于修改行单元格的 modif.php 脚本。我的问题是我需要访问带有 ID 的下拉按钮才能知道要删除哪一行。

而且我真的不知道如何将我的下拉按钮与 ID 链接并在我的脚本中访问它们。

这是代码:

<?php
  $con=mysqli_connect("localhost","root","icare","icare1");
  // Check connection
  if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  $result = mysqli_query($con,"SELECT * FROM magasin");
  echo "<table border='1'>
  <tr>
  <th>code</th>
  <th>ip</th>
  <th>ads</th>
  <th>region</th>
  <th>adress</th>
  <th>name</th>
  <th>email</th>
  <th>number</th>
  <th>gtc</th>
  <th>date</th>
  </tr>";
  $indexB = array();
  $i = 0;
  while($row = mysqli_fetch_array($result))
  {
    echo "<tr>";
    echo "<td>
          <div class='dropdown'>
            <button id=$indexB[$i] class='dropbtn'>▶</button>
            <div class='dropdown-content'>
              <a href='modif.php'>Modifier</a>
              <a href='delete.php'>Supprimer</a>
            </div>
            ".$row['code']."
          </div>
    </td>";
    echo "<td><div>" . $row['ip'] . "</div></td>";
    echo "<td><div>" . $row['ads'] . "</div></td>";
    echo "<td><div>" . $row['region'] . "</div></td>";
    echo "<td><div>" . $row['adress'] . "</div></td>";
    echo "<td><div>" . $row['name'] . "</div></td>";
    echo "<td><div>" . $row['email'] . "</div></td>";
    echo "<td><div>" . $row['number'] . "</div></td>";
    echo "<td><div>" . $row['gtc'] . "</div></td>";
    echo "<td><div>" . $row['date'] . "</td>";
    echo "</tr>";
    $i++;
  }
    echo "</table>";
    mysqli_close($con);
?>

这是删除.php :

<?php
  $connection = mysqli_connect("localhost", "root", "icare", "icare1");
  if($connection === false){
      die("Connection failed " . mysqli_connect_error());
  };

    //$id =
    $sql = "DELETE FROM magasin WHERE Code=".$id;
    //$result = mysqli_query($connection,$sql);
    if(mysqli_query($connection, $sql)){
        echo "Done !";
    } else{
      echo "Failed : $sql. " . mysqli_error($connection);
    }
  mysqli_close($connection);
?>

我启动了一个 indexB[] 来存储下拉列表 ID,但我不确定我做得是否正确。最后,我想将我的按钮链接到代码属性,然后使用 code 属性删除带有 sql 查询的行。

我是新手,所以...对不起,如果我做了或问了一些愚蠢的事情。

更新:致米克拉菲兹克 :

我试过你的答案,但它不起作用。我只得到"1">Supprimer"。似乎 href 有问题,但我只是找不到原因。我不知道我忘记了什么,所以如果你看到什么问题:

<?php
  $con=mysqli_connect("localhost","root","icare","icare1");
  // Check connection
  if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  $result = mysqli_query($con,"SELECT * FROM magasin");
  echo "<table border='1'>
  <tr>
  <th>Code</th>
  <th>Adresse IP</th>
  <th>Adresse ADS</th>
  <th>Région</th>
  <th>Adresse</th>
  <th>Nom du directeur</th>
  <th>Mail</th>
  <th>Téléphone</th>
  <th>GTC</th>
  <th>Date d'installation</th>
  </tr>";
$data = mysqli_fetch_array($result);
?>
    <table>
<?php foreach ($data as $key => $row):?>
<tr>
 <td>
    <div class='dropdown-content'>
      <button class='dropbtn'>▶</button>
          <!-- <a href="modif.php?id=<?=$row['id']?>">Modifier</a> -->
          <a href="delete.php?id=<?php echo $row['id']?>">Supprimer</a>
    </div>
 </td>
 <td><div><?php echo $row['AdresseIP'];?></div></td>
 <td><div><?php echo $row['AdresseADS'];?></div></td>
 <td><div><?php echo $row['Region'];?></div></td>
 <td><div><?php echo $row['Adresse'];?></div></td>
 <td><div><?php echo $row['NomDirecteur'];?></div></td>
 <td><div><?php echo $row['Mail'];?></div></td>
 <td><div><?php echo $row['Tel'];?></div></td>
 <td><div><?php echo $row['Gtc'];?></div></td>
 <td><div><?php echo $row['DateInstall'];?></td>
</tr>
<?php endforeach; ?>
</table>
<?mysqli_close($con);?>

删除.php :

<?php
  $connection = mysqli_connect("localhost", "root", "icare", "icare1");
  if($connection === false){
      die("Connexion échouée " . mysqli_connect_error());
  };
    $id = $_GET['id'];
    $sql = "DELETE FROM magasin WHERE Code=".$id;
    $result = mysqli_query($connection,$sql);
    if($result){
        echo "Enregistrement réussi !";
    } else{
      echo "Enregistrement échoué : $sql. " . mysqli_error($connection);
    }
  mysqli_close($connection);
?>

首先,像这样划分查询和表单构建

$data = mysqli_fetch_array($result)

然后

<?php foreach ($data as $key => $row): ?>
<tr>
 <td>
    <div class='dropdown-content'>
          <a href='modif.php?id=<?=$row['id']?>'>Modifier</a>
          <a href='delete.php?id=<?=$row['id']?>'>Supprimer</a>
    </div>
 </td>
</tr>
<?php endforeach ?>

在你的修改中.php

$id = $_GET['id'];

(关注Flumble_的答案,由于我的低代表,我无法发表评论)

也许<?= ?>是问题所在。尝试用<?php ?>替换它们

更新:

你也不应该使用短的开放标签(<? ?>):请参阅这个问题的答案。

此外,当您写入<?php $row['id'] ?> 时,您不会打印该值。你必须写<?php echo $row['id']; ?>.同样的事情也适用于短开放标签(但不适用于<?=语法)。

希望这进一步有所帮助。我将继续审查您的代码。

更新 2 :

好吧,我想我明白了。 mysqli_fetch_array返回一,而不是整个结果集。所以你必须遍历行,直到mysqli_fetch_array返回 NULL :

while($data = mysqli_fetch_array($result)) {
    ?>
    <tr>
        <!-- ... -->
    </tr>
    <?php
}