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
      merci pr ta disponibilité ca marche nickel
      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
          j'ai maintenant ce message!

          Erreur !!!
          Column count doesn't match value count at row 1
          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
              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
                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
                  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
                    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
                    oups pardon, j'ai pas mis la variable à afficher !!!
                    print_r( $_POST );

                    mea culpa, mea maxima culpa…
                    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
                        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
                          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
                            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
                              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
                                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…