Annonce

Réduire
Aucune annonce.

problème avec un formulaire de remplissage de base de donnée en php

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • problème avec un formulaire de remplissage de base de donnée en php

    Bon, tout est dans le titre, j'ai un soucie avec mon formulaire d'entrée de données en PHP, je n'arrive pas à me connecter à ma base de données et je m'arrache les cheveux depuis 2 jours à comprendre pourquoi alors que ça me parait correcte ( je dis bien parait hein ^^ )

    je vous colle le code

    formulaire de saisie :

    <html>

    <form method="POST" action="add.php">

    <center>
    <input type="text" name="civilite" size="40" value="civilite" maxlength="35"> <input type="text" name="nom" size="40" value="nom" maxlength="35"><br>
    <br/><input type="text" name="prenom" size="40" value="prenom" maxlength="70"> <input type="text" name="secteur" size="40" value="secteur" maxlength="70"><br>
    <br/><input type="text" name="statut" size="40" value="statut" maxlength="70"> <input type="text" name="mail" size="40" value="mail" maxlength="255"><br>
    <br/><input type="text" name="fixe" size="40" value="fixe" maxlength="70"> <input type="text" name="mobile" size="40" value="mobile" maxlength="255"><br/>
    <br/><input type="text" name="numrue" size="40" value="numrue" maxlength="70"> <input type="text" name="rue" size="40" value="rue" maxlength="255"><br>
    <br/><input type="text" name="ville" size="40" value="ville" maxlength="70"> <input type="text" name="CP" size="40" value="CP" maxlength="255"><br>
    <br/><input type="submit" value="Envoyer" name="envoyer">
    </center>

    </form>

    </html>

    script php d'entré de données:

    <?php

    ini_set('display_errors', 1);


    // je récupère les champs


    if(isset($_POST['civilite'])) $civilite=$_POST['civilite'];
    else $civilite="";

    if(isset($_POST['nom'])) $nom=$_POST['nom'];
    else $nom="";

    if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
    else $prenom="";

    if(isset($_POST['secteur'])) $secteur=$_POST['secteur'];
    else $secteur="";

    if(isset($_POST['statut'])) $statut=$_POST['statut'];
    else $statut="";

    if(isset($_POST['mail'])) $mail=$_POST['mail'];
    else $mail="";

    if(isset($_POST['fixe'])) $fixe=$_POST['fixe'];
    else $fixe="";

    if(isset($_POST['mobile'])) $mobile=$_POST['mobile'];
    else $mobile="";

    if(isset($_POST['numrue'])) $numrue=$_POST['numrue'];
    else $numrue="";

    if(isset($_POST['rue'])) $rue=$_POST['rue'];
    else $rue="";

    if(isset($_POST['ville'])) $ville=$_POST['ville'];
    else $ville="";

    if(isset($_POST['CP'])) $codepostal=$_POST['CP'];
    else $codepostal="";

    // je vérifie si les champs sont vides


    if(empty($civilite) OR empty($nom) OR empty($prenom) OR empty($secteur) OR empty($statut) OR empty($mail) OR empty($fixe) OR empty($mobile) OR empty ($numrue) OR empty($rue) OR empty($ville) OR empty($codepostal))
    {
    echo '<font color="red">Attention, aucun champ ne peut rester vide !</font>';
    }

    // Aucun champ n'est vide, on peut enregistrer dans la table
    else
    {
    // connexion à la base

    $bdd = new PDO('mysql:host=localhost;dbname=adigit', 'root', 'root');

    // j'écrit la requête sql

    $req = $bdd ->prepare ('INSERT INTO client(civilite, nom, prenom, secteur, statut, mail, fixe, mobile, numrue, rue, ville, CP) VALUES(:civilite, renom, :secteur, :statut, :mail, :fixe, :mobile, :numrue, :rue, :ville, :CP)');

    $req -> execute(array(
    'civilite' => $civilite,
    'nom' => $nom,
    'prenom' => $prenom,
    'secteur' => $secteur,
    'statut' => $statut,
    'mail' => $mail,
    'fixe' => $fixe,
    'mobile' => $mobile,
    'numrue' => $numrue,
    'rue' => $rue,
    'ville' => $ville,
    'CP' => $codepostal
    ));


    // j'affiche le résultat pour le visiteur

    echo 'Vos infos on été ajoutées.';
    ?>

    qui aurai un petit conseil à me donner?

  • #2
    Salut, quel est le message d'erreur en question ?
    Sinon quelques petites choses connes à vérifier:
    Code:
    $bdd = new PDO('mysql:host=localhost;dbname=adigit', 'root', 'root');
    Ton serveur SQL est-il bien démarré ?
    La db existe-elle ? Si oui est-ce bien le bon nom ?
    Id: root
    psw: root
    Tu a testé de t'identifier manuellement avec ces ID ? (juste pour tester leur validité)


    Suivre Hackademics: Twitter, Google+, Facebook.

    Commentaire


    • #3
      Oui,je suis en local avec vamp

      edit1: j'ai testé la saisie de mes variable avec un echo, je récupère bien les valeur saisie dans le formulaire
      edit2: ca doit venir de ma connection a la base de données
      Dernière modification par Defy, 04 mars 2014, 18h05.

      Commentaire


      • #4
        De mémoire, tu as mal mis les variables dans ton 'execute'

        $req -> execute(array(
        'civilite' => $civilite,
        'nom' => $nom,
        'prenom' => $prenom,
        'secteur' => $secteur,
        'statut' => $statut,
        'mail' => $mail,
        'fixe' => $fixe,
        'mobile' => $mobile,
        'numrue' => $numrue,
        'rue' => $rue,
        'ville' => $ville,
        'CP' => $codepostal
        ));


        devrait être :
        $req -> execute(array(
        ':civilite' => $civilite,
        ':nom' => $nom,
        'renom' => $prenom,
        ':secteur' => $secteur,
        ':statut' => $statut,
        ':mail' => $mail,
        ':fixe' => $fixe,
        ':mobile' => $mobile,
        ':numrue' => $numrue,
        ':rue' => $rue,
        ':ville' => $ville,
        ':CP' => $codepostal
        ));

        sinon, passe par un bindParam pour les paramètres puis exécute la requête.
        “ Deux choses sont infinies. L'univers et la stupidité humaine ... et je ne suis pas sûr pour l'univers.”
        -Albert Einstein

        Commentaire


        • #5
          problème avec un formulaire de remplissage de base de donnée en php

          J'ai complètement remanier mon code,je trouvais ça pas du tout ergonomique ^^ je post la deuxième version des que j'ai mon Pc sous la main. J'ai encore un blème, mon formulaire fonctionne bien, il se régénère à chaque foi mais la maintenant les valeur ne s'enregistre pas dans ma table... Ça m'énerve!!

          Commentaire


          • #6
            Hello,

            Je vais te corriger tout ça. J'attends ton nouveau code.

            Commentaire


            • #7
              tu devrais quand même gérer les exceptions ici, non ?

              $bdd = new PDO('mysql:host=localhost;dbname=adigit', 'root', 'root');
              Avec un try/catch
              Qui est le maître, le peintre ou le faussaire... ?

              ㅡ La solidité d'une chaine est égale à la solidité de son maillon le plus faible ㅡ

              Commentaire


              • #8
                donc ca c'est mon formulaire avec ma requête intégré


                <html>
                <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype = "application/x-www-form-urlencoded">
                <fieldset>
                <center>
                Civilité: <input type="text" name="civilite" size="40" value="" maxlength="35"> Nom: <input type="text" name="nom" size="40" value="" maxlength="35"><br>
                <br/>Prénom: <input type="text" name="prenom" size="40" value="" maxlength="70"> Secteur: <input type="text" name="secteur" size="40" value="" maxlength="70"><br>
                <br/>Statut: <input type="text" name="statut" size="40" value="" maxlength="70"> Mail: <input type="text" name="mail" size="40" value="" maxlength="255"><br>
                <br/>Fixe: <input type="text" name="fixe" size="40" value="" maxlength="70"> Mobile: <input type="text" name="mobile" size="40" value="" maxlength="255"><br/>
                <br/>adresse : <input type="text" name="adresse" size="40" value="" maxlength="70"> ville: <input type="text" name="ville" size="40" value="" maxlength="255"><br>
                <br/>code postal: <input type="text" name="CP" size="40" value="" maxlength="70"> Commentaire: <textarea name="commentaire" row="4" value="" maxlength="255"></textarea><br>
                <br/><input type="submit" value="Envoyer" name="envoyer">
                </center>
                </fieldset>
                </form>

                <?php

                //--incusion des parametre et de la classe connexPDO--

                include ("Classes/connex.inc.php") ;
                $requete ="";

                //--verification des saisies--

                if(!empty($_POST['civilite'])&& !empty($_POST['nom'])&& !empty($_POST['prenom'])&& !empty($_POST['secteur'])&& !empty($_POST['statu'])&& !empty($_POST['mail'])&& !empty($_POST['fixe'])&& !empty($_POST['mobile'])&& !empty($_POST['adresse'])&& !empty($_POST['ville'])&& !empty($_POST['CP'])&& !empty($_POST['commentaire']))
                {
                $civilite = ($_POST['civilite']) ;
                $nom = ($_POST['nom']) ;
                $prenom = ($_POST['prenom']) ;
                $secteur = ($_POST['secteur']) ;
                $statut = ($_POST['statut']) ;
                $mail = ($_POST['mail']) ;
                $fixe = ($_POST['fixe']) ;
                $mobile = ($_POST['mobile']) ;
                $adresse = ($_POST['adresse']) ;
                $ville = ($_POST['ville']) ;
                $CP = ($_POST['CP']) ;
                $com = ($_POST['commentaire']) ;

                //--requette SQL d'entré de base--

                $requete ="INSERT INTO client (id, civilite, nom, prenom, secteur, statut, mail, fixe, mobile, adresse, ville, CP, com) VALUES ('"."', '" .$civilite ."','".$nom."','".$prenom."','".$secteur."','".$statut."','".$mail."','".$fixe."','".$mobile."','".$ adresse."','".$ville."','".$CP."','".$com."')" ;
                $idcom=connex ('adigit','myparam');
                $result=mysql_query($requete.$idcom) ;
                mysql_close($idcom);

                if (!$result) {
                echo "<h2>erreur d'insertion \n n°",mysql_errno(),':',mysql_error()."</h2>" ;
                }
                else {
                echo "<script type=\"text/javascript\">
                alert('vous êtes enregistré, votre numeros de client est:".mysql_insert_id()."')</script>";
                }
                }
                else {
                echo "<br/><br/><h2><center>formulaire a compléter en entier</h2></center>";
                }


                ?>

                </html>


                et ca c'est ma fonction de connexion:

                <?php
                function connex($base,$param)
                {
                include_once ($param.".inc.php");
                [email protected]_connect(MYHOST ,MYUSER ,MYPASS) ;
                [email protected]_selet_db($base);
                if(!$idcom | !$idbase)
                {
                echo "<script type=text/javascript>" ;
                echo "alert('connexion impossible a la base de données')</script>" ;
                }
                return $idcom;
                }
                ?>
                Pour information j'ai une page qui s'appel paramètre.inc.php. Cette page contient les paramètre de mes deux bases de données connecté sur l'application. Ces paramètre sont récupérés par $param et le nom de ma base est récupéré par $base, voilà pour les infos.

                edit: j'ai volontairement pas utilisé l'objet PDO parceque j'ai des problème de connexion avec la nouvelle version de MAMP

                Commentaire


                • #9
                  Re !

                  Au lieu d'utiliser MAMP, tu devrais utiliser le serveur Apache qui est installé de base sur les MAC.

                  Sinon, je ne sais pas si tu veux que je corrige seulement ton problème, ou tu veux des conseils sur l'HTML/PHP ?

                  Code:
                  $requete ='INSERT INTO client (civilite, nom, prenom, secteur, statut, mail, fixe, mobile, adresse, ville, CP, com)
                                VALUES ("'.$civilite.'","'.$nom.'","'.$prenom.'","'.$secteur.'","'.$statut.'","'.$mail.'","'.$fixe.'","'.$mobile.'","'.$adresse.'","'.$ville.'","'.$CP.'","'.$com.'")' ;
                  PS: Ton code permet des injections SQL.


                  @+

                  Commentaire


                  • #10
                    Alors j'utilise MAMP parceque je vais basculer après sur un ordi windows pour mon application, et comme ca ca sera plus facile de basculer d'un a l'autre avec phpmyadmin.

                    Ensuite les injection c'est pas très grave ca sera juste sur le serveur local de ma boite, avec un accès vpn pour la commercial afin d rentrer les nouveau clients depuis n'importe ou.

                    et je veut bien un correction de mon news code, mais avec une explication quand meme, et tout les conseils que tu peut me prodigué en PHP :-) je commence l'apprentissage du language :-)

                    edit: et j'aimerais quelque explications sur le MVC

                    Commentaire


                    • #11
                      Tu as oublié le "t" de statut dans le "if":

                      Code:
                      if(!empty($_POST['civilite'])&& !empty($_POST['nom'])&& !empty($_POST['prenom'])&& !empty($_POST['secteur'])&& !empty($_POST['statu'])&& !empty($_POST['mail'])&& !empty($_POST['fixe'])&& !empty($_POST['mobile'])&& !empty($_POST['adresse'])&& !empty($_POST['ville'])&& !empty($_POST['CP'])&& !empty($_POST['commentaire']))
                      sans erreur :

                      Code:
                      if(!empty($_POST['civilite'])&& !empty($_POST['nom'])&& !empty($_POST['prenom'])&& !empty($_POST['secteur'])&& !empty($_POST['statut'])&& !empty($_POST['mail'])&& !empty($_POST['fixe'])&& !empty($_POST['mobile'])&& !empty($_POST['adresse'])&& !empty($_POST['ville'])&& !empty($_POST['CP'])&& !empty($_POST['commentaire']))
                      Et dans ton formulaire, parfois tu utilise <br/> et d'autres <br>, fais attention par rapport à ton <!DOCTYPE> s'il correspond au HTML ou au xHTML, les balises <br> ne sont pas les mêmes.

                      Et tu avait un espace entre le dollar ($) et la variable adresse :

                      Code:
                      $requete ="INSERT INTO client (id, civilite, nom, prenom, secteur, statut, mail, fixe, mobile, adresse, ville, CP, com) VALUES ('"."', '".$civilite."','".$nom."','".$prenom."','".$secteur."','".$statut."','".$mail."','".$fixe."','".$mobile."','".$adresse."','".$ville."','".$CP."','".$com."')";
                      Aussi je ne comprend pas pourquoi tu mets autant de quotes et de guillements dans ta requête, il y a plus simple :

                      Code:
                      $requete ="INSERT INTO client (id, civilite, nom, prenom, secteur, statut, mail, fixe, mobile, adresse, ville, CP, com) VALUES (\"\", $civilite , $nom, $prenom, $secteur, $statut, $mail, $fixe, $mobile, $adresse, $ville, $CP, $com)" ;
                      Je comprend bien ce que tu voulais faire, utiliser les variables postées seulement pendant la requête et non pas lors de sa définition, mais ça ne change rien puisque tu ne fait aucune action sur ces variables entre la définition de $requete et la requête elle-même. J'espère m'être compris ^^

                      Ensuite, je ne comprend pas pourquoi tu mets les variables $_POST entre parenthèses, je ne pense pas que cela puisse poser problème mais on sait jamais ^^ :


                      Code:
                      $civilite = ($_POST['civilite']) ;
                      $nom = ($_POST['nom']) ;
                      $prenom = ($_POST['prenom']) ;
                      $secteur = ($_POST['secteur']) ;
                      $statut = ($_POST['statut']) ;
                      $mail = ($_POST['mail']) ;
                      $fixe = ($_POST['fixe']) ;
                      $mobile = ($_POST['mobile']) ;
                      $adresse = ($_POST['adresse']) ;
                      $ville = ($_POST['ville']) ;
                      $CP = ($_POST['CP']) ;
                      $com = ($_POST['commentaire']) ;
                      Dernière modification par FRKorisS, 12 mars 2014, 12h24.
                      Mess with the best, Die like the rest

                      Commentaire


                      • #12
                        Envoyé par Defy Voir le message
                        Alors j'utilise MAMP parceque je vais basculer après sur un ordi windows pour mon application, et comme ca ca sera plus facile de basculer d'un a l'autre avec phpmyadmin.
                        Dans ce cas, tu peux essayer XAMPP, c'est du même type que WAMP, MAMP ou LAMP, mais multi-plateforme.

                        Envoyé par Defy Voir le message
                        Ensuite les injection c'est pas très grave ca sera juste sur le serveur local de ma boite, avec un accès vpn pour la commercial afin d rentrer les nouveau clients depuis n'importe ou.
                        Tu fais bien confiance à tes collègues alors. :P

                        Envoyé par Defy Voir le message
                        et je veut bien un correction de mon news code, mais avec une explication quand meme, et tout les conseils que tu peut me prodigué en PHP :-) je commence l'apprentissage du language :-)
                        Je te fais ça quand j'aurais le temps.

                        Envoyé par Defy Voir le message
                        edit: et j'aimerais quelque explications sur le MVC
                        Que du bonheur ce pattern !

                        Qu'est-ce que tu aimerais comme explication à son sujet ? Car je peux faire un roman dessus. ^^

                        Commentaire


                        • #13
                          problème avec un formulaire de remplissage de base de donnée en php

                          Pour les collègues on est 3 dans la société ^^ mon patron la commercial et moi ^^ prend ton temps c'est pas hyper pressé à la seconde, merci en tout cas.
                          'pour le mvc, savoir en quoi ça consiste, comment visualiser un modèle mvc et comprendre comment cela fonctionne.

                          Commentaire


                          • #14
                            Le MVC est un pattern facile à comprendre, plus compliqué à mettre en place

                            Pour une description, c'est l'acronyme de Model, View, Controler. Ton application sera "découpée" en trois grandes parties citées précédemment.

                            Model : va correspondre au modèle/format des tes données. C'est généralement la définition de tes classes que tu vas utiliser par la suite.
                            View : sera tout ce qu'est relatif à l'interface qu'aura l'utilisateur (page web, fenêtre, etc...)
                            Controler : sera le code qui va permettre un contrôle entre les données utilisées et la vue. C'est la parie la plus importante (en matière de volume) car c'est cette partie qui va vérifier l'intégrité des données entrées par l'utilisateur, actualiser les vues, etc...

                            Si je me suis trompé, merci aux autres de corriger Mais pour maîtriser ce pattern, il faut un peu de temps et beaucoup de pratique. Je te conseille de suivre plusieurs tutos pour bien assimiler le fonctionnement de ce pattern.
                            “ Deux choses sont infinies. L'univers et la stupidité humaine ... et je ne suis pas sûr pour l'univers.”
                            -Albert Einstein

                            Commentaire


                            • #15
                              Tu as essayé la petite correction que j'ai déjà donné ?

                              Et sinon, l'explication de xertux te convient ou tu aimerais plus d'information ?

                              Commentaire

                              Chargement...
                              X