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

Langage PHP Discussion :

Petit soucis de validation


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Petit soucis de validation
    Bonjour,

    C'est surement simple !! mais je vois pas
    Quand je valide le formulaire et que je n'ai pas de message $id_proprio ne s'affiche pas
    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
    if (isset($_SESSION['id_proprio'])){
    	$id_proprio = $_SESSION['id_proprio'];
    }
    $message = array();
     
    if (isset($_POST['valider'])){
    	// Affichage des messages/infos
    	if (!empty($message)) {
        		foreach ($message as $msg) {
            		echo '<p align="center"><span style="color:red">'.$msg.'</span></p>';
        		}
    	}
    	//si pas de message, enregistrement de l'annonce
    	if (empty($message)) {
    		echo "$id_proprio";
    	}
    }
    Je fais un echo de $id_proprio juste pour voir si mes valeurs sont correctes

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Assure toi d'avoir bien démarré la session et controle son contenu.
    Au passage simplement

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Var_dump($_SESSSION) me renvoie bien tous les paramètres passés en session dont id_proprio.

    Si je fais un echo $id_proprio juste après if (isset($_POST['valider'])) l'id_proprio apparait bien.

    Si je provoque une erreur j'entre bien dans la boucle foreach

    Est ce que ce n'est pas dû à $message=array(); ?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par philippef Voir le message
    Est ce que ce n'est pas dû à $message=array(); ?
    Logiquement il faudrait définir le contenu de $message à l'intérieur de la condition if (isset($_POST['valider']))

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Est ce que ce n'est pas dû à $message=array(); ?
    Je pensais que cette ligne n'était pas que pour le test.
    Si tu définis manuellement $message, a quoi cela sert-il de tester sa valeur juste en dessous ?

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je pensais que cette ligne n'était pas que pour le test.
    Si tu définis manuellement $message, a quoi cela sert-il de tester sa valeur juste en dessous ?
    Dans une autre page je controle que le formulaire est correctement rempli et j'utilise $message[] = 'mon texte'; J'ai environ 15 controles

    Avant d'enregistrer le formulaire je controle $message . Si il y a des messages je les affiche, s'il n'y a pas de message alors j'enregistre.

  7. #7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi dans le code que tu nous montres définis tu $message comme un tableau vide et juste en dessous controles-tu s'il est vide ou non ?

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Pardon si je ne suis pas clair dans mon explication.
    Je redonnes le code complet de ma page
    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
    <?php
    require('proprietaires/annonces/fonctionsphp.php');
    require ('connect.php');
    if (isset($_SESSION['id_proprio'])){
    	$id_proprio = $_SESSION['id_proprio'];
    }
    $message = array();
     
    $departement = "";
    //
    $displayDiv0 = 'none';
    $displayDiv1 = 'block';
    $displayDiv2 = 'none';
    $displayDiv3 = 'none';
    $displayDivSaison = 'none';
    $semaine = array();
    $Disponibilite = array();
     
    $year = date('Y');
    $date = date("Y-m-d");
    //récupération du n° de la dernière annonce
    $sql = mysql_query("SELECT ref_annonce FROM logements ORDER BY ref_annonce DESC Limit 1");
    $nombreligne = mysql_num_rows($sql);
    if ($nombreligne > 0){
    	$res = mysql_fetch_array($sql);
    	$ref_annonce = $res['ref_annonce'];
    	$ref_annonce = $ref_annonce + 1;
    }
    else {
    	$ref_annonce = "000001";
    }
    include ('b_control_formulare.php');
     
    //*************************************************************
    //   Enregistrements dans la table logements
    //*************************************************************
    if (isset($_POST['valider'])){
    	// Affichage des messages/infos
    	if (!empty($message)) {
        		foreach ($message as $msg) {
            		echo '<p align="center"><span style="color:red">'.$msg.'</span></p>';
        		}
    	}
    	//si pas de message, enregistrement de l'annonce
    	if (empty($message)) {
    		echo $id_proprio $type_logement $codep $ville;
    	}
    }
    //******** FIN *************
    if (empty($_SESSION['id_proprio'])){
    	$displayDiv1='none'; 
    	echo "<div style='position:relative;width:470px;margin-left:10px;background-color:#ffffff;'>";
    	echo "<p align='center'><span style='color:red;'><br /><br />Merci de vous enregistrer ou de vous identifier pour déposer une annonce</span></p></div>";
    }
    else {
    	include ('c_insert_update.php');
    	include ('d_property_formulare.php');
    	include ('e_calendar_formulare.php');
    }
    ?>
    j'espère que c'est plus clair comme ça

  9. #9
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    tu as un problème de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (empty($message)) {
    	echo $id_proprio . ' ' . $type_logement . ' ' . $codep $ville;
    }

  10. #10
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Même si je ne mets que echo $id_proprio; rien ne s'affiche.

    C'est bien ce code qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (empty($message)) {
               echo $id_propio;
    }
    Puisque ce code fonctionne et il affiche les messages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	if (!empty($message)) {
        		foreach ($message as $msg) {
            		echo '<p align="center"><span style="color:red">'.$msg.'</span></p>';
        		}
    	}
    Est ce qu'il y a une autre solution ?

  11. #11
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Je ne serais pas étonné si $message n'était pas vide.
    Deux manières de le savoir :
    - afficher le code source généré et voir si cette ligne html apparait (le contenu du tableau $message a été parcouru, mais il contient un espace) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p align="center"><span style="color:red"> </span></p>
    - ajouter cette ligne avant le test sur le $_POST['valider'] (test explicite) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo (empty($message)) ? '<p>Message vide</p>' : '<p>Message non vide</p>';
    Si mon hypothèse se confirme, il faudra aller faire un tour dans b_control_formulare.php et voir comment tu gères $message dans ce script.
    Fred

  12. #12
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Je viens de regarder le code source et je n'ai rien vu d'anormal (pas d'espace)

    par contre le 2è test affiche 'Message non vide'.

    Pour les zones obligatoires mes messages sont construits de la même façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message[] = "La zone XX n'est pas renseignée.";
    Est ce que ' peut créer un problème?

  13. #13
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Je persiste.
    Quelque part dans b_control_formulare.php,
    tu dois faire ceci :
    et, dans ce cas, $message n'est pas vide :
    il contient un élément vide (ce qui n'est pas pareil).

    D'où la ligne html dans le code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p align="center"><span style="color:red"></span></p>
    sans espace (je fais une concession) entre les balises <span>.
    Si $message était réellement vide, cette ligne n'existerait pas.

    Me trompe-je ?

  14. #14
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Tu veux dire que je dois traiter ce code autrement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (!empty($_POST['nbre_pieces'])) {
    	$chaine = $_POST['nbre_pieces'];
    	if (tout_numerique($chaine))
    		$message[] = "";
    	else
    		$message[] = "Le nombre de pièces n'est pas valide.";
    }
    Je n'ai pas d'espace entre <span> et </span>

  15. #15
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_POST['nbre_pieces']) && !tout_numerique($_POST['nbre_pieces'])) {
    	$message[] = "Le nombre de pièces n'est pas valide.";
    }

  16. #16
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Effectivement,
    en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	if (tout_numerique($chaine))
    		$message[] = "";
    	else
    		$message[] = "Le nombre de pièces n'est pas valide.";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	if (!tout_numerique($chaine))
    		$message[] = "Le nombre de pièces n'est pas valide.";
    Lorsqu'il n'y a pas de message, tu devrais voir ton id_proprio s'afficher.
    Fred

  17. #17
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci à vous Sabotage et Micetf, c'est bien $message= "" qui m'ennuie.

    Je viens de corriger et ça marche

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

Discussions similaires

  1. [ZF 1.11] Petit soucis entre Ajax et validation d'un formulaire
    Par hsmr dans le forum MVC
    Réponses: 1
    Dernier message: 07/01/2013, 14h20
  2. petit soucy de fenetre cmd
    Par FeetloveR666 dans le forum Windows
    Réponses: 5
    Dernier message: 03/07/2004, 14h24
  3. petit soucis lors d'un LOAD DATA INFILE
    Par Jovial dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 04/06/2004, 11h58
  4. Réponses: 6
    Dernier message: 21/01/2004, 13h25
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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