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 :

requette preparé n'affichant que la premiere lettre des categories [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut requette preparé n'affichant que la premiere lettre des categories
    bonsoir a tous,

    me mettant a la requette preparer j'ai decidé de modiffié toute mes pages mai la je rencontre un probleme minim que je n'arrive pas a resoudre malgres differentes lectures de forum et manuel sur la requette préparer donc le probleme est le suivant :

    avant de commencer je precise que ce code fonctionne tres bien avec une requette simple mais dans le cas d'une requette preparé il fonctionne aussi mis a par l'afichage des noms des categories sa ne m'affiche que la premiere lettre des noms.

    requette :
    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
    $sth = $dbh->prepare('SELECT NomForum, DescriptifForum, LogoForum, NomCategorie,IdForCat,IdCategorie
    					 FROM categorie
    					 LEFT JOIN forum ON IdForCat=IdCategorie GROUP BY IdForum');
     
     
     
     
    $sth->bindValue(':NomCategorie', PDO::PARAM_STR);
    $sth->bindValue(':NomForum',  PDO::PARAM_STR);
    $sth->execute();                      
     
    while($row = $sth->fetch(PDO::FETCH_ASSOC)){
    $categorie = $row['NomCategorie'];
    $tableau[$categorie][] = $row;
    }
    et la l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foreach($tableau as $NomCategorie=>$valeur){
     
    echo $NomCategorie['NomCategorie'];
     
    foreach($valeur as $souscategorie){
     
    echo $souscategorie['NomForum'];
     
    }
    }

    pouriez vous me dir si il y a une erreur dans ce code pour une requette preparé?


    je vous remerci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    fais un SUBSTR sur la première colonne, et utilise PDO::FETCH_GROUP, t'aura même pas besoin de faire de foreach
    par contre ton bindvalue n'est pas bon, ca prendre 3 paramètres regarde la doc

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    fais un SUBSTR sur la première colonne, et utilise PDO::FETCH_GROUP, t'aura même pas besoin de faire de foreach
    par contre ton bindvalue n'est pas bon, ca prendre 3 paramètres regarde la doc

    merci pour ta reponse je vai tester et pour ce qui est des trois parametre je vien d'y jeter un oeuil parcontre aucune idee de ce que je doi mettre pasque dans leur exemple il mette une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    /* Exécute une requête préparée en associant des variables PHP */
    $calories = 150;
    $couleur = 'rouge';
    $sth = $dbh->prepare('SELECT nom, couleur, calories
        FROM fruit
        WHERE calories < :calories AND couleur = :couleur');
    $sth->bindValue(':calories', $calories, PDO::PARAM_INT);
    $sth->bindValue(':couleur', $couleur, PDO::PARAM_STR);
    $sth->execute();
    ?>
    hors moi je n'utilise pas de variable alor la je ne sai pas dutout ce que je dois mettre

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    si t'as pas de valeur a mettre ca ne sert a rien de faire une requete preparée, utilise direct PDO->query

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    si t'as pas de valeur a mettre ca ne sert a rien de faire une requete preparée, utilise direct PDO->query
    ok stealth35 merci du conseil je vais tester tous ca

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut
    apres multiple teste le probleme ne change pas meme avec un PDO->query
    je comprend pas le probleme

    mai ce que je trouve bizar c'est que quand je fait une requette simple de base sa marche nikel

    le probleme viendrai t-il de PDO->query ? ou de la boucle foreach?
    je suis coincé.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    montre ton code

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    montre ton code
    le voi ci j'ai juste changer "prepar" par query je c'est pas si c'est exactement ce que t'a voulu me dir par "met directement un query" je suis perdu entre tous ces nouveau truk pdo,mysqli... c'est confus dans ma tete lol

    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
    $sth = $dbh->quey('SELECT NomForum, DescriptifForum, LogoForum, NomCategorie,IdForCat,IdCategorie
    					 FROM categorie
    					 LEFT JOIN forum ON IdForCat=IdCategorie GROUP BY IdForum');
     
     
     
     
    $sth->bindValue(':NomCategorie', PDO::PARAM_STR);
    $sth->bindValue(':NomForum',  PDO::PARAM_STR);
    $sth->execute();                      
     
    while($row = $sth->fetch(PDO::FETCH_ASSOC)){
    $categorie = $row['NomCategorie'];
    $tableau[$categorie][] = $row;
    }
     
    //ci dessous l'affichage
     
    foreach($tableau as $NomCategorie=>$valeur){
     
    echo $NomCategorie['NomCategorie'];
     
    foreach($valeur as $souscategorie){
     
    echo $souscategorie['NomForum'];
     
    }
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut
    meme en modiffiant en mysqli j'ai le meme probleme!!!


    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
    $resultat = $connexion->query('SELECT NomForum, DescriptifForum, LogoForum, NomCategorie,IdForCat,IdCategorie
    					 FROM categorie
    					 LEFT JOIN forum ON IdCategorie=IdForCat GROUP BY IdForum');
     
    $connexion->close();
     
    while($ligne = $resultat->fetch_assoc()){
    $categorie =$ligne['NomCategorie'];
    $tableau[$categorie][] = $ligne;
    }
     
    foreach($tableau as $NomCategorie=>$valeur){ 
    echo $NomCategorie['NomCategorie'];
     
    foreach($valeur as $souscategorie){
    echo $souscategorie['NomForum'];
     
     }
    }

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Points : 55
    Points
    55
    Par défaut
    finalement j'ai viré le foreach qui me posais probleme et j'ai opter pour les condition dans une boucle while sa a regler le probleme je sais pas si c'est mieux mai en tout ca sa fonctionne lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($ligne = $resultat->fetch_array()){ 
    	if ($categorie != $ligne['NomCategorie']) {
    		$categorie = $ligne['NomCategorie'];
    		$forum = "";....

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/08/2011, 13h06
  2. [MySQL] PHP n'affiche que le premier mot
    Par skins dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 13/04/2010, 13h51
  3. [AC-2003] n'afficher que le premier intervalle d'un regroupement
    Par CassElilot dans le forum IHM
    Réponses: 2
    Dernier message: 24/03/2010, 16h44
  4. [WD14] Libellé n'affiche que la première lettre
    Par odoine dans le forum WinDev
    Réponses: 7
    Dernier message: 01/09/2009, 18h37
  5. [MySQL] Ma textbox n'affiche que le premier mot.
    Par SweetLeaf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/07/2008, 17h06

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