Erreur php

Résolu
Bonjour,
je developpe un petit script pour faire des insertions dans ma base mais j'ai un message d'erreur:

Notice: Undefined index: prenom_cli in E:\pme\crea_rdv.php on line 10

Notice: Undefined index: mod_regl in E:\pme\crea_rdv.php on line 26

alors j'aimerais savoir à quoi est dû cela??

Merci pour vos éclaircissemnts!!!

--
«Il faut avoir déjà beaucoup appris de choses pour savoir demander ce qu'on ne sait pas.»
Jean-Jacques ROUSSEAU
Configuration: Windows Vista
Safari 525.13

16 réponses

  1. Contributeur
    tu comprends le nouveau code ?

    tu as maintenant une erreur MySQL, le plus simple pour la débogguer est dans un premier temps d'imprimer ta requête avec
    echo "requête problématique = <br />$requete.<br />;

    avant
    $result = mysql_query($requete);

    comme ça la requête problématique sera affichée dans ton navigateur.

    ensuite tu récupères cette requête par copier/coller et tu vas la tester directement dans PHPMyAdmin (onglet SQL).

    dans ce cas ça devrait être facile, l'erreur t'explique que tu n'as pas le même nombre de valeurs à insérer que de champs (colonnes) annoncés.
    si tu as un champ avec incrémentation automatique il faut lui attribuer une valeur vide avec ''.
    1. Contributeur
      bon, il y a bien les deux clés manquantes dans le premier message d'erreur.

      maintenant vire cette première ligne et recharge ta page (pour renvoyer au serveur sans avoir à retaper, ce que tu dois déjà faire).

      et dis nous si l'ajout a lieu ou pas.
      1. Contributeur
        en code…
        //le sprintf() n'est pas utile
        $requete = "INSERT INTO INTERVENTION (operateur,date_intervention,heure_intervention,nom_client,prenom_client,adresse_client,code-postal,ville,digicode,telephone,mail,besoin,jour_rdv,heure_rdv,duree_rdv,debut_prestation,fin_prestation,intervention_realise,num_facture,montantht,mode_reglement)
        VALUES ('$operateur,$date_inter,$heure_inter,$nom_cli,$prenom_cli,$adresse,$code_postal,$ville,$digicode,$telephone,$mail,$besoin,$jour_rdv,$heure_rdv,$duree_rdv,$debut_int,$fin_int,$intervention,$num_fact,$mont_ht,$mode_regl')";
        // quand tu fais des tests ne mets jamais de "@" devant les fonctions ça cache les erreurs...
        $result = mysql_query($requete);
        // pour le reste il faut ajouter un test pour savoir si ça s'est bien passé ou pas
        if( $result === true )
        { 
        	echo ( 'Nouveau rendez-vous crée !!!' ); 
        }
        else
        {
        	echo ( 'Erreur !!!<br />'.mysql_error() ); 
        }
        1. Contributeur
          en fait tu essaies de rentrer une seule valeur !
          il faut ouvrir et fermer les guillemets (apostrophes) pour chaque valeur…
          $requete = "INSERT INTO INTERVENTION (
          operateur,
          date_intervention,
          heure_intervention,
          nom_client,
          prenom_client,
          adresse_client,
          code-postal,
          ville,
          digicode,
          telephone,
          mail,
          besoin,
          jour_rdv,
          heure_rdv,
          duree_rdv,
          debut_prestation,
          fin_prestation,
          intervention_realise,
          num_facture,
          montantht,
          mode_reglement)
          VALUES (
          '$operateur',
          '$date_inter',
          '$heure_inter',
          '$nom_cli',
          '$prenom_cli',
          '$adresse',
          '$code_postal',
          '$ville',
          '$digicode',
          '$telephone',
          '$mail',
          '$besoin',
          '$jour_rdv',
          '$heure_rdv',
          '$duree_rdv',
          '$debut_int',
          '$fin_int',
          '$intervention',
          '$num_fact',
          '$mont_ht',
          '$mode_regl')";

          tant que tu es en phase de tests tu peux présenter ta requête comme ça, c'est plus simple à déboguer !

          voili, voila, bonne nuit !
          1. Contributeur
            salut,

            ben ça signifie que tu essaies d'accéder à des valeurs d'un tableau pour les clés "prenom_cli" et "mod_regl" alors que ces clés ne sont pas définies.

            pour t'en dire plus il faudrait savoir ce qu'il y a dans "E:\pme\crea_rdv.php" aux lignes 10 et 26…
            1. Contributeur
              salut

              ligne 10 j'ai ceci: $prenom_cli = mysql_real_escape_string($_POST['prenom_cli']);

              ligne 2- j'ai ceci: $mod_regl = mysql_real_escape_string($_POST['mod_regl']);

              pourtant la clé n'est pas sur ces champs!!!
              1. Contributeur
                regarde dans le formulaire qui envoie les données, tu ne doit pas avoir de <input /> (ou autre) qui portent les noms "prenom_cli" et "mod_regl".
                1. Contributeur
                  re salut

                  malgré que je renomme les <input/> dans le formulaire,il reste que prenom_cli qui affiche encore le message!
                  Ca deviens bizare tou çà!
                  1. Contributeur
                    dans le formulaire, à chaque "name" tu doubles avec un attribut "id" qui prend la même valeur.

                    dans "E:\pme\crea_rdv.php" en première ligne tu mets
                    print_r();

                    et tu regardes ce qui est effectivement renvoyé par ton formulaire.
                    1. Contributeur
                      en ce moment j'ai ceci!

                      Warning: print_r() expects at least 1 parameter, 0 given in E:\pme\crea_rdv.php on line 2

                      Notice: Undefined index: prenom_cli in E:\pme\crea_rdv.php on line 11


                      je me demande pour "mod_regl" il n'affiche plus le message car j'ai renommé le champ input,mais pourquoi ça persiste avec le prénom???
                      1. Contributeur
                        oups pardon, j'ai pas mis la variable à afficher !!!
                        print_r( $_POST );

                        mea culpa, mea maxima culpa…
                        1. Contributeur
                          ca y est!plus d'erreur,mais il n'enregistre pas dans la base de données!!
                          1. Contributeur
                            mais il affiche quoi ?

                            devrait y avoir toutes les données renvoyées par ton formulaire, ce qui te permet de vérifier qu'il y a la clé signalée par le message d'erreur (ou pas).
                        2. Contributeur
                          il m'affiche ceci!

                          Array ( [operateur] => Paul [date_inter] => 2008-02-03 [heure_inter] => 10:00 [nom_cli] => BISS [prenom_cli] => Baudry [adresse_cli] => rue de l'amour [cod_post] => 75000 [ville] => Paris [digicode] => 8765 [telephone] => 9876543 [mail] => biss@baudry.fr [besoin] => Besoin 2 [jour_rdv] => 2008-02-03 [heure_rdv] => 12:00 [duree_prev] => 00:30 [debut_int] => 2008-02-05 [fin_int] => 2008-02-09 [intervention] => Intervention 3 [num_fact] => 13 [mont_ht] => 76853 [mode_regl] => Cheque ) Nouveau rendez-vous crée!!!

                          en lisant il envoie toutes les données,mais il n'ajoute pas dans la base!
                          1. Contributeur
                            salut!

                            toujours pas d'ajout dans la base;pourtant j'ai pas d'erreur de script php!

                            $requete = sprintf("INSERT INTO INTERVENTION (operateur,date_intervention,heure_intervention,nom_client,prenom_client,adresse_client,code-postal,ville,digicode,telephone,mail,besoin,jour_rdv,heure_rdv,duree_rdv,debut_prestation,fin_prestation,intervention_realise,num_facture,montantht,mode_reglement)

                            VALUES ('$operateur,$date_inter,$heure_inter,$nom_cli,$prenom_cli,$adresse,$code_postal,$ville,$digicode,$telephone,$mail,$besoin,$jour_rdv,$heure_rdv,$duree_rdv,$debut_int,$fin_int,$intervention,$num_fact,$mont_ht,$mode_regl')");
                            $result = @mysql_query($requete);
                            echo ('Nouveau rendez-vous crée!!!');

                            1. Contributeur
                              j'ai maintenant ce message!

                              Erreur !!!
                              Column count doesn't match value count at row 1