[PHP] Formulaire Dynamique Récup de variables
Sydonis
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Llama Messages postés 81 Statut Membre -
Llama Messages postés 81 Statut Membre -
Bonjour,
Alors je sais que le titre ne décrit pas vraiment bien le sujet réel , et je sais que vous avez surement déja vu cette question posée sur le forum.
J'ai fouiner dans les sujets portants un nom similaire, mais ce que je veux faire est différent.
Je vais essayer d'expliquer mon problème le plus clairement possible:
1) J'effectue une requête sql (via script php biensur) qui affiche tous les enregistrement de ma table produit.
2) J'ai mis en place une boucle qui affiche tous ces enregistrements en faisant un
while ($donnees = $reponse->fetch())
3) J'utilise du code HTML a l'intérieur de mon code php pour afficher les différents champs
4) Et c'est la que çela se complique , je souhaite rajouter un bouton en html dans la boucle while qui aura un nom différent çelon l'enregistrement affiché, et qui permettra d'ouvrir une page supprimer_article.php
en gros , le nom du bouton dans la balise input a une forme du type name="$donnees['Reference']
Et ce que moi je veux faire , c'est récupérer cette valeur dans la page supprimer avec un $_POST afin de pouvoir supprimer chaque article afficher.
Le problème
c'est que jusqu'a présent, je n'ai réussi a supprimer que l'article qui était afficher en dernier, donc seulement l'article qui a un idée égale a la derniere valeur de $donnees['referencement'] dans la boucle
J'essaie maintenant de mettre en place le bouton dynamique et de récupéré le bouton voulu dans une autre page grâce a $_POST['$donnees['reference']']
mais il ne le reconnait pas, j'ai modifier mon code en essayant plusieur technique, rien a faire, je suis toujours au même points.
Tenez, je vous met ici tous le code, pour que çela soit plus clair :
Script de ma page affichant tout les articles, qui est inclu dans une autre page XHTML toute basique :
et voila ma page supprimer_article, censé supprimé l'enregistrement dont l'id correspond au nom du bouton sur lequel on a cliqué
Voila, c'est un peu tordu je sais, mais merci d'avance au routards du code qui pourrons me répondre !
Alors je sais que le titre ne décrit pas vraiment bien le sujet réel , et je sais que vous avez surement déja vu cette question posée sur le forum.
J'ai fouiner dans les sujets portants un nom similaire, mais ce que je veux faire est différent.
Je vais essayer d'expliquer mon problème le plus clairement possible:
1) J'effectue une requête sql (via script php biensur) qui affiche tous les enregistrement de ma table produit.
2) J'ai mis en place une boucle qui affiche tous ces enregistrements en faisant un
while ($donnees = $reponse->fetch())
3) J'utilise du code HTML a l'intérieur de mon code php pour afficher les différents champs
4) Et c'est la que çela se complique , je souhaite rajouter un bouton en html dans la boucle while qui aura un nom différent çelon l'enregistrement affiché, et qui permettra d'ouvrir une page supprimer_article.php
en gros , le nom du bouton dans la balise input a une forme du type name="$donnees['Reference']
Et ce que moi je veux faire , c'est récupérer cette valeur dans la page supprimer avec un $_POST afin de pouvoir supprimer chaque article afficher.
Le problème
c'est que jusqu'a présent, je n'ai réussi a supprimer que l'article qui était afficher en dernier, donc seulement l'article qui a un idée égale a la derniere valeur de $donnees['referencement'] dans la boucle
J'essaie maintenant de mettre en place le bouton dynamique et de récupéré le bouton voulu dans une autre page grâce a $_POST['$donnees['reference']']
mais il ne le reconnait pas, j'ai modifier mon code en essayant plusieur technique, rien a faire, je suis toujours au même points.
Tenez, je vous met ici tous le code, pour que çela soit plus clair :
Script de ma page affichant tout les articles, qui est inclu dans une autre page XHTML toute basique :
<?php
try
{
include('modele/connexion_database.php');
$reponse = $bdd->query('SELECT * FROM produit');
$i =1; //j'ai essayée de remplacé $donnnes['Reference'] par $i
?>
<form id="page" action="supprimer_article.php" method="post">
<?php
while ($donnees = $reponse->fetch())
{
echo "<hr>".'<br />';
//la , j'affiche tout les rows trouvés
echo '<img src="'.$donnees ["Image"].'"/>'.'<br />';
echo $donnees['Nom_Produit'] . '<br />';
echo $donnees['Type'] . '<br />';
echo $donnees['Disponibilite'] . '<br />';
echo $donnees['Prix'] ."€".'<br />';
echo $donnees['Auteur'] . '<br />';
?>
<input type="text" name="id_<?php echo $i ?>" value=" <?php echo $i ?>"
READONLY>
//et donc c'est la que j'essai de créer autant de bouton qu'il y a de rows trouvés
<input type="submit" name="lien_<?php echo $donnees['Reference']?>" value="supprimer article <?php echo $donnees['Reference']?>">
<?php
echo'<br />';
$i++;
}
?></form>
<?php
$reponse->closeCursor();
}
catch(Exception $e) //juste pour gérer les erreures
{
die('Erreur : '.$e->getMessage());
}
?>
et voila ma page supprimer_article, censé supprimé l'enregistrement dont l'id correspond au nom du bouton sur lequel on a cliqué
<?php
session_start();
$_SESSION['Reference'] = $_POST['id_'.$i]; //index du poste non reconnu, il est censé contenir la valeur du nom du bouton
//test
$req = $_SESSION['Reference'];
echo $req;
echo $_SESSION['Reference'];
try {
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; //Initialisation de PDO
$bdd = new PDO('mysql:host=localhost;dbname=exiastore2', 'root', '', $pdo_options);
$query = $bdd->query("DELETE FROM produit WHERE Reference = $req ");
}
catch (Exception $exception)
{
die('Erreur : ' . $exception->getMessage());
}
//header('Location:../pageArticle.php'); //retour vers page d'affichage après la suppr
?>
Voila, c'est un peu tordu je sais, mais merci d'avance au routards du code qui pourrons me répondre !
A voir également:
- [PHP] Formulaire Dynamique Récup de variables
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Tableau croisé dynamique - Guide
- Formulaire de reclamation instagram - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
7 réponses
je suis pas certain d'avoir bien compris, mais je pense que tu veux ça :
while([condition de boucle])
{
$VarTemp = [récupération du champ dans le BDD]
echo "<form name='suppr' action=[ton URL] methode='POST'>
<input type='hidden' value='$VarTemp'>
<input type='submit' value='$VarTemp'>
</form>
}
Templier Nocturne
Messages postés
9989
Statut
Membre
1 107
et dans ta page appelée, tu supprime la page voulue :)
Tu as essayé d'utiliser $_GET et l'id de l'article par exemple ? avec des liens du style "supprimer_article.php?id=512" qui t'enverrais sur la page "supprimer_article.php" et supprimerais l'article dont l'id est "$_GET['id']" soit dans l'exemple "512" ?
Et oui ! j'ai justement trouver cette solution dans la soirée !
Cependant je ne marque pas le thread comme résolut, car c'est plutot une manière de contourner le problème xD et j'ai vu plusieur forum ou ce type de probleme bien spécifique est posé sans trouver de réponse, donc je laisse au cas ou, si quelqu'un voit et trouve.
Je mettrais dans la soiré un récapitulatif de la solution que j'ai codé pour ceux qui serait dans la même situation que moi
Cependant je ne marque pas le thread comme résolut, car c'est plutot une manière de contourner le problème xD et j'ai vu plusieur forum ou ce type de probleme bien spécifique est posé sans trouver de réponse, donc je laisse au cas ou, si quelqu'un voit et trouve.
Je mettrais dans la soiré un récapitulatif de la solution que j'ai codé pour ceux qui serait dans la même situation que moi
Bonjour,
Personnellement, je ferais comme ceci :
Créer non pas un formulaire pour tout le tableau, mais autant de formulaire qu'il y a d'article.
Chaque formulaire ressemblera à ça :
Du coup, quelque soit le bouton cliqué, dans ta page de traitement tu auras :
$_POST["ref"] -> La référence à supprimer
$_POST["id"] -> Ton $i (si tu en as besoin...)
Xavier
Personnellement, je ferais comme ceci :
Créer non pas un formulaire pour tout le tableau, mais autant de formulaire qu'il y a d'article.
Chaque formulaire ressemblera à ça :
<form name="form_<?php echo $i ?>" action="supprimer_article.php" method="post">
<input type="text" name="id" value="<?php echo $i ?>" READONLY>
<input type="hidden" name="ref" value="<?php echo $donnees['Reference']?>" />
<input type="submit" name="lien" value="supprimer article <?php echo $donnees['Reference']?>">
</form>
Du coup, quelque soit le bouton cliqué, dans ta page de traitement tu auras :
$_POST["ref"] -> La référence à supprimer
$_POST["id"] -> Ton $i (si tu en as besoin...)
Xavier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
d'accord^^, après si tu veux vraiment utiliser un $_POST, je pense que tu dois faire ce qui a été dit plus bas, à savoir un formulaire par article, sinon tu risques en effet d'avoir des problèmes pour savoir de quel bouton est parti la demande de suppression
j'avais tester a un moment d'afficher un formulaire par article , mais se ne résolvait pas le problème.
L'affaire a l'aire d'être plus complexe , et j'avais pas trop le temps de trainer sur une seul fonctionalité de mon site, donc j'ai pas vraiment creuser plus.
Pour régler mon problème du coup, j'ai fait comme ça :
while ($donnees = $reponse->fetch())
{
echo "<hr>".'<br />';
echo '<img src="'.$donnees ["Image"].'"/>'.'<br />';
echo $donnees['Nom_Produit'] . '<br />';
echo $donnees['Type'] . '<br />';
echo $donnees['Disponibilite'] . '<br />';
echo $donnees['Prix'] ."€".'<br />';
echo $donnees['Auteur'] . '<br />';
echo "<input type=\"button\" name=\"lien1\" value=\"Supprimer l'article\" onclick=\"document.location.href='confirm_suppr.php?action=". $donnees['Reference'] ."'\">";
Donc en gros : GET au lieu de POST , pas de bouton submit, mais un bouton "button" et on passe la valeur de la Réference pour chaque article dans l'url.
Et ensuite dans ma page supprimer article , je récupère l'id de chaque article voulu avec $_GET['action']
ce qui me permet de supprimer chaque article, et non pas le dernier a être afficher.
J'ai fait comme tu m'avait conseillé quoi :)
Donc Merci !
L'affaire a l'aire d'être plus complexe , et j'avais pas trop le temps de trainer sur une seul fonctionalité de mon site, donc j'ai pas vraiment creuser plus.
Pour régler mon problème du coup, j'ai fait comme ça :
while ($donnees = $reponse->fetch())
{
echo "<hr>".'<br />';
echo '<img src="'.$donnees ["Image"].'"/>'.'<br />';
echo $donnees['Nom_Produit'] . '<br />';
echo $donnees['Type'] . '<br />';
echo $donnees['Disponibilite'] . '<br />';
echo $donnees['Prix'] ."€".'<br />';
echo $donnees['Auteur'] . '<br />';
echo "<input type=\"button\" name=\"lien1\" value=\"Supprimer l'article\" onclick=\"document.location.href='confirm_suppr.php?action=". $donnees['Reference'] ."'\">";
Donc en gros : GET au lieu de POST , pas de bouton submit, mais un bouton "button" et on passe la valeur de la Réference pour chaque article dans l'url.
Et ensuite dans ma page supprimer article , je récupère l'id de chaque article voulu avec $_GET['action']
ce qui me permet de supprimer chaque article, et non pas le dernier a être afficher.
J'ai fait comme tu m'avait conseillé quoi :)
Donc Merci !