Mettre une variable dans un $_POST

Résolu/Fermé
ifox - 7 juil. 2009 à 21:25
Samaël666 Messages postés 73 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 6 juin 2010 - 7 juil. 2009 à 22:16
Bonjour,

Je bute sur un problème de syntaxe tout bête, je voudrais récupérer une variable d'un formulaire :

<input type="checkbox" name="<?php echo $id ?>" value="<?php echo $id ?>" id="sup"/>

et pour commencer mon formulaire je fais :

if (isset($_POST['$id']))

{
...suite du code

Alors est-ce une erreur de ma part ou on ne peut pas récupérer de variable dans un POST ? ma checkbox est dans un switch donc elle s'applique à tout les objets concernés que je voudrais supprimer, j'utilise donc logiquement leurs id mais le POST ne marche pas.

Merci

11 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
7 juil. 2009 à 21:54
si tu fais
if (isset($_POST['$id']))

avec des ', le $id sera interprété comme chaine de caractères

pour l'interpréter comme variable, c'est
if (isset($_POST["$id"]))
1
Samaël666 Messages postés 73 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 6 juin 2010 8
7 juil. 2009 à 21:29
Quand tu fais ta vérification est-ce que $id conserve la même valeur ?

Pourquoi ne pas changer simplement :

if (isset($_POST['$id']))
{ 

par
if (isset($_POST['id']))
{ 


et
<input type="checkbox" name="<?php echo $id ?>" value="<?php echo $id ?>" id="sup"/>

par
<input type="checkbox" name="id" value="<?php echo $id ?>" id="sup"/>


?

Parce que je crains que tu ne redéfinisses pas $id correctement ...
Sinon tu peux utiliser les cases à cocher pour permettre de multiples sélections (et suppression) !

Les valeurs retournées seront dans un tableau.

Cordialement, Samaël.
0
bonsoir,

en fait ma checkbox est dans une boucle while, cette dernière m'affichant tout les objets de ma base de donnée de tel sorte que je puisse les supprimer individuellement en cochant les checkbox.

Le seul moyen que j'ai trouvé pour différencier les objets cochés est de récupérer leurs id dans ma checkbox. Chaque checkbox doit donc avoir un name unique pour que je puisse utiliser la requete DELETE parceque sinon sa me supprime tout mes objets ! Se problème me travaillle depuis plusieurs jours et sa me rend completement fou !
0
Samaël666 Messages postés 73 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 6 juin 2010 8
7 juil. 2009 à 21:42
On parle de fichiers ou de lignes de base de données ?

Samaël666.
0

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

Posez votre question
Se sont des lignes que je voudrais supprimer.
0
Samaël666 Messages postés 73 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 6 juin 2010 8
7 juil. 2009 à 21:52
Alors il faut utiliser une fonction avec un foreach :

Voici ce que je donnerai :
Je mets les id dans la même variable $_POST['id'] qui sera un tableau
Je crée une boucle qui analyse le contenu du tableau et pour chaque id dans le tableau, supprime ce qui y est associé.

Voici le principe. En pratique ça donne ça :

<input type="checkbox" name="id" value="<?php echo $id ?>" id="sup"/>

nous permettra de récupérer les id dans la bonne variable.

Ensuite, je teste :

if(isset($_POST['id'])
{
--contenu--
}


Enfin je mets la boucle :
foreach ($_POST['id'] as $id)
{
mysql_query('DELETE FROM `table` WHERE `id`='.$id.'');
}
}


Donc on obtient :
if(isset($_POST['id'])
{
foreach ($_POST['id'] as $id)
{
mysql_query('DELETE FROM `table` WHERE `id`='.$id.'');
}
}


Bien sûr il faut changer la table !

Teste et dis moi ce que tu en penses !
Pour la requête exacte, c'est à toi de la reformuler ^^

Cordialement, Samaël666.
0
Merci Samaël de m'aider comme ça c'est très sympa ^^

Pour en revenir à mon problème j'arrive sur une erreur

Warning: Invalid argument supplied for foreach()

pourtant j'ai testé un echo sur $_POST['id'] et il le trouve.
0
Samaël666 Messages postés 73 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 6 juin 2010 8
7 juil. 2009 à 22:05
Oups désolé j'ai trouvé !

J'ai mal nommé la variable, tente avec :
<input type="checkbox" name="id[]" value="<?php echo $id ?>" id="sup"/>


On a pas précisé au système qu'il s'agissait d'un tableau !

Et puis de rien ^^
C'est naturel !

Samaël666.
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
7 juil. 2009 à 22:06
Le foreach prend en paramètre un tableau
là tu utilises une simple variable, donc c'est normal qu'il marche pas ^^
0
Hourra sa marche ! Vous pouvez pas savoir comment je suis content d'y être enfin arrivé ! Avec votre aide bien sur et plus particulièrement celle de Samaël ^^

Les tableaux en php c'est vraiment pas ma tasse de thé :p

Merci encore pour l'aide j'y serais pas arrivé sinon ! Sur ce je vais reprendre le boulot ^^

Bonne fin de soirée

(désolé je ne trouve pas la case "probleme resolue")
0
Samaël666 Messages postés 73 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 6 juin 2010 8
7 juil. 2009 à 22:16
Dans le tout premier post, à côté de éditer et signaler ;)

De rien, bonne chance dans ton projet !

Cordialement, Samaël666.
0