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 :

Problème avec mysql_fetch_object [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut Problème avec mysql_fetch_object
    Bonjour,
    ma classe est faite comme ceci :
    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
    <?php
     
    Class Classe
    	{
     
    		private $numclass;
    		private $nombre;
     
     
    		public function __construct(num, nbr)
    			{
                    $this-> numclass=$num;
                    $this-> nombre=$nbr;
     
    			}			
    		//accesseurs
    		public function getnumclass (){
    			return $this->numclass;		
    		}
    		public function getnombre (){
    			return $this->nombre;		
    		}
     
    public static function mafonction ($value) {
    $i = 0;
    $j = 0;
    $req = "Requete 1 SELECT WHERE exemple = $value....";			
     
    			$resultat = mysql_query($req);
    			while($row = mysql_fetch_assoc($resultat)) {
    				Je remplis le premier tableau
                                    $resultats = $row ...
     
    			}			
    			while($row = mysql_fetch_object($resultat)) {
    				$tab[$j] = $numclass=$row->numclass;
    				$tab[$j] = $nombre=$row->nombre;
    				$j++;
    			}
    			//echo $tab[0]->getnumclass;
    return $resultats
    }
    ?>
    J'appel ma fonction dans un autre fichier php comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classe::mafonction($value)
    J'ai 3 erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Notice: Undefined property: stdClass::$numclasse in ...
    Notice: Undefined property: stdClass::$nombre in ...
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Trying to get property of non-object in ...
    Je pense que les erreurs viennent du mysql_fetch_object.
    Qu'en dites vous ?

  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 726
    Points
    10 726
    Par défaut
    deja tu peux pas faire deux while pour une requete, ensuite $numclasse n'existe pas , $j n'existe pas, y'a pas function devant mafonction

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    C'est corrigé par contre je ne peux pas récupérer dans deux tableaux différents les résultats d'une requête ?
    Je dois refaire un mysql_query($req);
    puis faire mon while pour mon mysql_fetch_assoc ?

  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 726
    Points
    10 726
    Par défaut
    non dans ce cas la met tout dans la même boucle

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    En définitive, il me faut un tableau (mysql_fetch_assoc) avec des données string et un tableau d'objets(mysql_fetch_object). Comment je fais pour tout mettre dans la même boucle ?

  6. #6
    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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par PooSoft Voir le message
    En définitive, il me faut un tableau (mysql_fetch_assoc) avec des données string et un tableau d'objets(mysql_fetch_object). Comment je fais pour tout mettre dans la même boucle ?
    tu comprends comment marche le while ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    Visiblement pas tout à fait.

  8. #8
    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 726
    Points
    10 726
    Par défaut
    à chaque appelle de mysql_fetch_* tu récupéres une ligne de résultat donc en gros tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $result1 = mysql_fetch_assoc($query);
    $result2 = mysql_fetch_assoc($query);
    $result3 = mysql_fetch_assoc($query);
    ...
    $resultN = mysql_fetch_assoc($query);
    quand il n'y a plus de ligne à lire mysql_fetch_* renvoie false

    quand tu fais une condition avec un =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($result1 = mysql_fetch_assoc($query))
    c'est comme si tu faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $result1 = mysql_fetch_assoc($query)
    if ($result1)
    donc si $resulat est un tableau/objet (non vide) la condition est a true
    si $resulat est vide, faux, la condition est à false

    while tourne tant que la condition est à true et s’arrête quand c'est a false

    c'est pour ça que tu ne peux pas faire deux while puisque tout les resulats sont sorties le prochain while ne tournera donc pas


    visible ta fonction renvoie en plus le premier resulat $tab[0] donc ca sert a rien de faire une boucle

    ps : et je te conseil de mettre ton niveau d'erreur au maximum, parce que ton code à beaucoup de fautes
    ton code mélange aussi le statique/instance

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    D'accord merci pour l'explication, par contre l'echo dans ma fonction c'était pour tester justement si mon deuxième while marchait.
    Comment je règle le niveau d'erreur de mon code ?
    J'ai trouvé ça sur la doc php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (($row=mysql_fetch_assoc($r1))||($row=mysql_fetch_assoc($r2)))
    Je vais essayer.

  10. #10
    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 726
    Points
    10 726
    Par défaut
    ton deuxième while ne marchera jamais

    c'est ça que tu veux faire ?

    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
    class Classe
    {
        private $numclass;
        private $nombre;
     
        public function getNumclass()
        {
            return $this->numclass;
        }
     
        public function getNombre()
        {
            return $this->nombre;
        }
     
        public static function mafonction($value) 
        {
            $req = "Requete 1 SELECT WHERE exemple = $value....";
     
            $resultat = mysql_query($req);
            $tab = array();
     
            while($row = mysql_fetch_object($resultat, __CLASS__)) {
                $tab[] = $row;
            }
     
            return $tab;
        }
    }

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    Non je crois pas, je cherche à récupérer deux tableaux distincts pour faire deux traitements différents.
    Le premier tableau me sert à sélectionner les champs dans ma base pour lesquels machin = $value. Je fais ma première action. Une fois ma première action réalisée je fais ma deuxième action qui consiste à insérer en bd les résultats de mon premier tableau

  12. #12
    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 726
    Points
    10 726
    Par défaut
    pas besoin de faire ça alors, fait direct un INSERT INTO ... SELECT

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    Oui j'y avais pensé mais si ma première action ne s'est pas bien déroulée je ne veux pas faire d'insert.

  14. #14
    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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par PooSoft Voir le message
    Oui j'y avais pensé mais si ma première action ne s'est pas bien déroulée je ne veux pas faire d'insert.
    Quelle première action ? montre ton code complet

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    Dans ma fonction je n'ai que ça mais dans un autre fichier j’envoie un mail (via PHPmailer) à chaque ligne de résultat de mon tableau $resultats

  16. #16
    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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par PooSoft Voir le message
    Dans ma fonction je n'ai que ça mais dans un autre fichier j’envoie un mail (via PHPmailer) à chaque ligne de résultat de mon tableau $resultats
    montre tout

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    Voilà le contenu de mon deuxième fichier :
    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
    <?php
    $res = Classe::mafonction($value);
    if (isset($res)) {
    	foreach ($res as $adressemail) {
    		//echo "Création de l'objet PhpMailer";
    		$mail = new PHPmailer();
    		$mail->CharSet = 'UTF-8'; // choix de l'encodage.
    		$mail->IsSMTP();
    		$mail->Host = "";
    		$mail->SMTPAuth = true; // Si votre serveur requiert une authentification.
    		$mail->Username = "";
    		$mail->Password = "";
    		$mail->IsHTML(true); // Envoi en html
     
    		// ajout d'une image
    		//$mail->AddEmbeddedImage("chemin_image", "non_image", "cid_image");
     
    		$mail->From = "";
    		$mail->FromName = "";
    		$mail->AddAddress($adressemail);
    		$mail->AddReplyTo("");
    		$mail->Subject = "";
    		$mail->Body = "";
    		if (!$mail->Send()){
    			echo $mail->ErrorInfo;
    		}
    		else {
    			echo "Le courriel a été envoyé";
    		}
    		$mail->SmtpClose();
    	}
    }
    else {
    	echo "Il n'y a pas de résultats";
    }
    unset($resultats);
    ?>

  18. #18
    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 726
    Points
    10 726
    Par défaut
    mais $resultats n'existe pas ...

    Je te conseil d'apprendre les bases de PHP avant de te lancer dans un projet

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Points : 20
    Points
    20
    Par défaut
    $resultats est le tableau que retourne mafonction.

  20. #20
    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 726
    Points
    10 726
    Par défaut
    Citation Envoyé par PooSoft Voir le message
    $resultats est le tableau que retourne mafonction.
    non, puisque tu ne vas même pas chercher le retour de la fonction

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] petit problème avec mysql_fetch_object
    Par kevdanone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/01/2013, 16h10
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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