IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] $_POST avec une variable SQL


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 27
    Points
    27
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST[$produitss['id_produit']];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['.$produitss['id_produit'].'];
    Merci de m'aider.... il ne me reste que cela a faire pour être payer pour mon site.

  2. #2
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Bonjour,

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

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

    @+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<pre>';
    print_r($_GET); // Affiche tout le contenu de la variable $_GET
    echo '</pre>';
    il me renvoie

    Array{
    }
    je suis un peu perdu...

  4. #4
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monpc/monsite/index.php?nom=eric&age=33
    Je récupérerai (dans index.php) mes valeurs comme ceci:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Je sais parfaitement faire des get comme ceci

    Le probleme vient du fait que je met un array en tant que paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

  6. #6
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é !!

  7. #7
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    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.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    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?

  9. #9
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Mon but est donc d'utiliser un array dans un POST
    C'est ce que je t'ai posté au dessus...

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $_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à...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    ecoute je vais essayer ca des que je le peux !!!
    et je te donne la réponse... j'ai pas essayer sans les quote.

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Et en générant le formulaire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    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

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    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.

Discussions similaires

  1. [AC-2007] SQL paramétrée avec une variable déclarée dans la procédure
    Par gentoo dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/06/2014, 17h52
  2. [AC-2007] Comment lier une partie d'une Table Sql Server avec une table Access
    Par mirage3000 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/09/2011, 03h59
  3. Réponses: 5
    Dernier message: 09/07/2008, 17h04
  4. [SQL] Problème avec une requête sql
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 11/05/2007, 17h30
  5. [Access] Expression avec une clause SQL faisant appel à une variable
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/06/2006, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo