Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/05/2007, 23h21   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
Par défaut [SQL] $_POST avec une variable SQL

Bonjour,

j'ai un formulaire généré en php.
Le nom de l'input correspondent à l'ID d'un article :

exemple :

Un café possède l'ID 1.
Le nom de l'input est donc 1.

Le problème vient du fait que je n'ai pas forcement une suite continue de chiffre (c'est un id_auto).

une fois mon formulaire validé, je dois donc récuperer toutes les informations dans des $_POST donc je ne connais pas totalement le nom (hé oui, il y en a certain qui n'existe pas... le 2 par exemple peut avoir été supprimé).

pour afficher le resultat j'ai une boucle avec un mysql_fetch_array.
La boucle fonctionne bien, cependant je n'arrive pas a afficher une informations avec le code ci dessous :
Code :
echo $_POST['"'.$produitss['id_produit'].'"'];
$produitss['id_produit'] correspond à l'id du produit tel qu'il est dans le formulaire précedent.

J'ai essayé toute les syntaxes possible :
Code :
echo $_POST[$produitss['id_produit']];
Code :
echo $_POST['.$produitss['id_produit'].'];
Merci de m'aider.... il ne me reste que cela a faire pour être payer pour mon site.
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 00h19   #2
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Bonjour,

Une solution... d'abord regarder la FAQ PHP de ce site...

http://php.developpez.com/faq/?page=..._verif_contenu

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 00h26   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
Merci de ta réponse si rapide et encore désolé de ne pas avoir lu la FAQ en entière...
je viens de faire ce que me disait la FAQ !

j'ai mis comme code :

Code :
1
2
3
4
 
echo '<pre>';
print_r($_GET[$produitss['id_produit']]); // Affiche tout le contenu de la variable $_GET
echo '</pre>';
et il ne me renvoie rien .

Si je met seulement

Code :
1
2
3
4
 
echo '<pre>';
print_r($_GET); // Affiche tout le contenu de la variable $_GET
echo '</pre>';
il me renvoie

Citation:
Array{
}
je suis un peu perdu...
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 00h44   #4
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
La variable "superglobale" $_GET est un tableau associatif (une clé donne accès à une valeur) qui contient l'ensemble des paramètres passés dans l'URL (avec $_POST c'est la même sauf que le paramètres ne sont pas passés 'en clair' dans l'URL).

Donc si ton URL est comme ceci:

Code :
http://monpc/monsite/index.php?nom=eric&age=33
Je récupérerai (dans index.php) mes valeurs comme ceci:

Code PHP :
1
2
echo $_GET['nom']; // pour mon nom
echo $_GET['age']; // pour mon age

Si
Donne un tableau vide c'est qu'il y a un problème en amont ... dans ton formulaire par exemple.

Un petit conseil: reste en GET dans un premier temps (cela te permet de voir que les paramètres sont effectivement passés).

Bon courage.
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 10h39   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
Je sais parfaitement faire des get comme ceci

Le probleme vient du fait que je met un array en tant que paramètre :
Code :
1
2
3
4
5
 
while(mysql_fetch_array....)
{
echo $_POST['$produitss['test']];
}
A ce moment la je n'ai plus d'info qui apparaissent et j'ai vérifier le contenu qui s'affiche, j'obtien :
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 12h05   #6
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Citation:
Le probleme vient du fait que je met un array en tant que paramètre :
Désolé je ne comprends pas ce que tu veux faire... pourquoi mettre un array en tant que paramètre et si tu as une bonne raison qu'est-ce qu'il contient...

Si tu as des données dans ton tableau la syntaxe exacte serait:

Code :
1
2
$produitss = array('test'=>'savon')
echo $_POST[$produitss['test']];
Reviendrait à ce code:

[CODE]echo $_POST['savon'];[/CODE

... mais là je comprends pas vraiment la finalité !!
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 02h37   #7
Membre confirmé
 
Avatar de max44410
 
Étudiant
Inscription : juin 2003
Messages : 426
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2003
Messages : 426
Points : 259
Points : 259
Envoyer un message via MSN à max44410 Envoyer un message via Skype™ à max44410
Citation:
Envoyé par heruwenli
Je sais parfaitement faire des get comme ceci
Je pense que tu ne sais pas de quoi tu parles ... il faudrait peut etre te renseigner ...
Pour info $_POST ce n'est pas $_GET

Je sais pas si c'est normale, mais ya des fautes de syntaxe partout ...

Quelle est la finalité de ta question ?? qu'est ce que tu veux faire ???
Je pense que tu n'ai pas sur la bonne voie.
__________________
Venez voir par là...
max44410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 09h15   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
Je sais la difference entre GET et POST c'est juste que je suis sur plusieurs projet a la fois et yen a un il y a beaucoup de post et l'autre je bloque sur des operation avec des GET

Donc je vais re expliquez.
J'ai un formulaire dynamique (le nom des "input" correspond a un ID (qui est stocker dans une base de données) et je voudrais donc récuperer les données dans les post que j'ai rempli.

Mon but est donc d'utiliser un array dans un POST

$_POST['$produits['mon_id']'];

mais ca ne marche pas.... quelqu'un aurais une solution?
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 09h54   #9
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Citation:
Mon but est donc d'utiliser un array dans un POST
C'est ce que je t'ai posté au dessus...

Code PHP :
$_POST['$produits['mon_id']];

Non ce n'est pas bon, il y a une erreur de syntaxe ta quote avant $produits n'a rien à faire là...
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 10h24   #10
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
ecoute je vais essayer ca des que je le peux !!!
et je te donne la réponse... j'ai pas essayer sans les quote.
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 11h44   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Et en générant le formulaire ainsi :
Code :
1
2
3
4
5
6
7
echo '<form method="post">';
$query = mysql_query('SELECT id,intitule FROM produits');
while ($array = mysql_fetch_assoc($query)) {
    printf('<input type="checkbox" name="produits[%d]" value="%s" />%s<br/>', $array['id'], $array['intitule'], $array['intitule']);
}
echo '<input type="submit" value="Valider" />';
echo '</form>';
Parcours de la sélection :
Code :
1
2
3
4
echo "Sélection :<br/>";
foreach ($_POST['produits'] AS $k => $v) {
    echo "$k =&gt; $v<br/>";
}
C'est uniquement le principe que je montre !
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 11h53   #12
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 13
Points : 13
je comprend pas trop ton code....
Désolé...
peut tu le commenter un petit peu plus...
Par exemple pourquoi on utilise un for each... que je ne connaissais pas en php...

Merci beaucoup
heruwenli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 16h38   #13
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Au lieu de parcourir votre base pour savoir ce qui a été fait au niveau du formulaire, le but consiste à créer un tableau pour regrouper le résultat des champs similaires. Il nous suffit finalement de parcourir ce sous-tableau de $_POST.

Par exemple j'ai un formulaire pour supprimer des produits de mon catalogue en ligne (l'attribut value désignant son identifiant) :
Code HTML :
1
2
3
4
5
6
<form method="post">
    <input type="checkbox" name="produits[]" value="1" /> Fraises Gariguette<br />
    <input type="checkbox" name="produits[]" value="2" /> Cerises Griottes<br />
    <!-- ... -->
    <input type="submit" name="Supprimer" />
</form>
Remarquez la présence des crochets dans l'attribut name de la balise input, c'est ce qui vous permet de récupérer le résultat en PHP sous la forme d'un tableau. Si vous faites un print_r sur $_POST['produits'] vous obtiendrez alors un tableau contenant les clés de ces produits :
Code X :
1
2
3
4
# On coche les deux :
Array(1, 2)
# Un seul est coché (ici les Cerises) :
Array(2)
Donc on peut faire une suppression des produits sélectionnés ainsi :
Code :
mysql_query('DELETE FROM produits WHERE prod_id IN(' . implode(',', $_POST['produits']) . ')');
On peut également choisir les clés du tableau (ici leur identifiant et la valeur permet de fixer la quantité) :
Code HTML :
1
2
3
4
5
6
<form method="post">
    <input type="text" name="produits[1]" value="1" /> Fraises Gariguette<br />
    <input type="text" name="produits[2]" value="1" /> Cerises Griottes<br />
    <!-- ... -->
    <input type="submit" name="Commander" />
</form>
Utilisation :
Code :
1
2
3
4
5
6
7
<?php
if ($_POST) {
    foreach ($_POST['produits'] as $k => $v) {
        echo "Vous avez demandé $v fois le produit identifié par $k<br/>";
    }
}
?>
Exemple :
Citation:
Vous avez demandé 3 fois le produit identifié par 1
Vous avez demandé 6 fois le produit identifié par 2
Note : les clés et les valeurs ne sont pas forcément numériques.

C'est plus performant et on s'y retrouve plus facilement ainsi, non ? Quant au parcours d'un tableau (ou objet ) avec foreach c'est un mécanisme de base incontournable du langage que l'on trouve depuis PHP 4, je vous recommande de l'expérimenter pour assimiler son fonctionnement.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h07.


 
 
 
 
Partenaires

Hébergement Web