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 :

Problème undefined property


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut Problème undefined property
    Bonjour à tous,

    Je développe un site et j'ai un problème.

    J'ai ce message d'erreur.
    Notice: Undefined property: stdClass::$cust_sid in C:\Program Files\EasyPHP-5.3.9\www\Site\resultatRechercheClient.php on line 37
    Voici ma ligne 37 du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr><th>$tuple->cust_sid</th><th>$tuple->sbs_no</th><th>$tuple->cust_id</th></tr>";
    plus largement voici mon 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
    38
    39
    40
    <?php
     
      // a placer en TOUT debut de chaque page
      session_start();
      if(! isset($_SESSION['nom'])) {
        header('Location: session_form.html');
        exit();
      }
     
     
     
    include "DB.inc.php";
    include "fctAux.inc.php";
      enTete();
      contenu();
      pied();
     
      function contenu(){
     
     
    	$firstName= $_POST['first_name'];
    $lastName = $_POST['last_name'];
     
    	print("<center>Bonjour $firstName $lastName</center>"); 
     
    	//$requete = "select cust_sid, sbs_no, cust_id, store_no, home_sbs_no, home_store_no, first_name, last_name, created_date, lst_sale_date
    	$requete="select cust_sid, sbs_no, cust_id
    				from customer_v
    				where last_name = '".mysql_real_escape_string ($lastName)."'";
    	$db = new DB();
    	$t = $db->select($requete);
     
    	echo "<table> <tr><th>cust_sid</th><th>sbs_no</th><th>cust_id<th>store_no</th><th>home_sbs_no</th><th>home_store_no</th><th>first_name</th><th>last_name</th><th>created_date</th><th>lst_sale_date</th></tr>";
    		for ($i = 0; $i < count($t); $i++) {
    			$tuple =  $t[$i];
    		//	echo "<tr><th>$tuple->cust_sid</th><th>$tuple->sbs_no</th><th>$tuple->cust_id</th><th>$tuple->store_no</th><th>$tuple->home_sbs_no</th><th>$tuple->home_store_no</th><th>$tuple->first_name</th><th>$tuple->last_name</th><th>$tuple->created_date</th><th>$tuple->lst_sale_date</th></tr>";
    		echo "<tr><th>$tuple->cust_sid</th><th>$tuple->sbs_no</th><th>$tuple->cust_id</th></tr>";
    		}
    	}
    ?>
    et enfin voici mon fichier DB.inc.php
    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
    <?php
    // classe d'interface avec la base de donnees postgresql
     
        class DB{
     
    	/************************************************************************/
    	//	Connexion à la base
    	/************************************************************************/
            private function connect(){
                    $connexion=OCILogOn("***", "***", "***")
                            or die("Impossible de se connecter");
                    return $connexion;
            }
     
    	/***************************************************************/
            // Fermeture de la connexion
            /***************************************************************/
            private function close($connexion){
                    OCIlogoff($connexion);
            }
     
    	/***************************************************************/
            // SELECT generique sur une table quelconque
            /***************************************************************/
            function select($requeteSQL){
    		$tab=array();
                    $connexion=DB::connect();
                    $row = 0;
                    $reponse = OCIParse($connexion, $requeteSQL);
    				OCIExecute($reponse);
    		while ($tuple = oci_fetch_object($reponse)){
    		      $tab[$row]=$tuple;
    		      $row++;
                    }       
                    DB::close($connexion);	
                    return $tab;
            }
     
    	/***************************************************************/
            // MAJ generique sur une table quelconque
            /***************************************************************/
            function maj($requeteSQL){
                    $connexion=DB::connect();
                    OCIExecute($connexion, $requeteSQL) or die("requete impossible !\n");
                    DB::close($connexion); 
            }
        }	
    ?>
    Comme vous avez pu peut être le voir j'ai une base Oracle.
    Je pense que mon problème viens de mon fichier DB.inc.php de la fonction select et plus particulièrement de cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($tuple = oci_fetch_object($reponse))
    Oci_fetch_object est-il le meilleur moyen ? et plus précisément ma fonction select est elle bonne ?

    Enfin je ne comprends pas pourquoi mon résultat ne veut pas s'afficher comme je le souhaite.

    En espérant que vous pourrez m'aider.

    Cordialement,

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    le message d'erreur indique que la propriété cust_sid n'existe pas pour l'objet $tuple. peux tu me poster le résultat d'un de ta ligne 37?

    il est possible que tu essayes d'accéder a ta propriété de la mauvaise manière, ou que tu prennes la syntaxe objet alors que c'est un tableau. (essaye $tuple["cust_sid"])

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut
    Tout d'abord merci de ton aide. Malheureusement rien de bien concret. Voici les résultats (ou plutot les erreurs).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"var_dump($tuple)";
    message d'erreur associé:
    Catchable fatal error: Object of class stdClass could not be converted to string in C:\Program Files\EasyPHP-5.3.9\www\Site\resultatRechercheClient.php on line 40
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr><th>".$tuple["cust_sid"]."</th></tr>";
    message d'erreur associé:
    Fatal error: Cannot use object of type stdClass as array in C:\Program Files\EasyPHP-5.3.9\www\Site\resultatRechercheClient.php on line 39
    C'est quand meme bizarre, dans un premier temps il me dis que l'objet ne peut pas etre convertis et dans un second temps il me dis que on ne peut pas utiliser un objet avec un tableau.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Du coup, peux tu réexecuter: var_dump($tuple); sans le transformer en echo "var_dump($tuple)"

    (si le résultat du var_dump est pas très joli, recherche xdebug dans php.ini , décommente ses lignes et relance ton apache)
    var_dump est un meilleur outil de débogage que echo car ce dernier n'affiche que du texte. var_dump affiche le typage de l'objet, ses propriétés etc... une fois essayé tu ne pourras plus t'en passer.

    le deuxième message d'erreur nous conforte dans le fait que ce soit un objet et non un tableau, ca c'est bien :]


    Pour prendre des bonnes habitudes de visibilité, je te conseil de toujours utiliser la concaténation même dans tes echo, même avec des doubles quotes.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Par défaut
    ah excusez moi je pensais pas que var_dump s'utilisait comme ca en php.

    alors voici le résultat de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    object(stdClass)[2]
      public 'CUST_SID' => string '-6034580399023779844' (length=20)
    Le chiffre c'est le résultat attendu (numéro unique d'un client)

    maintenant comment le récupérer ?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    ta ligne avec erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr><th>".$tuple->cust_sid."blablabla"
    ton var_dump
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    object(stdClass)[2]
      public 'CUST_SID' => "valeur"
    on voit que la casse n'est pas du tout la meme. essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr><th>".$tuple->CUST_SID."</th><th>".$tuple->sbs_no."</th><th>".$tuple->cust_id."</th></tr>";
    (meme si je suppose que la casse de sbs_no et cust_id devront être changé eux aussi)

    J'espère que ca t'aidera

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

Discussions similaires

  1. Problème fichier properties
    Par shabi dans le forum Struts 2
    Réponses: 4
    Dernier message: 15/04/2008, 16h21
  2. Réponses: 7
    Dernier message: 29/06/2007, 14h19
  3. [MySQL] Problème Undefined variable
    Par djeje72 dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 16/05/2007, 17h23
  4. problème undefined variable: _SESSION
    Par Sniper94-2 dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2007, 11h34
  5. Problème sur property Items de ListBox
    Par Andry dans le forum Langage
    Réponses: 4
    Dernier message: 24/08/2005, 13h10

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