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 :

comptage et affichage de ces données


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut comptage et affichage de ces données
    hello !

    voilà dans mon code ci dessous, je fait une première verif qui compte le nb d'entrées qui m’intéresse
    puis si il y en a, au moins 1,
    je suis obliger de refaire la meme requete (sasn le count) pour ensuite les afficher
    voici comment je fais , vous comment faites vous en général pour traiter ce genre de cas, "quotidien" en php

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    // je compte si il existe des document pour ce projet
    $idUser = $_SESSION['idUser'];
    $reponse2 = $bdd->query("SELECT *, COUNT(*) AS nb_entree
    						FROM doc
    						JOIN projets
    						ON doc.idProjet = projets.idProjet
    						JOIN jointure_user_projets
    						ON projets.idProjet = jointure_user_projets.idProjet
    						JOIN user
    						ON jointure_user_projets.idUser = user.idUser
    						WHERE publierUser = 1
    						AND user.idUser = $idUser
    						AND projets.idProjet = $idProjet
    						ORDER BY nomDoc
    						DESC
    						") or die(print_r($bdd->errorInfo())); //requete
     
    $donnees2 = $reponse2->fetch();
     
    // j'affiche les document concernant ce projet
    if ($donnees2['nb_entree'] > 0) // si il en existe au moins 1
    {
    	$reponse2 = $bdd->query("SELECT *
    							FROM doc
    							JOIN projets
    							ON doc.idProjet = projets.idProjet
    							JOIN jointure_user_projets
    							ON projets.idProjet = jointure_user_projets.idProjet
    							JOIN user
    							ON jointure_user_projets.idUser = user.idUser
    							WHERE publierUser = 1
    							AND user.idUser = $idUser
    							AND projets.idProjet = $idProjet
    							ORDER BY nomDoc
    							DESC
    							") or die(print_r($bdd->errorInfo())); //requete
     
    	echo'<p>Sélectionner vos documents :</p>';
    	echo'<form action="documents-zip.php" method="post" enctype="multipart/form-data">';
     
    	while ($donnees2 = $reponse2->fetch())
    	{
    		echo'<p>
    				<input type="checkbox" id="'.$donnees2['nomDoc'].'" value="'.$donnees2['idDoc'].'" name="checkbox[]">
    				<label for="'.$donnees2['nomDoc'].'"> '.$donnees2['nomDoc'].'</label>
    			</p>';
    	}
    	echo'
    		<input type="submit" class="valider" name="nom" value="Télécharger les documents selectionnés" />
    	</form>';
    }

  2. #2
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 29
    Points : 40
    Points
    40
    Par défaut
    Salut,

    C'est en tout cas ainsi que procède la doc PHP dans la partie PDOStatement::rowCount, dans l'Example#2.

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il n'y a pas lieu normalement de faire 2 fois la même requête SQL.
    Une bonne pratique aussi c'est de stocker dans un 1er temps toutes les données dans un tableau (par exemple) pour après, plus loin l'exploiter dans la partie interface.
    Aussi, faire une requête préparée serait théoriquement mieux que de faire une exécution directe avec query vu qu'il y a des paramètres, surtout une venant de la session, une donnée potentiellement risquée.

    Exemple :
    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
    30
    31
    32
    <?php
    // Taitements
    $idUser = (int)$_SESSION['idUser'];
     
    $donnees2 = array();
     
    $query = 'SELECT ...
    FROM ...
    WHERE user.idUser = :idUser
    ...';
    $sth = $bdd->prepare($query);
    $sth->bindValue(':idUser', $idUser, PDO::PARAM_INT);
    $sth->execute();
    //
    $donnees2 = $sth->fetchAll(PDO::FETCH_ASSOC);
     
    // Interface
    ?>
    <html>
    <head>
        <title>UNE PAGE</title>
    </head>
    <body>
    <?php
    if (!empty($donnees2)) {
        foreach ($donnees2 as $doc) {
            ... etc ...
        }
    }
    ?>
    </body>
    </html>
    Si on souhaite obtenir le nombre total de donnée, on peu faire un count($donnees2).
    On peu aussi faire un $sth->rowCount(), mais ça dépend du SGBD, du driver (ça fonctionne pas pour tout, faut voir).

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    ok tres bien merci
    mais que signifie le (int), en ligne1
    c'est une vérif pour etre sur que la session soit un entier???

    merci

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par artichaudd
    ... mais que signifie le (int), en ligne1
    c'est une vérif pour etre sur que la session soit un entier???
    (int)$variable permet de caster la variable, c'est à dire de "forcer" son type, ou de le définir.
    Donc pour être sûr d'obtenir un entier.

    Idem pour les autres types : (bool), (float), etc ...
    Ca renforce donc le coté sécurité, car pour un (int) par exemple, la valeur obtenue sera 0 dans le pire des cas, ce qui est assez confortable.


    Vu le nom de cette donnée (idUser), je suis partie du principe que cela doit être un entier.

Discussions similaires

  1. Affichage de la donnée n-1
    Par Jahprend dans le forum Access
    Réponses: 4
    Dernier message: 09/06/2006, 16h30
  2. [OpenTBS] Template et affichage dynamique de données
    Par touff5 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/05/2006, 19h16
  3. Comptage de fichiers d'extension donnée
    Par calogerogigante dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 03/05/2006, 10h01
  4. [PHP/MySQL]Comment proteger ces données
    Par steeves5 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/02/2006, 13h04
  5. Réponses: 1
    Dernier message: 19/12/2005, 16h57

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