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 :

Condition champ non rempli [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut Condition champ non rempli
    bonjour
    je coince sur une coince a priori simple
    j'ai mon formulaired'inscription avec champs null et notnull sur la bdd (tous ne sont pas obligatoires)
    j'ai fait plusieurs tentatives, (je vous fais grâce de tous les codes tentés)
    j'ai soit syntaxe error (m'enfin, c'est presque "normal"), ou alors le message apparait avant le remplissage des champs, ou alors mysql m'ouvre une page blanche en anglais "column must be filled"
    je cherche deux options :
    -soit je fais une requete pour que mysql ouvre ma page " inscription erronée" avec le texte qui va bien
    -soit je mets les conditions bien comme ilfaut pour avoir les echo au bon endroit pour les champs non remplis; je suis perdu
    je n'arrive à rien faire de tout ça et ça commence à me....légèrement
    voilà une partie de 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <?php require_once('../Connections/mb.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "membre")) {
      $insertSQL = sprintf("INSERT INTO membre (prenom1, prenom2, nom1, nom2, email, pseudo, password, sexe, jour, mois, annee, rue, numrue, ville, cp, province, pays, telephone) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['prenom1mem'], "text"),
                           GetSQLValueString($_POST['prenom2mem'], "text"),
                           GetSQLValueString($_POST['nom1mem'], "text"),
                           GetSQLValueString($_POST['nom2mem'], "text"),
                           GetSQLValueString($_POST['mailmembre'], "text"),
                           GetSQLValueString($_POST['pseudo'], "text"),
                           GetSQLValueString($_POST['mot_de_passe'], "text"),
                           GetSQLValueString($_POST['sexe'], "text"),
                           GetSQLValueString($_POST['jourmem'], "int"),
                           GetSQLValueString($_POST['moismem'], "text"),
                           GetSQLValueString($_POST['anneemem'], "int"),
                           GetSQLValueString($_POST['rue'], "text"),
                           GetSQLValueString($_POST['numrue'], "int"),
                           GetSQLValueString($_POST['ville'], "text"),
                           GetSQLValueString($_POST['cp'], "int"),
                           GetSQLValueString($_POST['province'], "text"),
                           GetSQLValueString($_POST['pays'], "text"),
                           GetSQLValueString($_POST['telephone'], "int"));
     
      mysql_select_db($database_mb, $mb);
      $Result1 = mysql_query($insertSQL, $mb) or die(mysql_error());
     
    <form action="<?php echo $editFormAction; ?>" id="membre" name="membre" method="POST">
     
    <input name="prenom1mem" type="text" id="prenom1mem"  />
                    <label for="prenom1mem"></label>
                    <span class="Style80">2°prénom </span>
                    <input name="prenom2mem" type="text" id="prenom2mem" />
                    <label for="prenom2mem"></label>
    merci d'avance, en espérant avoir suffisamment précis

  2. #2
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    bon ici je pense que la première chose est que ce n'est pas clair dans ta tête

    bon tout d'abord ou est le problème
    as tu déjà réussi a faire une requête sql qui fonctionnait?
    quelle difficulté as-tu pour vérifier les champs?

    fais un code bien clair avec tout bien séparé et chose carrément folle mets des commentaires ^^

    le code est-il de ton cru ou l'as tu pris quelque part?

  3. #3
    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
    Je n'ai pas tout compris a ce que tu voulais mais cependant je ne vois pas a quel endroit tu definis si ton champ peut prendre la valeur Null ou s'il est obligatoire.

    On a pas le fin du "if" ni la fin du php. C'est une coupure de ton copier/coller ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut champ non rempli
    bonsoir
    ce que je voudrais quand un utilisateur s'inscrit dès la première fois c'est qu'un message s'inscrive sur la page quand il oublie de remplir un champ obligatoire
    grâce à une condition + echo
    si je ne remplis pas un champ obligatoire cela me donne une page blanche avec une ligne en anglais " ..must be filled" ou "cannot be null" et c'est pas terrible;
    pour moi l'idéal serait d'avoir un echo pour chaque champ non rempli; j'ai créé une page " inscription erronée avec une phrase " les champs* ne sont pas remplis" en espérant faire un echo href vers cette page mais je n'y parviens pas non plus 'tout ça pour dire aue j'ai plein de choses différentes qui n'ont pas fonctionné comme j'aurais voulu)
    j'espère être clair
    je suis débutant (ça se voit ?) et je ne m'exprime peut-être pas très bien.
    je travaille avec dreamweaver dont je ne maitrise pas encore toutes les subtilités.
    voila la fin du 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
                          GetSQLValueString($_POST['nom2mem'], "text"),
                           GetSQLValueString($_POST['mailmembre'], "text"),
                           GetSQLValueString($_POST['username'], "text"),
                           GetSQLValueString($_POST['sexe'], "text"),
                           GetSQLValueString($_POST['password'], "text"),
                           GetSQLValueString($_POST['jourmem'], "int"),
                           GetSQLValueString($_POST['moismem'], "text"),
                           GetSQLValueString($_POST['anneemem'], "int"),
                           GetSQLValueString($_POST['rue'], "text"),
                           GetSQLValueString($_POST['numrue'], "int"),
                           GetSQLValueString($_POST['ville'], "text"),
                           GetSQLValueString($_POST['cp'], "int"),
                           GetSQLValueString($_POST['province'], "text"),
                           GetSQLValueString($_POST['pays'], "text"),
                           GetSQLValueString($_POST['telephone'], "int"));
     
      mysql_select_db($database_mb, $mb);
      $Result1 = mysql_query($insertSQL, $mb) or die(mysql_error());
     
      $insertGoTo = "paiement-abonnement.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "membre")) {
      $insertSQL = sprintf("INSERT INTO site_session (sid) VALUES (%s)",
                           GetSQLValueString($_POST['username'], "text"));
     
      mysql_select_db($database_mb, $mb);
      $Result1 = mysql_query($insertSQL, $mb) or die(mysql_error());
     
      $insertGoTo = "paiement-abonnement.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
     
     
    mysql_connect("localhost", "root", "");
    ?>
    merci d'avance

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut champ non rempli
    "bon tout d'abord ou est le problème
    as tu déjà réussi a faire une requête sql qui fonctionnait?
    quelle difficulté as-tu pour vérifier les champs"

    j'ai bien avancé dans la relation formulaires/bdd, j'ai deja fait des 10aines de test qui ont bien fonctionné avec différentes tables avec sessions, pages protégées, acces restreint ( grace à dreamweaver); d'ailleurs j'ai utilisé un tuto d'ici pour les sessions (user_tbl, session_tbl). il ya encore 2 , 3 ptites choses qui m'échappent mais je les garde pour le dessert

  6. #6
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    c'est pas exactement ce que je veux dire

    en fait ici tu as un script quand même assez compliqué au niveau php
    cependant ton erreur est une erreur sql (mayrde)

    donc ce que tu peux faire c'est partir d'un truc simple
    essaie de faire une requête sql simple

    c'est à dire une statique tu vas ajouter un membre manuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $insertSQL = "INSERT INTO membre (prenom1, prenom2, nom1, nom2, email, pseudo, password, sexe, jour, mois, annee, rue, numrue, ville, cp, province, pays, telephone) VALUES ('jean','étienne','isidore','...',...)"
    Une fois ceci fait il te sera facile de mettre les données dans ta requête
    perso j'aime pas sprintf donc je te montre plutôt comment je ferais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $insertSQL = "INSERT INTO membre (prenom1, prenom2, nom1, nom2, email, pseudo, password, sexe, jour, mois, annee, rue, numrue, ville, cp, province, pays, telephone) VALUES";
    $insertSQL .= GetSQLValueString($_POST['prenom1mem'], "text").",";
    $insertSQL .= GetSQLValueString($_POST['prenom2mem'], "text").",";
    ...
    $insertSQL .= ")";
    ensuite tu fais un echo $$insertSQL comme ça tu peux vérifier a tout moment que le code te donne bien ce qui se rapproche de la requête que tu as réussi a faire passer


    une fois que tu auras fait ça et que tu auras réussi a ajouter des membres dans ta table et ben on verra comment vérifier les champs avant de donner la requête à mysql pour ne pas se faire cracher dessus

    par contre je suis vraiment pas fan de ces codes fais par dreamweaver
    je vais vite refaire ton code pour te montrer ce que serait un code propre
    si tu veux apprendre le php passe pas par des truc comme ça ça salis trop ton code

  7. #7
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    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
    require_once('../Connections/mb.php');
     
    //si le formulaire n'est pas vide on va essayer d'ajouter le membre
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "membre")) {
     
        //on met la première partie de la requête, celle qui ne change jamais
        $insertSQL = "INSERT INTO membre (prenom1, prenom2, nom1, nom2, email, pseudo, password, sexe, jour, mois, annee, rue, numrue, ville, cp, province, pays, telephone) VALUES ";
     
        //ici on ajoute simplement des mysql_real_escape_string en fait ta fonction ne faisait que voir si la fonction était définie sur ton serveur sinon elle mettait mysql_escape_string cela dit ça ne sert strictement a rien il suffit toi de faire cette vérif (si t'as une erreur mysql_real_escape_string not defined ben tu mets l'autre)
     
        $insertSQL .= mysql_real_escape_string($_POST['prenom1mem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['prenom2mem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['nom1mem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['nom2mem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['mailmembre']).',';
        $insertSQL .= mysql_real_escape_string($_POST['pseudo']).',';
        $insertSQL .= mysql_real_escape_string($_POST['mot_de_passe']).',';
        $insertSQL .= mysql_real_escape_string($_POST['sexe']).',';
        $insertSQL .= mysql_real_escape_string($_POST['jourmem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['moismem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['anneemem']).',';
        $insertSQL .= mysql_real_escape_string($_POST['rue']).',';
        $insertSQL .= mysql_real_escape_string($_POST['numrue']).',';
        $insertSQL .= mysql_real_escape_string($_POST['ville']).',';
        $insertSQL .= mysql_real_escape_string($_POST['cp']).',';
        $insertSQL .= mysql_real_escape_string($_POST['province']).',';
        $insertSQL .= mysql_real_escape_string($_POST['pays']).',';
        $insertSQL .= mysql_real_escape_string($_POST['telephone']));
        $insertSQL .= ")";
     
      mysql_select_db($database_mb, $mb);
      $Result1 = mysql_query($insertSQL, $mb) or die(mysql_error());
    ?>
    <form action="<?php echo $editFormAction; ?>" id="membre" name="membre" method="POST">
     
    <input name="prenom1mem" type="text" id="prenom1mem"  />
                    <label for="prenom1mem"></label>
                    <span class="Style80">2°prénom </span>
                    <input name="prenom2mem" type="text" id="prenom2mem" />
                    <label for="prenom2mem"></label>

    voilà le code
    tu pourras plus facilement faire des modifications et le comprendre comme ceci

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

Discussions similaires

  1. Arrêter code si condition If non remplie
    Par maxime350 dans le forum IHM
    Réponses: 5
    Dernier message: 21/01/2010, 21h22
  2. [WD-2003] Affichage de crochets pour les champs non rempli lors de l'impression
    Par formabox dans le forum VBA Word
    Réponses: 1
    Dernier message: 24/04/2009, 09h57
  3. gestion des champs non remplis.
    Par Niki59 dans le forum Langage
    Réponses: 2
    Dernier message: 12/11/2008, 22h12
  4. Mettre en rouge un champ non rempli
    Par maysa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2007, 12h55
  5. Pb IE/Firefox : champs non remplis/ champs remplis
    Par bibiloute dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/05/2006, 14h37

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