У меня проблемы с моим php, который генерирует таблицу, запрашивает данные из базы данных SQL и сохраняет данные в таблице.
Первая ячейка каждой строки в таблице содержит выпадающую кнопку, которая ссылается на скрипт delete.php, который удаляет строку. Он также ссылается на скрипт modif.php, используемый для изменения ячеек строки. Моя проблема в том, что мне нужно получить доступ к раскрывающимся кнопкам с идентификаторами, чтобы узнать, какую строку удалить.
И я действительно не знаю, как связать свои выпадающие кнопки с идентификаторами и получить доступ к ним в моих сценариях.
Вот код:
<?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); ?>
И вот delete.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 [], чтобы хранить идентификаторы выпадающих списков, но я не уверен, что делаю это правильно. В конце концов, я хочу связать свои кнопки с атрибутом кода, а затем удалить строку с моим 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);?>
delete.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 ?>
И в вашем modif.php
$id = $_GET['id'];
(Озабочен ответ Flumble_, который я не могу прокомментировать из-за моей низкой репутации)
Возможно, проблема?????? Попробуйте заменить их <?php ?>
ОБНОВИТЬ :
Вы также никогда не должны использовать короткие открытые теги ( <? ?>
): См. Ответ на этот вопрос .
Кроме того, когда вы пишете <?php $row['id'] ?>
, Вы не печатаете значение. Вы должны написать <?php echo $row['id']; ?>
<?php echo $row['id']; ?>
. То же самое относится и к коротким открытым тегам (но не к синтаксису <?=
).
Надеюсь, это поможет. Я продолжу рассмотрение вашего кода.
ОБНОВЛЕНИЕ 2:
Хорошо, я думаю, что понял. mysqli_fetch_array
возвращает строку , а не весь набор результатов. Таким образом, вам нужно пройти через строки до mysqli_fetch_array
пор, пока mysqli_fetch_array
вернет NULL:
while($data = mysqli_fetch_array($result)) { ?> <tr> <!-- ... --> </tr> <?php }