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 :

Variable dans une boucle + Afficher le nombre de colonnes [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut Variable dans une boucle + Afficher le nombre de colonnes
    Bonjour à tous, je suis en train de créer un site e-commerce et j'ai besoin de récupérer les codes que je vends pour les envoyer aux acheteurs par email.
    Mon code récupère donc le dernier code entré dans la table correspondante au produit acheté (1mois, 2mois, 6mois, 1an). Par la suite j'enverrai ce code par mail à l'acheteur.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
    session_start();
    $_SESSION['produit']='1mois';
    ?>
     
    <?php
     
    	try
    	{
    		$bdd = new PDO('mysql:host=localhost;dbname=test1;charset=utf8', 'root', '');
    	}
    	catch (Exception $e)
    	{
    		die('Erreur : ' .$e->getMessage());
    	}
     
     
    	$reponse = $bdd->query('SELECT code FROM '.$_SESSION['produit'].' ORDER BY id DESC LIMIT 0,1');
    /* affiche le dernier code de la table 1mois */
    	while ($donnees = $reponse->fetch())
    	{
    		$code = $donnees['code'];
    	}
     
    	echo $code;
    ?>
     
    <!-- code pour séléctionner le dernier code :
    SELECT code FROM 1mois ORDER BY id DESC LIMIT 0,1 -->
    Le problème c'est que mon code n'est pas stocké dans ma variable $code à cause de la portée des variables dans une boucle. Comment le récupérer ?


    De plus je voudrai récupérer le nombres de code restants, je compte donc le nombre de colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* Code placé sur la page du produit pour empêcher la commande si les stocks sont épuisés.
    Récupération du nombres de colonnes restantes */
    	$nbColonne = $bdd->query('SELECT COUNT(*) FROM '.$_SESSION['produit'].'');
    	while ($reste = $nbColonne->fetch())
    	{
    		echo $reste['count'];
    	}
    Mais le problème c'est que je ne sais pas dans quel case du tableau est renvoyé la valeur. J'ai mis count mais j'obtiens :
    Undefined index: count

    Merci beaucoup pour votre aide et bonne journée

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas de portée différente dans une boucle.
    De toute façon la boucle ne sert pas puisqu'il n'y a qu'un seule résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse = $bdd->query('SELECT code FROM '.$_SESSION['produit'].' ORDER BY id DESC LIMIT 0,1');
    $donnees = $reponse->fetch(PDO::FETCH_ASSOC))
    $code = $donnees['code'];
    Si tu ne recupères pas le code, c'est que ta requête ne fonctionne pas.

    Pour le COUNT, tu ne recupères pas un "count" mais "count(*)".
    Tu peux plus simplement utiliser fetchColumn :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nbColonne = $bdd->query('SELECT COUNT(*) FROM '.$_SESSION['produit'].'');
    $reste = $nbColonne->fetchColumn(0)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Merci beaucoup pour ton aide Sabotage, tout marche parfaitement. Pourrai tu m'expliquer ce que veut dire :
    fetch(PDO::FETCH_ASSOC)
    EDITE: j'ai trouvé ça "PDO::FETCH_ASSOC: retourne un tableau indexé par le nom de la colonne comme retourné dans le jeu de résultats" mais je ne comprend pas biens.
    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un exemple des différents résultats obtenus en fonction du type de fetch :
    http://php.net/manual/fr/pdostatement.fetch.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Je vais y jeter un oeil, merci beaucoup pour ton aide

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

Discussions similaires

  1. [ANT] affectation de variables dans une boucle
    Par dino_xrc dans le forum ANT
    Réponses: 6
    Dernier message: 17/12/2007, 19h47
  2. [VB.net] Declaration variable dans une boucle for
    Par nico10gbb dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/05/2006, 11h45
  3. Réponses: 6
    Dernier message: 17/03/2006, 12h23
  4. Réponses: 3
    Dernier message: 01/09/2005, 11h56
  5. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23

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