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 :

mauvais resultats affichés sql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut mauvais resultats affichés sql
    bonjour,
    voila j ai creer une class categories avec cette fonction qui permet de recuperer les elements de la table categories de ma base:
    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
    public function getById()
    	{
     
    		$req="SELECT * FROM achatsenfolie__categorie where id_categorie is NULL";
    		//echo $req
    		$reponse = mysql_query($req)or die ('Erreur : '.mysql_error());
     
    		while($donnees=mysql_fetch_array($reponse))
    		{
     
    return $this->id=$donnees['id'];
    						$this->id=$donnees['id'];
                            $this->titre=$donnees['titre'];
                            $this->description=$donnees['description'];
                            $this->estDansMenu=$donnees['estDansMenu'];
                            $this->estDansContact=$donnees['estDansContact'];
                            $this->estVisible=$donnees['estVisible'];
                            $this->Categorie=$donnees['id_categorie'];
                   }
    	}
    voci l appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $objet = new categorie;
    echo (' <li class="odd">');
    echo $objet->getById();
    echo ('</li>');
    donc je fais un test et ca me retourne bien un numero mais le 1.
    Mais normalement je devrait en avoir bc plus, j ai tester la requete sur la base directement et ai bien apparut plusieurs resultats, alors pourquoi lui n affiche que le 1 resultats je ne comprend pas.
    Merci

    j ai tester en mettant echo a la place de return dans la fonction et ca a fonctionner pourquoi?
    est ce correcte?
    merci.

  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
    Par défaut
    return termine la fonction, il doit être appellé en dernier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($donnees=mysql_fetch_array($reponse)) {	
        return $this->id=$donnees['id'];
        ... etc ...
    }
    Mise à part le problème du return, ici tu ré-affecte (ou écrase) chaque propriété ($this->id par exp.) à chaque tour de boucle, se qui fait que ce les valeurs seront obligatoirement celle de la dernière ligne.

    Si tu veux que ça retourne toutes les lignes (plusieurs lignes et non 1 seul), et bien il faudrait les stocker dans un tableau, et à la fin le retourner.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function getById() {
        $donnees = false;
        ... etc ...
        while($donnee = mysql_fetch_array($reponse)) {	
            $donnees[] = array('id' => $donnees['id'],
                               'titre' => $donnee['titre'],
                               'description' => $donnees['description'],
                               ... etc ...
                               'Categorie' => $donnees['id_categorie']);
        }
        return $donnees;
    }
    Sinon, si tu veux récupérer les valeurs des champs d'1 seule ligne, alors faire une boucle ne sert à rien.
    De plus, si tu compte réellement ré-affecter les valeurs des proprités (id, titre, etc ...), alors un return ne sert à rien aussi.

    Faudrait voir ce que tu souhaite faire, car à l'origine il y a ceci : WHERE id_categorie is NULL
    C'est quand même bizarre de vouloir récupérer des identifiants nulles. Théoriquement un champ de type ID ne peu pas (ou ne doit pas) être nulle, vu que ça devrait être une clé primaire ou clé étrangère.

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    bonjour,
    voila comme je disais je debute en php5, en faite je voulais afficher un menu dont les titre serait afficher grace a la table sql.Je ne savais pas trop par ou commencer donc j ai créer cette fonction, merci encore pour le tableau mais je n ai tj rien qui s'affiche:
    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
    	public function getById() {
        $donnees = false;
        $reponse = mysql_query("SELECT * FROM ".self::TB_PREFIX."categorie")or die ('Erreur : '.mysql_error());
        while($donnees = mysql_fetch_array($reponse)) {	
    		$donnees[] = array(
    							'id' => $donnees['id'],
                               'titre' => $donnees['titre'],
                               'description' => $donnees['description'],
                               'estDansMenu' => $donnees['estDansMenu'],
    							'estDansContact'=> $donnees['estDansContact'],
    						'estVisible'=> $donnees['estVisible'],
     
                               'Categorie' => $donnees['id_categorie'],
    						   );
        }
        return $donnees;
    }
    si vous avez d'autre solution a part mes fonction a moi je suis preneuse, car je pense aussi que ma fonction n est pas le meilleur moyen au debut je voulais utiliser le getTitre en recuperant avant l id mais je n'ai pas reussit, de plus je ne sais pas si c est la meilleur solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function getTitre() {
    		return (string) $this->titre;
    	}
    merci de tout l aide que vous pourrez m apporter.

Discussions similaires

  1. [Toutes versions] Resultat requete SQL a afficher dans Excel
    Par yoyoz dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/02/2011, 11h45
  2. [MySQL] requete qui affiche mauvais resultat
    Par caro71ol dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/02/2011, 10h07
  3. vba: afficher resultat requete sql
    Par ToTo develop dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/07/2008, 13h08
  4. resultat requete SQL d'un select dans variable vb
    Par seb_06 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 11/10/2004, 16h29
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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