[PHP] Formulaire Dynamique Récup de variables

Fermé
Sydonis Messages postés 3 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 24 juin 2011 - 22 juin 2011 à 23:10
Llama Messages postés 75 Date d'inscription samedi 18 juin 2011 Statut Membre Dernière intervention 5 octobre 2011 - 24 juin 2011 à 22:13
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 :
<?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:

7 réponses

Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
Modifié par Templier Nocturne le 22/06/2011 à 23:19
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> 
}
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
22 juin 2011 à 23:19
et dans ta page appelée, tu supprime la page voulue :)
0
Llama Messages postés 75 Date d'inscription samedi 18 juin 2011 Statut Membre Dernière intervention 5 octobre 2011 1
22 juin 2011 à 23:21
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" ?
0
Sydonis Messages postés 3 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 24 juin 2011
23 juin 2011 à 15:38
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
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 juin 2011 à 15:58
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 :
<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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Llama Messages postés 75 Date d'inscription samedi 18 juin 2011 Statut Membre Dernière intervention 5 octobre 2011 1
23 juin 2011 à 18:32
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
0
Sydonis Messages postés 3 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 24 juin 2011
24 juin 2011 à 20:55
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 !
0
Llama Messages postés 75 Date d'inscription samedi 18 juin 2011 Statut Membre Dernière intervention 5 octobre 2011 1
24 juin 2011 à 22:13
de rien :). Je crois que c'est une méthode "classique"^^
0