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 :

Erreur de type : "Trying to get property of non-object in"


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut Erreur de type : "Trying to get property of non-object in"
    Bonjour,

    je fais la partie admin de mon site internet mais j'ai des problèmes.

    je fais les pages pour la modification de ma base de données mais j'ai des erreurs de type :
    "Trying to get property of non-object in"
    j'ai cherché d’où peuvent venir ces erreurs mais je n'ai pas trouvé.

    voici le code de ma page 1 :
    Code php : 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
      <?php
        //connection au serveur:
        $connexion = mysql_connect( "localhost", "root", "" ) ;
     
        //sélection de la base de données:
        $db = mysql_select_db( "emb" ) ;
     
        //requête SQL:
        $sql = "SELECT NomEntreprise, TexteClient, LogoEnt, IdCategorie FROM client ORDER BY NomEntreprise" ;
     
        //exécution de la requête:
        $requete = mysql_query( $sql, $connexion ) ;
     
        //affichage des données:
        while( $result = mysql_fetch_object( $requete ) )
        {
           echo("* * * * * * * * * * * * * * * * * * * * * * * * * * *
    <div align=\"left\">".$result->NomEntreprise." ".$result->TexteClient." <a href=\"modification2.php?idPersonne=".$result->LogoEnt." ".$result->IdCategorie."\"><br />modifier</a><p>\n") ;
        }
      ?>

    ma page 2 :
    Code php : 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
      <?php
      //connection au serveur:
      $connexion = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db = mysql_select_db( "emb" ) ;
     
      //récupération de la variable d'URL,
      //qui va nous permettre de savoir quel enregistrement modifier
      $IdEntrepriseRef  = $_POST["IdEntrepriseRef "] ;
     
      //requête SQL:
      $sql = "SELECT * FROM client WHERE IdEntrepriseRef = ".$IdEntrepriseRef ;
     
      //exécution de la requête:
      $requete = mysql_query( $sql, $connexion ) ;
     
      //affichage des données:
      if( $result = mysql_query( $requete ) )
     ?>
     <form name="insertion" action="modification3.php" method="POST">
      <input type="hidden" name="IdEntrepriseRef" value="<?php echo($result->IdEntrepriseRef) ;?>">
      <table border="1" align="left" cellspacing="4" cellpadding="4">
        <tr align="left">
          <td>Nom du client</td>
          <td><input type="text" name="NomEntreprise" value="<?php echo($result->NomEntreprise) ;?>"></td>
        </tr>
        <tr align="left">
          <td>Texte Client</td>
          <td><input type="text" name="TexteClient" value="<?php echo($result->TexteClient) ;?>"></td>
        </tr>
        <tr align="left">
          <td>Logo du client</td>
          <td><input type="text" name="LogoEnt" value="<?php echo($result->LogoEnt) ;?>"></td>
        </tr>
        <tr align="left">
          <td>Identifiant du client</td>
          <td><input type="text" name="Categorie" value="<?php echo($result->IdCategorie) ;?>"></td>
        </tr>
        <tr align="center">
          <td colspan="2"><input type="submit" value="modifier"></td>
        </tr>
      </table>
    </form>

    ma page 3 :
    Code php : 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
    <?php
      //connection au serveur
      $connexion = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "emb" ) ;
     
      //récupération des valeurs des champs:
      //nom:
      $NomEntreprise = $_POST["NomEntreprise"] ;
      //prenom:
      $TexteClient = $_POST["TexteClient"] ;
      //adresse:
      $LogoEnt = $_POST["LogoEnt"] ;
      //code postal:
      $IdCategorie = $_POST["IdCategorie"] ;
     
      //récupération de l'identifiant de la personne:
      $IdEntrepriseRef = $_GET["IdEntrepriseRef"] ;
     
      //création de la requête SQL:
      $sql = "UPDATE client
            SET NomEntreprise = '$NomEntreprise', 
    	    TexteClient = '$TexteClient',
    		LogoEnt = '$LogoEnt',
    		IdCategorie = '$IdCategorie'";
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;
     
     
      //affichage des résultats, pour savoir si la modification a marchée:
      if($requete)
      {
        echo("La modification à été correctement effectuée") ;
      }
      else
      {
        echo("La modification à échouée") ;
      }
    ?>

    de plus j'ai une erreur
    Notice: Undefined index: IdEntrepriseRef
    donc pour celle ci je sais pas dans qu'elle page elle se trouve enfin il mets dans la page 2 !
    mais peut être que je me suis trompé dans le code je ne sais pas trop.

    merci de votre aide =)

    ps : pour info première fois que je fais une partie admin donc j'ai beaucoup de mal à la réaliser !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    ta variable
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     $_POST["IdEntrepriseRef "]
    n'est jamais renseignée, c'est idPersonne qui l'est.

    De plus, c'est pas un $_POST mais un $_GET car tu passes par une URL et pas par un formulaire.

    Ce sera donc
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_GET["idPersonne"]
    qui remplacera
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST["idEntrepriseRef"]

    J'espère que ça pourra t'aider

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    euh je suis perdu donc j'ai compris ce que tu disais mais je vois pas dans quelle page c'est =/


    merci pour ton aide =)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    c'est dans ta page 2 ligne 9

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    j'ai changé cette ligne
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $IdEntrepriseRef  = $_POST["IdEntrepriseRef "] ;
    en mettant
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $IdEntrepriseRef  = $_GET["IdEntrepriseRef "] ;
    mais ça ne change rien ou alors je me suis trompé de ligne !

    ah et idPersonne ce n'est pas pour ma base (c'est du code que j'ai trouvé et j'ai fais un copier/coller =/ je sais c'est pas beau =/ mais comme je le disais dans mon premier post c'est la première fois que je fais une partie admin !)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    non, tu t'es pas trompé de ligne, mais c'est bien le nom de ta variable qui est incorrecte.

    le seul code qui te permet de changer de page dans ta page 1 est celui-ci :

    Code php/html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div align=\"left\">".$result->NomEntreprise." ".$result->TexteClient." <a href=\"modification2.php?idPersonne=".$result->LogoEnt." ".$result->IdCategorie."\"><br />modifier</a><p>\n") ;

    et ça c'est du $_GET et pas du $_POST.

    De plus, nul part il y a indiqué une variable "IdEntrepriseRef" dans ce code.
    La seule variable est "idPersonne".

    Si tu veux vraiment utiliser idEntrepriseRef, tu changera le code de ta page 1 :

    Code php/html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div align=\"left\">".$result->NomEntreprise." ".$result->TexteClient." <a href=\"modification2.php?idEntrepriseRef=".$result->LogoEnt." ".$result->IdCategorie."\"><br />modifier</a><p>\n") ;

    Là j'ai juste changé le nom de ta variable envoyée par URL.

    Par contre, tu laisses bien le type $_GET dans ta page 2.

    J'espère que ça pourra t'aider.

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div align=\"left\">".$result->NomEntreprise." ".$result->TexteClient." <a href=\"modification2.php?idPersonne=".$result->LogoEnt." ".$result->IdCategorie."\"><br />modifier</a><p>\n") ;
    et ca c'est du $_GET et pas du $_POST.
    comment on sait que c'est du $_GET ou du $_POST ?

    De plus, nul part il y a indiqué une variable "IdEntrepriseRef" dans ce code.
    La seule variable est "idPersonne"
    cette variable pour IdEntrepriseRef il faut que je la déclare en page 2 ? ou uniquement dans la page 1 dans ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div align=\"left\">".$result->NomEntreprise." ".$result->TexteClient." <a href=\"modification2.php?idEntrepriseRef=".$result->LogoEnt." ".$result->IdCategorie."\"><br />modifier</a><p>\n") ;

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    du $_POST, c'est quand tu passes par un formulaire (balise <form>)
    du $_GET, c'est quand tu passes par une URL (page.php?variable=...)

    pour ta deuxième question, tu remplaces simplement "idPersonne" par "IdEntrepriseRef" dans ta page 1.

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    han d'accord !!
    un peu trop complexe pour moi tout ça -_-

    merci de ton aide =)

    je vais regardé tout a l'heure si ça fonctionne, et en attendant je vais modifié mes autres pages comme ça je vérifierais toute mes pages en même temps !

    merci encore pour ton aide =)

    je mets le sujet en résolu en attendant que je vérifies !

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    eh bien cela ne change rien toujours les même problèmes ! =/

    de plus sur ma page 3 toutes mes variables sont pas définis quand j'exécute ma page alors que pour moi elles ont l'air défini !

    voici le message d'erreur de ma page 3 :
    Notice: Undefined index: NomEntreprise in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 10

    Notice: Undefined index: TexteClient in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 12

    Notice: Undefined index: LogoEnt in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 14

    Notice: Undefined index: IdCategorie in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 16

    Notice: Undefined index: IdEntrepriseRef in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 19
    La modification à été correctement effectuée
    comment cela se fait-il ?
    oui j'ai du merdouiller quelque part si vous pouvez me dire s'il vous plaît.

    de plus à ma page 2 j'ai toujours mes erreurs de type
    Trying to get property of non-object in
    enfait ces erreurs s'affiche dans mes zones de textes pour les modification.

    j'ai changé le "object" par "array" et "row" mais ca ne change rien (j'ai fais ces test pour voir si quelque chose aller changer).

    dans mes zones de textes s'affiche :
    <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\wamp\www\Nouvelle version 20101\php\modification2.php</b> on line <b>31</b><br />
    merci pour votre aide

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 127
    Points
    127
    Par défaut
    Je viens de voir un truc sur ta page 1 :
    tu n'envoie pas l'id entreprise en paramètre URL mais son nom
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    ($result->LogoEnt." ".$result->IdCategorie).
    si tu mets son id, je pense que ca marchera mieux.

    du coups, il faut que tu modifies ta requête en page 1 (ajouter le champs id entreprise, "IdEntrepriseRef" je suppose) et que dans ton href, toujours dans ta page 1, tu mettes l'id de l'entreprise au lieu de nom nom
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    ($result->idEntrepriseRef au lieu de $result->LogoEnt." ".$result->IdCategorie).

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    euh j'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div align=\"left\">".$result->IdEntrepriseRef." ".$result->NomEntreprise." ".$result->TexteClient." <a href=\"modification2.php?IdEntrepriseRef=".$result->LogoEnt." ".$result->IdCategorie."\"><br />modifier</a><p>\n") ;
    j'ai pas tout compris dans ce que tu viens de dire alors j'ai fais comme je l'ai compris =/

  13. #13
    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

    Comme te l'a dit anthony89, transmet 1 seule (et unique) donnée à ton autre page "modification2.php", une donnée fiable, un ID (identifiant).
    Dans ta table "client" il doit avoir un ID unique qui permet de désigner un client de manière unique, c'est celle ci qui faudrait transmettre.

    Après, dans ta page "modification2.php", tu vas récupérer cette donnée, ensuite faire une requête SQL pour récupérer les autres données liées à celle ci.
    Ca fait donc qu'une seule donnée à vérifier, et si elle est correcte, tout le reste sera cohérent, fiable.
    C'est comme ça que ça se fait en général.


    Si tu crée des liens avec toutes sortes de données qui sont déjà dans la Bdd, à quoi sert la Bdd dans ces conditions ?
    Puis un lien, genre <a href></a>, c'est loin d'être un moyen fiable, car une personne un peu folles ou mal intentionnée aura tout le loisir de saisir dans sa barre de navigation tout et n'importe quoi.
    Tu fais comment si l'IdEntrepriseRef est bon, mais pas le LogoEnt ou encore IdCategorie ?
    Très embêtant ce genre de données incohérentes non ?


    A savoir que pour transmettre plusieurs données (paramètres) dans une URL (un lien), il faut les séparer par des & avec des couples nom/valeur
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="domaine.com/page.php?param1=un&param2=deux&paramN=etc">Un lien</a>
    Au bout, on récupère ces couples nom/valeur avec $_GET['nom'], ou ici $_GET['param1'], $_GET['param2'].

    Aussi, echo est une exception, ce n'est pas une fonction, du coup, les parenthèses ne sont pas obligatoires, autant se simplifier la vie.
    Puis mettre du contenu HTML avec des attributs qui comportes des quotes ", le plus simple c'est de faire des echo avec des simples quotes, ce qui évite d'échapper sans cesse les ".
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $param1 = 'un';
    $param2 = 'deux';
     
    echo '<a href="domaine.com/page.php?param1='.$param1.'&param2='.$param2.'">Un lien</a>';
    C'est plus simple, non ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    ah bah oui ça a l'air plus simple !!

    et je comprends déjà mieux (je suis longue à la détente lol)

    par contre dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="domaine.com/page.php?param1=un&param2=deux&paramN=etc">Un lien</a>
    les paramètres c'est quoi ?? enfin ceux qui vont passé dans la page 2 ??

  15. #15
    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 Prisss
    les paramètres c'est quoi ?? enfin ceux qui vont passé dans la page 2 ??
    C'est à dire ?
    Les paramètres sont les données que tu souhaites transmettre d'une pages à une autre page.
    Dans mon exemple, "param1" est le nom du paramètre et valeur "un", puis un 2ème paramètre au nom de "param2" et comme valeur "deux".

    Au clique sur le lien ces couples noms/valeurs seront transmis, et pourront être récupérés dans l'autre page via $_GET.
    Toujours le même principe de nom/valeur.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $parametre_1 = $_GET['param1']; // $parametre_1 aura comme valeur : un
    $parametre_2 = $_GET['param2']; // $parametre_2 aura comme valeur : deux

    Quand on transmet des données comme ça d'une page à l'autre, faut surtout pas hésiter de faire ces echo, des print_r() ou autre var_dump() sur $_GET, $_POST, et même sur toute sorte de données dont on hésite ce quelles contiennent comme valeur, ou pour juste vérifier.
    A consommer sans modération.
    Si on ne fait pas ça, on avance pas d'un poil, c'est le flou total.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    je n'y arrive toujours pas,
    ça me mets d'autres erreurs -_-

    ca ne se fait pas, mais je suis en stage et je fini mon stage vendredi et j'aimerai que le site soit fini, alors pourriez vous me corriger directement les parties qui ne vont pas s'il vous plaît, de plus j'ai encore la partie de suppression a corriger car là aussi il y a des erreurs =(

    sinon j'ai essayé d'apporter des corrections à ma page 1 donc le code me donne :
    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
      <?php
        //connection au serveur:
        $connexion = mysql_connect( "localhost", "root", "" ) ;
     
        //sélection de la base de données:
        $db = mysql_select_db( "emb" ) ;
     
        //requête SQL:
        $sql = "SELECT NomEntreprise, TexteClient, LogoEnt, IdCategorie FROM client ORDER BY NomEntreprise" ;
     
        //exécution de la requête:
        $requete = mysql_query( $sql, $connexion ) ;
     
        //affichage des données:
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
    	<a href="domaine.com/modification2.php?param1='.$IdEntrepriseRef.'&param2='.$NomEntreprise.'"><br />modifier</a>';
    	}
      ?>
    et j'ai comme erreurs :
    Notice: Undefined variable: IdEntrepriseRef in C:\wamp\www\Nouvelle version 20101\php\modification.php on line 54

    Notice: Undefined variable: NomEntreprise in C:\wamp\www\Nouvelle version 20101\php\modification.php on line 54
    pour ma page 2 :
    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
      <?php
      //connection au serveur:
      $connexion = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db = mysql_select_db( "emb" ) ;
     
      //récupération de la variable d'URL,
      //qui va nous permettre de savoir quel enregistrement modifier
      $IdEntrepriseRef  = $_GET["IdEntrepriseRef "] ;
     
      //requête SQL:
      $sql = "SELECT * FROM client WHERE IdEntrepriseRef = ".$IdEntrepriseRef ;
     
      //exécution de la requête:
      $requete = mysql_query( $sql, $connexion ) ;
     
      //affichage des données:
      if( $result = mysql_query( $requete ) )
     ?>
     <form name="insertion" action="modification3.php" method="POST">
      <input type="hidden" name="IdEntrepriseRef" value="<?php echo($result->IdEntrepriseRef) ;?>">
      <table border="1" align="left" cellspacing="4" cellpadding="4">
        <tr align="left">
          <td>Nom du client</td>
          <td><input type="text" name="NomEntreprise" value="<?php echo($result->NomEntreprise) ;?>"></td>
        </tr>
        <tr align="left">
          <td>Texte Client</td>
          <td><input type="text" name="TexteClient" value="<?php echo($result->TexteClient) ;?>"></td>
        </tr>
        <tr align="left">
          <td>Logo du client</td>
          <td><input type="text" name="LogoEnt" value="<?php echo($result->LogoEnt) ;?>"></td>
        </tr>
        <tr align="left">
          <td>Identifiant de la catégorie client</td>
          <td><input type="text" name="Categorie" value="<?php echo($result->IdCategorie) ;?>"></td>
        </tr>
        <tr align="center">
          <td colspan="2"><input type="submit" value="modifier"></td>
        </tr>
      </table>
    </form>
    et comme erreurs :
    Notice: Undefined index: IdEntrepriseRef in C:\wamp\www\Nouvelle version 20101\php\modification2.php on line 15
    et aussi
    <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\wamp\www\Nouvelle version 20101\php\modification2.php</b> on line <b>31</b><br />
    même erreur ligne 35, 39, 40

    page 3 :
    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
    <?php
      //connection au serveur
      $connexion = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "emb" ) ;
     
      //récupération des valeurs des champs:
      //nom:
      $NomEntreprise = $_POST["NomEntreprise"] ;
      //prenom:
      $TexteClient = $_POST["TexteClient"] ;
      //adresse:
      $LogoEnt = $_POST["LogoEnt"] ;
      //code postal:
      $IdCategorie = $_POST["IdCategorie"] ;
     
      //récupération de l'identifiant de l'entreprise:
      $IdEntrepriseRef = $_GET["IdEntrepriseRef"] ;
     
      //création de la requête SQL:
      $sql = "UPDATE client
            SET NomEntreprise = '$NomEntreprise', 
    	    TexteClient = '$TexteClient',
    		LogoEnt = '$LogoEnt',
    		IdCategorie = '$IdCategorie'";
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;
     
     
      //affichage des résultats, pour savoir si la modification a marchée:
      if($requete)
      {
        echo("La modification à été correctement effectuée") ;
      }
      else
      {
        echo("La modification à échouée") ;
      }
    ?>
    Notice: Undefined index: NomEntreprise in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 10

    Notice: Undefined index: TexteClient in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 12

    Notice: Undefined index: LogoEnt in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 14

    Notice: Undefined index: IdCategorie in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 16

    Notice: Undefined index: IdEntrepriseRef in C:\wamp\www\Nouvelle version 20101\php\modification3.php on line 19
    si vous pouvez m'apporter les corrections nécessaires et si vous pouvez aussi m'expliquer mes erreurs s'il vous plaît !?! =)

  17. #17
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Résumons un peu les messages d'erreur :
    "undefined variable" signifie que tu utilises une variable avant de l'avoir affectée. Ce genre de code renverrait cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo $a; //ici $a n'existe pas encore, ce qui renvoie une notice "undefined variable"
     
    $a = 3;
    "undefined index" signifie que tu accedes à un élément d'un tableau qui n'existe pas. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tab = array('1' => 'premier', '2' => 'second');
    echo $tab[42]; //pas d'index 42, donc notice "undefined index"
    "Trying to get property of non-object" vaut dire que tu utilises une variable comme si c'était un objet alors que ce n'est pas le cas. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab = array('premier' => '1', 'second' => 2);
     
    echo $tab->premier; //erreur car $tab est un array et pas un objet
    Maintenant, à chaque erreur, le message t'indique le plus souvent la ligne de l'erreur. Il faut donc que tu regardes cette ligne et que tu trouves ce qui cloche.

    Par exemple dans ta page 2 : tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo($result->IdEntrepriseRef) ;?>
    mais $result est défini ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query( $requete )
    mysql_query ne renvoie pas un objet directement exploitable, il faut que tu passes une fonction fetch dessus (par exemple mysql_ fetch_ object, pour pouvoir l'utiliser comme objet ensuite...)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  18. #18
    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
    Tu es en stage et qu'il se termine vendredi, je veux bien, mais la théorie veut qu'il ait eu une formation, un apprentissage, les bases au moins non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //affichage des données:
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo '<a href="domaine.com/modification2.php?param1='.$IdEntrepriseRef.'&param2='.$NomEntreprise.'"><br />modifier</a>';
    	}
    Notice: Undefined variable: IdEntrepriseRef in C:\wamp\www\Nouvelle version 20101\php\modification.php on line 54

    Notice: Undefined variable: NomEntreprise in C:\wamp\www\Nouvelle version 20101\php\modification.php on line 54
    Je ne sais pas, mais pour ma part on peu difficilement faire plus explicite : Les 2 messages disent que IdEntrepriseRef et NomEntreprise n'existent pas.
    Pourquoi exploiter des variables qui n'ont jamais été créés ?

    Regarde ton code, celui ci-dessus.
    Tu fais une boucle while qui défini $result, et c'est celle ci qui contient les données que la requête à récupérée non ?
    Donc en toute logique suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $client_sql = "SELECT NomEntreprise, TexteClient, LogoEnt, IdCategorie FROM client ORDER BY NomEntreprise" ;
     
     
    $client_rs = mysql_query( $client_sql, $connexion ) or exit('Erreur : '.mysql_error());
     
    //affichage des données:
    while( $client = mysql_fetch_array( $client_rs ) )
    {
        echo '<a href="domaine.com/modification2.php?IdEntrepriseRef='.$client['IdEntrepriseRef'].'"><br />modifier</a>';
    }
    N’oublie pas les les echo, print_r() car ici, un simple print_r($result) te permettais de vérifier ce que la la boucle while renvoie, entre autre ce que la requête à récupérée, et surtout sous quelle forme sont les données, ce qui permet après de savoir comment les exploiter.

    Nomme mieux variables, car $sql, $requête, $result, je t'assure que ça ne veut rien dire du tout, c'est beaucoup trop général.

    J'y mis qu'un seul paramètre, car IdEntrepriseRef suffit normalement, ta page 2 récupérera le reste.

    Puis effectue mysql_fetch_array() au lieu de mysql_fetch_object().
    Met de coté l'Objet, fait simple avec des tableaux, ça fonctionnera tout aussi bien.
    En gros, ne rend pas les choses plus compliquées quelle ne le sont.


    Dans ta page 2 tu exécute la requête, mais tu oubli de les récupérer, comme faire un mysql_fetch_array() (ou mysql_fetch_object() si tu préfère).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $client_rs = mysql_query( $requete ) or exit('Erreur : '.mysql_error());
    if ( $client_rs ) {
        $client = mysql_fetch_array($client_rs);
    ?>
    ... etc ...
    <input type="hidden" name="IdEntrepriseRef" value="<?php echo $client['IdEntrepriseRef']; ?>" />
    ... etc ...
    <?php
    }
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  19. #19
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    RunCodePhp justement je disais du code mais expliquer car du code sans explication c'est comme vouloir apprendre le chinois !! =/

    merci de votre aide RunCodePhp et Celira, je vais me pencher à nouveau sur mes problèmes et essayer et surtout de réussir à les résoudre !!

    si j'y arrive pas bah je remettrai un post (et vous finirai par perdre patiente à moins que cela ne soit déjà fait ! =/)

    mais merci en tout cas pour votre aide =)

  20. #20
    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 Prisss
    RunCodePhp justement je disais du code mais expliquer car du code sans explication c'est comme vouloir apprendre le chinois !!
    J'estime que les explications données sont suffisantes pourtant.

    Si par exemple pour la 1ère erreur on ne vois pas, ou on ne comprend pas pourquoi cette erreur, c'est à dire le fait d'avoir utiliser une variable non créé (non déclarée et non initialisée), et bien il faut revenir à 0, au tout début de l'apprentissage de Php.

    Si tel est le cas, ce n'est pas possible, pour ma part on doit avoir un minimum de pré-requis.
    Il me semble que ce n'est pas l'objectif d'un tel forum de former les gens au BABA de Php, il y a des tutos, faq, bouquins, etc ... qui existent déjà, et en profusion.
    Tu ne crois pas ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. [PDO] Trying to get property of non-object
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/03/2012, 12h01
  2. [Joomla!] [Adsmanager] Notice: Trying to get property of non-object in C:\Program Files\EasyPHP
    Par ninobrown dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 13/04/2009, 21h13
  3. Réponses: 3
    Dernier message: 08/02/2008, 20h02
  4. Réponses: 11
    Dernier message: 28/08/2007, 12h06
  5. [POO] Erreur Trying to get property of non-object
    Par Niouts dans le forum Langage
    Réponses: 14
    Dernier message: 13/09/2006, 10h09

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