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 :

requete, while, boucle, variable [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut requete, while, boucle, variable
    Bonjour,

    je me retrouve face à un petit problème et j'aurais si possible besoin de votre aide pour trouver une solution à celui-ci... Je vous explique :

    J'ai une base de données avec notement 2 tables :
    - commande
    - details

    Quand un acheteur passe une commande sur mon site (c'est théorique, je ne monte pas une boutique, j'apprends !) la commande sera inscrite dans la table commande et les produits de cette commande seront affichés dans la table détails avec la référence de la commande.

    Une fois que le client aura payé, un email automatique et indépendant devra partir pour lui confirmer sa commande, et c'est la que le problème se pose.

    Pour récupérer la commande, pas de problème il n'y en a qu'une, donc je peux enregistrer les variables de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Code:
    //sélection de la réservation
    $result = mysql_query("SELECT * FROM commande WHERE email = '$email' AND timestamp = '$order'");
    while ($row = mysql_fetch_array ($result) )
    {
    $idcommande = $row['id'] ;
    $prixcommande = $row['prix'] ;
    etc...
    }
    Sauf que pour la table details, je vais avoir plusieurs produits à récupérer, et donc ma boucle while va bouclé à plusieurs reprises (produit1, produit2, etc...). Comment récupérer les données de ces produits (id, prix, etc...), car si un simple echo aurait fonctionné en temps normal pour afficher tout celà, ici je dois récupérer celà sous forme de variable pour les intégrer dans ma variable message de l'envoi d'email, et là je bloque ??!

    Quelqu'un pour m'aider à trouver une solution ?? ou à m'orienter vers une piste ???


    Merci d'avance ! a+

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    j'ai pas regardé le code, mais d'apres ta question, il suffit de concaténer dans une variable au lieu de faire un echo...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $tmp = '';
    while(...)
    {
        $tmp .= 'texte supplementaire';
    }
    et a la fin, $tmp contient tout ton texte et tu peux l'envoyer !

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut
    En fait non, je souhaite récupérer dans des variables toutes les lignes de ma table qui contienne l'id commande correspondant.

    Donc je dois certainement faire un tableau avec ces variables ou quelque chose comm ça, voi d'autres pistes, pour pouvoir stocker toutes les données de ma requete et de ma commande (produit 1 : id + prix + quantite ; produit 2 : id + prix + quantite dans des variables.

    Est-ce que c'est plus parlant ? Merci de ta réponse en tout cas !

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    C'est exactement ce que je te propose de faire, faut juste penser a remplacer texte supplémentaire par autre chose et mettre des vrais boucle avec des vrai requetes autour...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $tmp = '<table><tr><td colspan="3">Commande N°'.$id_commande.'</td></tr>';
    $r = musql_query('select * from cmd, articles where cmd.facture = '.$id_commande.' and article.id = cmd.id');
    while($a = mysql_fetch_assoc($r))
    {
       $tmp .= '<tr><td>'.$a['nom_article'].'</td><td>'.$a['qte_cmd'].'</td><td>'.($a['qte_cmd'] * $a['prix_article']).'</td></tr>';
    }
    $tmp .= '</table>';
     
    echo $tmp;

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    ben oui tu fais un tableau et tu renseignes les lignes de ton tableaux en fonction de ce que tu veux...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    + 1. La concaténation est le meilleur choix.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut
    Merci beaucoup, j'ai testé, c'est en effet parfait...

    J'aurais juste besoin d'un autre conseil à ce propos, sans doute que certains pourront m'aiguiller en une phrase.

    Par rapport au code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $tmp = '<table><tr><td colspan="3">Commande N°'.$id_commande.'</td></tr>';
    $r = musql_query('select * from cmd, articles where cmd.facture = '.$id_commande.' and article.id = cmd.id');
    while($a = mysql_fetch_assoc($r))
    {
       $tmp .= '<tr><td>'.$a['nom_article'].'</td><td>'.$a['qte_cmd'].'</td><td>'.($a['qte_cmd'] * $a['prix_article']).'</td></tr>';
    }
    $tmp .= '</table>';
     
    echo $tmp;
    Là, à chaque nouvelle sélection SQL, on insère une nouvelle ligne (TR) avec sa colonne (TD). Comment faire pour insérer une nouvelle ligne (TR) seulement toutes les 3 sélections, pour avoir un résultat son cette forme avec la requête précèdente :

    Résultat 1 ; Résultat 2 ; Résultat 3 (insérer TR)
    Résultat 4 ; Résultat 5 ; Résultat 6 (insérer TR)
    Résultat 7 ; Résultat 8 ; Résultat 9 [I]
    etc...

    Une idée ?

  8. #8
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $i=1;
    while($a = mysql_fetch_assoc($r))
    {
        if ($i = 3) {
            $tmp .= '</tr><tr><td>'.$a['nom_article'].'</td><td>'.$a['qte_cmd'].'</td><td>'.($a['qte_cmd'] * $a['prix_article']).'</td>';
            $i=1;
        }
        else
        {
            $tmp .= '<td>'.$a['nom_article'].'</td><td>'.$a['qte_cmd'].'</td><td>'.($a['qte_cmd'] * $a['prix_article']).'</td>';
        }
    $i++;
    }
    $tmp .= '</tr></table>';
    Non?^^

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut
    Ok merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete en boucle si variable déjà présente dans BDD
    Par Augustule dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2010, 22h48
  2. Filtrer une requete avec une variable array
    Par hugo69 dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/11/2005, 14h33
  3. pb requete avec boucle
    Par kidu dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/08/2005, 14h27
  4. [ADO] requete contenant une variable ?
    Par kam dans le forum MFC
    Réponses: 9
    Dernier message: 28/04/2004, 11h08
  5. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54

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