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

Langage PHP Discussion :

boucle while qui compte


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut boucle while qui compte
    Bonjour a tous .
    Depuis quelques temps je bloque sur un problème ...
    j'ai une base de données qui contient plusieurs objets a réserver (exemple: ordinateur, souris, multiprise etc.)
    il y a donc x réservation d'ordinateurs, x réservation de multiprise etc
    je cherche donc a déterminer ce fameux x .

    Voila en espérant que vous pourrez m'aidez
    Excellente journée a tous le monde .

  2. #2
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Pourrais on avoir plus d'informations sur ta base de données?
    Comment sont enregistrées les réservations?
    Est-ce quelque chose comme:

    IDReservation | TypeProduit | Date ...

    Si ta base de données est bien faite, tu peux savoir le nombre de réservation en utilisant un simple SELECT COUNT()
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Oui voila c'est exactement ça il y dautre info mais inutile ( date debut date fin nom de la personne qui a reservé etc)
    c'est a dire bien faite ?
    Merci de ta reponse en tout cas

  4. #4
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Pourrais-tu donner le shéma de ta table?
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    ID Nom Prénom Date début Heure début Date retour Heure retour Année Nom_objet

    Voici les champs de ma table

  6. #6
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Je suppose que Nom Prenom sont ceux de la personne qui effectue la réservation et NomObjet celui de l'objet réservé.

    Donc ta table n'est pas bien construite, le mieux serait d'avoir une table comme:
    IdReservation | IdPersonne | IdObjet | DateHeureReservation | DateHeureRetour
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Oui c'est exactement ça.
    Mais je comprend pas quelle est la différence entre id_objet et nom_objet ? Les deux champs caractérise l'objet lui meme.
    Ce qu'il faudrait c'est une boucle qui compte combien il y a de 'multiprises' réservés ...

  8. #8
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Pourrais tu donner quelques lignes d'exemples d'enregistrements de cette table?

    Si c'est:

    1 | 20231 | Multiprise | ... | ...

    Il suffit de faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select count(*) as totalReservation
    From taTable
    Where nomObjet = "Multiprise"
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  9. #9
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Ce que Kreepz veut dire c'est qu'au lieu de tout mettre dans une seule table, il faut l'exploser en trois tables différentes, le but du jeu est notamment d'éviter la redondance des informations. Donc une table pour les réservations, une table pour les objets, et une table pour les personnes:

    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
    table: personne
    colonnes: id (INT clef primaire auto-incrémentée)
              nom
              prenom
     
    table: objet
    colonnes: id (INT clef primaire auto-incrémentée)
              nom
     
    table: reservation
    colonnes: id (INT clef primaire auto-incrémentée)
              idPersonne (clef étrangère de la table personne)
              idObjet (clef étrangère de la table objet)
              dateHeureReservation
              dateHeureRetour
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Merci a vous deux pour votre temps
    Le problème avec ta méthode Kreepz c'est que j'ai plus d'une centaine d'objet, donc je vais eviter de les nommer tous un par un ...

    N° Nom Prénom Date début Heure début Date retour Heure retour Année Nom_objet
    18596 X Y 31/01 10h00 31/01 12h00 2014 Pc
    18416 X Y 31/01 10h00 31/01 12h00 2014 Pc
    18776 X Y 31/01 10h00 31/01 12h00 2014 Pc
    19596 X Y 31/01 10h00 31/01 12h00 2014 Pc
    19996 X Y 31/01 10h00 31/01 12h00 2014 retroprojecteur
    19998 X Y 31/01 13h00 31/01 17h00 2014 Camera

    Combien de fois le pc a t'il était reservé ?
    Combien de fois la camera a t'elle etait reservé ?
    Combien de fois le retro a t'il etait reservé ?

  11. #11
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    La requête que tu cherches est:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT objet, COUNT(*)  
    FROM nomdelatable        
    GROUP BY objet;
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Merci CosmoKnacki mais ou est ce que je récupère le nombre de réservation pour chaque objet dans cette requête ?

  13. #13
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    La colonne COUNT va te renvoyer le total de réservation pour chaque Objet.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    La colonne COUNT ? donc pour l'afficher ça sera ça : ?
    ou il y a un truc que j'ai pas saisi ...

  15. #15
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Non COUNT est une instruction SQL, pas le nom de la colonne, si tu tiens absolument à donner un petit nom tendre à ta colonne de résultat, tu peux le mettre dans la requête:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT objet, COUNT(*) AS total
    FROM lenomdematable
    GROUP BY (objet)

    Un conseil, fait toi quelque tutoriel sur MySQL, ça t'évitera de galérer, il y en a plein sur le site (et ailleurs).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Et ben bravo a vous deux ça marche ! Merci de votre aide !
    une petite question en plus pour le fun si je ne met pas AS total comment pourrai je avoir acces a la valeur de count ?

  17. #17
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas sûr mais je crois que tu peux préciser le numéro de la colonne, avec quelque chose comme ça:

    A vérifier!
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  18. #18
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bah soit tu utilises l'index $result[1] soit tu écris $result['COUNT(*)'] ce qui est plutôt vilain. Un petit print_r($result); devrait éclairer ta lanterne.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  19. #19
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 365
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Un conseil, fait toi quelque tutoriel sur MySQL, ça t'évitera de galérer, il y en a plein sur le site (et ailleurs).
    Est-que l'aide-mémoire que je m'étais écrit le jour où je suis passé des fonctions mysql_xxx à PDO serait utile ?

    Code php : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    //// connexion
    require('MyPdo.php');
    try{
    		$pdo = new MyPDO();
    	}
    catch(PDOException $e){
    		echo "argggggggggggggg".$e->getMessage();
    	}
     
    // MyPDO
     //la classe MyPdo hérite de la classe PDO (extends)
    class MyPdo extends PDO {
    /* on privilégie les var de classe (statiques) aux constantes : ainsi modifiables par programme */
    	static public $DB_NAME = "xxx";
     
    	static public $HOST = "xxx";
     
    	static public $USER = "xxx";
     
    	static public $PASS = "xxx";
     
     
     
    // le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
    	function __construct() {
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
    	$pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
    	$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
     
    	parent::__construct('mysql:host=' . MyPdo::$HOST . ';dbname=' . MyPdo::$DB_NAME, MyPdo::$USER, MyPdo::$PASS, $pdo_options);
    	}
     
    }
    // fin MyPDO
     
     
    //// Effectuer une query et un fetch
    $query = 'SELECT * FROM foo WHERE bar=1;';
    $arr = $pdo->query($query)->fetch(); //Sur une même ligne ...
     
     
    //// Effectuer une query et un fetchAll
    $query = 'SELECT * FROM foo WHERE bar<10;';
    $stmt = $pdo->query($query);
    $arrAll = $stmt->fetchAll(); //... ou sur 2 lignes
     
    //// Effectuer un exec
    $query = 'DELETE FROM foo WHERE bar<10;';
    $rowCount = $pdo->exec($query);
     
    //// nb de lignes (mysql_num_rows)
    $query = 'DELETE FROM foo WHERE bar<10;';
    $rowCount = $pdo->exec($query);
    $nb_lignes=$rowCount->rowCount();
     
    // nb de lignes pour un select
    $sql='select * from `users` order by nom';
    $qid = $pdo->query($sql);
    //test de mysql_num_rows
    $num_rows=0;
    while( $ligne=$qid->fetch(PDO::FETCH_OBJ) ) $num_rows++;
    $pdo=NULL;
    echo "nb de lignes=".$num_rows;
     
    ou :
     
    $sql = "SELECT COUNT(*) AS compte FROM `infotech`";
    $qid = $pdo->query($sql);
    $row=$qid->fetch(PDO::FETCH_OBJ);
    $nrows=$row->compte;
     
     
     
    // exécuter un select puis afficher les lignes
    $sql='select * from `conf` order by lastname';
    $qid = $pdo->query($sql);
    while( $ligne=$qid->fetch(PDO::FETCH_NUM) )...
     
    // exécuter un select puis mettre les données en tableau associatif
    $sql='select * from `conf` order by lastname';
    $qid = $pdo->query($sql);
    $data = $qid->fetchAll(PDO::FETCH_ASSOC); 
    echo $data[0]["name"]; // tableau à 2 dimensions
     
    // filtrage affichage erreurs
    error_reporting(E_ALL^E_NOTICE^E_DEPRECATED);
     
    //affichage erreur PDO
    print_r(pdo->errorInfo());
     
    //requête préparée
    $query = 'DELETE FROM foo WHERE id=?';
    $qid=$pdo->prepare($query);
    $qid(execute(array($id));
     
    ou 
     
    $query = 'DELETE FROM foo WHERE (id=:id)';
    $qid=$pdo->prepare($query);
    $qid(execute(array(':id'=>$id));
    ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/09/2019, 16h45
  2. [MySQL] Boucle while qui me fait des misères
    Par joboy84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/08/2009, 14h40
  3. boucle while qui ne s'arrete pas à la lecture d'un zero
    Par malikoo dans le forum Général Python
    Réponses: 14
    Dernier message: 04/07/2007, 10h48
  4. Boucle While qui ne se termine jamais.
    Par ChiPi' dans le forum SGBD
    Réponses: 4
    Dernier message: 08/06/2007, 19h48
  5. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42

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