J'ai parlé un peu vite quand j'ai dit que ça fonctionnait : en fait, avec le code que j'ai mis plus haut, on ne pouvait supprimer que le dernier lien à chaque fois (puisque j' "attendais" que la boucle fasse le tour des données de la table, pour s'arrêter à la dernière ligne). Donc, j'ai mis tout simplement un "break" dans la boucle, qui est appliqué seulement si le nom du lien choisit par l'utilisateur correspond bien à un des liens listés dans la table de la base de données.
Ce qui donne :
if(isset($_POST['nom_lien1_supp']) && !empty($_POST['nom_lien1_supp']) ){
include 'connexion_bdd.php';
$requete = $bdd->query('SELECT nom_lien_1 FROM la_renaissance_liens_1');
While($ligne = $requete->fetch())
{
$lien1 = $ligne['nom_lien_1'];
if($_POST['nom_lien1_supp']===$lien1){
break;
}
}
$requete->closeCursor();
if($_POST['nom_lien1_supp']===$lien1){
//reste du code...
Aussi, j'ai changé la façon dont l'utilisateur choisit les liens à supprimer. J'ai fait une liste déroulante pour chaque thématique, listant les noms des liens présents dans la BDD. C'est en effet plus pratique...
Formulaire permettant de choisir les liens sous forme de listes déroulantes :
<form action="javaTest.php" method="POST" name="formulaire">
<p>SUPPRESSION DE LIENS</p>
<aside>
<p>SITES GENERALISTES</p>
<table>
<tr><td><select name="nom_lien1_supp" id="liens" >
<?php include 'connexion_bdd.php';
$requete = $bdd->query('SELECT nom_lien_1 FROM la_renaissance_liens_1');
while($ligne = $requete->fetch())
echo "<option value='".$ligne['nom_lien_1']."'>".$ligne['nom_lien_1']."</option>";
}
$requete->closeCursor(); ?>
</select></td></tr>
<tr><td><input type="submit" value="Validation" /></td></tr>
</table>
</aside>
</form>
Fichier de comparaison des chaînes de caractères et de demande de confirmation (suppression du lien ou non)
if(isset($_POST['nom_lien1_supp']) && !empty($_POST['nom_lien1_supp']) ){
include 'connexion_bdd.php';
$requete = $bdd->query('SELECT nom_lien_1 FROM la_renaissance_liens_1');
While($ligne = $requete->fetch())
{
$lien1 = $ligne['nom_lien_1'];
if($_POST['nom_lien1_supp']===$lien1){
break;
}
}
$requete->closeCursor();
if($_POST['nom_lien1_supp']===$lien1){
?>
<article>
<form action="javaTest2.php" method="POST" name="formulaire">
<!--[if (gt IE 6)&(lt IE 9)]>
<div id="article">
<![endif]-->
<p>SUPPRESSION DE LIENS</p>
<aside>
<p>SITES GENERALISTES</p>
<table>
<p>Voulez-vous vraiment supprimer le lien "<?php echo $_POST['nom_lien1_supp'] ?>" ?</p>
</td><td><input type="hidden" name="nom_lien1_supp" id="nom" value="<?php echo $_POST['nom_lien1_supp'] ?>" required/></td></tr>
<tr><td><input type="submit" value="Supprimer" /></td></tr>
<tr><td><a href="javaTest_form.php">
<p><-Ne pas supprimer et retourner au formulaire</p>
</a></td></tr>
</table>
</aside>
</form>
</article>
<?php
}
else
{
?>
<script>
alert('Le lien n\'existe pas');
document.location.replace('javaTest_form.php');
</script>
<?php
}
}
Enfin, fichier contenant la requête de suppression du lien en question si l'utilisateur a confirmé la suppression.
if(isset($_POST['nom_lien1_supp']) && !empty($_POST['nom_lien1_supp'])){
include 'connexion_bdd.php';
$req = $bdd->prepare('DELETE FROM la_renaissance_liens_1 WHERE nom_lien_1 = :nom_lien1_supp');
$req->execute(array(
'nom_lien1_supp' => strip_tags($_POST['nom_lien1_supp'])
));?>
<script>
alert('Le lien a été supprimé.');
document.location.replace('javaTest_form.php');
</script>
<?php
}
Ne faites pas attention à la présentation (indentation), qu'il faut que je soigne plus.
J'ai parlé un peu vite quand j'ai dit que ça fonctionnait : en fait, avec le code que j'ai mis plus haut, on ne pouvait supprimer que le dernier lien à chaque fois (puisque j' "attendais" que la boucle fasse le tour des données de la table, pour s'arrêter à la dernière ligne). Donc, j'ai mis tout simplement un "break" dans la boucle, qui est appliqué seulement si le nom du lien choisit par l'utilisateur correspond bien à un des liens listés dans la table de la base de données.
Ce qui donne :
[php]
if(isset($_POST['nom_lien1_supp']) && !empty($_POST['nom_lien1_supp']) ){
include 'connexion_bdd.php';
$requete = $bdd->query('SELECT nom_lien_1 FROM la_renaissance_liens_1');
While($ligne = $requete->fetch())
{
$lien1 = $ligne['nom_lien_1'];
if($_POST['nom_lien1_supp']===$lien1){
break;
}
}
$requete->closeCursor();
if($_POST['nom_lien1_supp']===$lien1){
//reste du code...
[/php]
Aussi, j'ai changé la façon dont l'utilisateur choisit les liens à supprimer. J'ai fait une liste déroulante pour chaque thématique, listant les noms des liens présents dans la BDD. C'est en effet plus pratique...
Formulaire permettant de choisir les liens sous forme de listes déroulantes :
[php]
<form action="javaTest.php" method="POST" name="formulaire">
<p>SUPPRESSION DE LIENS</p>
<aside>
<p>SITES GENERALISTES</p>
<table>
<tr><td><select name="nom_lien1_supp" id="liens" >
<?php include 'connexion_bdd.php';
$requete = $bdd->query('SELECT nom_lien_1 FROM la_renaissance_liens_1');
while($ligne = $requete->fetch())
echo "<option value='".$ligne['nom_lien_1']."'>".$ligne['nom_lien_1']."</option>";
}
$requete->closeCursor(); ?>
</select></td></tr>
<tr><td><input type="submit" value="Validation" /></td></tr>
</table>
</aside>
</form>
[/php]
Fichier de comparaison des chaînes de caractères et de demande de confirmation (suppression du lien ou non)
[php]
if(isset($_POST['nom_lien1_supp']) && !empty($_POST['nom_lien1_supp']) ){
include 'connexion_bdd.php';
$requete = $bdd->query('SELECT nom_lien_1 FROM la_renaissance_liens_1');
While($ligne = $requete->fetch())
{
$lien1 = $ligne['nom_lien_1'];
if($_POST['nom_lien1_supp']===$lien1){
break;
}
}
$requete->closeCursor();
if($_POST['nom_lien1_supp']===$lien1){
?>
<article>
<form action="javaTest2.php" method="POST" name="formulaire">
<!--[if (gt IE 6)&(lt IE 9)]>
<div id="article">
<![endif]-->
<p>SUPPRESSION DE LIENS</p>
<aside>
<p>SITES GENERALISTES</p>
<table>
<p>Voulez-vous vraiment supprimer le lien "<?php echo $_POST['nom_lien1_supp'] ?>" ?</p>
</td><td><input type="hidden" name="nom_lien1_supp" id="nom" value="<?php echo $_POST['nom_lien1_supp'] ?>" required/></td></tr>
<tr><td><input type="submit" value="Supprimer" /></td></tr>
<tr><td><a href="javaTest_form.php">
<p><-Ne pas supprimer et retourner au formulaire</p>
</a></td></tr>
</table>
</aside>
</form>
</article>
<?php
}
else
{
?>
<script>
alert('Le lien n\'existe pas');
document.location.replace('javaTest_form.php');
</script>
<?php
}
}
[/php]
Enfin, fichier contenant la requête de suppression du lien en question si l'utilisateur a confirmé la suppression.
[php]
if(isset($_POST['nom_lien1_supp']) && !empty($_POST['nom_lien1_supp'])){
include 'connexion_bdd.php';
$req = $bdd->prepare('DELETE FROM la_renaissance_liens_1 WHERE nom_lien_1 = :nom_lien1_supp');
$req->execute(array(
'nom_lien1_supp' => strip_tags($_POST['nom_lien1_supp'])
));?>
<script>
alert('Le lien a été supprimé.');
document.location.replace('javaTest_form.php');
</script>
<?php
}
[/php]
Ne faites pas attention à la présentation (indentation), qu'il faut que je soigne plus.