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 :

Problème formulaire puis enregistrement en bd [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut Problème formulaire puis enregistrement en bd
    Bonjour,

    Je me casse la tête depuis un bout de temps sur un simple formulaire (assez long quand même) censé enregistrer son contenu en bd. Habituellement une succession de if, else if puis else fait l'affaire mais là ...ça veut pas !

    Après plusieurs tentative, voici à quoi ressemble mon code :

    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
     
    <?php
     
        if(isset($_POST["envoyer"])){
           //ici récupération du contenue du formulaire avec mis en forme (stripcslashes, etc...)
           //ici gestion des erreurs
           $erreur = false;
           if($code_postal==''){
              $erreur_code_postal='<div class="erreur"> Veuillez insérer un code postal.</div>';
              $erreur = true;
           }
           if(!is_numeric($code_postal)){
              $erreur_code_postal_numerique='<div class="erreur"> Le code postal (...) chiffres.</div>';
              $erreur = true;
           }
           //etc....
           //etc...
           if($prix!='' AND !is_numeric($prix)){
              $erreur_prix_numerique='<div class="erreur"> Le prix (...) chiffres.</div>';
              $erreur = true;
           }
     
           if(!$erreur){
              // si pas d'erreur
              //ici connexion à la bd+enregistrement
              $result = mysql_query("INSERT INTO TOTO VALUES( .....");
              //fermeture de la connexion
              if (!$result){
                  die('Un problème est survenu lors de l\'enregistrement.' . mysql_error());
              }else{
                  //on informe
                  $ok='<div class="erreur"> Enregistrement ok....</div>';
              }
           }
        }
    ?>
    Toutes les erreurs sont prises en comptes mais rien ne s'enregistre ! Tout ce qui se trouve après la ligne if(!$erreur){ est purement oublié !

    Un petit coup de neurones en plus serait bienvenue ^^

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as oublié d'afficher tes erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut
    Ce n'est qu'un aperçu de mon code car mon formulaire est très long, mais sur le principe c'est ça. Les erreurs sont affichées au niveau de chaque champ du formulaire par de simples "echo".
    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
     
    //Ici le code php de traitement+enregistrement
    <form name="listes" action="#ancre_formulaire" method="post"> 
    <?php echo $erreur_code_postal;?>
    champ 1
    <?php echo $erreur_champ 2;?>
    champ 2
     
    //champ select, radio,etc...
    //etc...
     
    <?php echo $erreur_prix_numerique;?>
    champ XX
     
    <input name="envoyer" value="envoyer" type="submit"/>
    <form>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Enfin je ne suis pas trop ta difficulté à debuguer ça.

    Si tu ne rentres pas comme tu le dis dans ta condition !$erreur, c'est que $erreur a pris une valeur et donc qu'un de tes tests au dessus a été positif.
    A toi de bosser pour trouver lequel.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut
    Si là est bien mon problème, il y a alors un truc que je ne comprend pas.. mes testes montrent bien que mes erreurs sont affichées jusqu'à ce que mon formulaire soit correctement et intégralement remplit. Partant de ce fait, je devrais normalement rentrer dans ma condition !$erreur pour l'exécution de mon enregistrement ..Non ?

    Cependant, j'ai omis un truc ... mon formulaire est munit de plusieurs <select> contenant des onchange="javascript:submit(this)" permettant de recharger la page afin d'afficher des champs différents en fonction de l'option sélectionné. du coup, certaines parties dans la gestion de mes erreurs ne sont pas utilisés.

    Mon soucis d'enregistrement peut il être du à cela ?
    Si tel est le cas, comment y remédier?

    Ps: J'effectue un echo de toutes mes variables et les champs inutilisés ne renvoies rien (normal).

    J'avoue, je suis un peut largué là ...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu pars d'un point A ou $erreur = FALSE;
    Tu vas a un point B ou $erreur = TRUE;

    entre les deux une ligne de code a donc changé la valeur, a toi de trouver ou.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/01/2011, 18h29
  2. Réponses: 5
    Dernier message: 14/06/2008, 08h32
  3. Réponses: 2
    Dernier message: 26/04/2008, 19h32
  4. Réponses: 3
    Dernier message: 12/02/2008, 16h19
  5. Réponses: 4
    Dernier message: 14/06/2006, 13h52

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