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 :

Structure d'une page et valider un formulaire


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 Structure d'une page et valider un formulaire
    Bonjour.

    J'ai 3 questions :
    1- Est ce que la structure de ma page "dossier_candidature.php" est correcte.
    Si un candidat a rempli un dossier, lorsqu'il s'identifie j'affiche un formulaire qui contient les données qu'il a saisies pour qu'il puisse les modifier. (pour accéder à cette page il doit donner le nom de la société, son nom et son prénom qui sont controlés dans une table).
    Si le candidat n'a pas rempli de dossier j'affiche le même formulaire mais là il est vide.

    structure de la page "dossier_candidature.php"
    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
    <?php
    require ('connect.php');
    require('fonctionsphp.php');
     
    //ici je fais tous les tests if (isset($POST('xxxxxx')) du formulaire
    $etablist = "";
    if (isset($_POST['etablist'])){
        for ($i = 0, $c = count($_POST['etablist']); $i < $c; $i++) {
            $etablist = "" . $_POST['etablist'][$i] . "";
        }
    }
    ect...
     
    //ici je teste si l'établissement a été renseigné sur une page logging
    if (isset($_REQUEST['id_etablist'])){
    	$id_etablist = $_REQUEST['id_etablist'];
    	$sql = mysql_query("SELECT * FROM etablissement WHERE id_etablist = $id_etablist");
    	if (mysql_num_rows($sql) > 0){
    		$res = mysql_fetch_array($sql);
    		$id_etablist_table = $res['id_etablist'];
    		$etablist = stripslashes(htmlentities(trim($res['type_etablist'])));
                            etc...
             }
    	include 'formulaire_candidature.php';
    }
    else { 
    	include 'formulaire_candidature.php';
    }
    2- Je ne sais pas où placer l'appel des fonctions Modifier_donnes et Enregistrer_donnees.

    3- Comment et où afficher un message informant qu'il y a une erreur de saisie

    Merci d'avance.

  2. #2
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 493
    Points : 295
    Points
    295
    Par défaut
    Pour ma part, je fais toujours deux pages bien distinctes
    1. La page contenant le formulaire
    2. La page verif_formulaire
    Dans la page verif formulaire, lorsqu'il y a une erreur, je redirige vers le formulaire avec ?error=1 par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($_POST['nom'] == '' ) {
        header("Location: formulaire.php?error=1");
        exit();
    }
    et dans ton formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    if ( $_GET['error'] == 1 ) {
    ?>
                <div class="erreur">Attention, le champ nom est obligatoire. Veuillez recommencer SVP.</div>
    <?
    }
    ?>

  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
    Donc je viens de tester le code et j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at c:\weblocal\sites\clubeuropeendelasante\index.php:6) in c:\weblocal\sites\clubeuropeendelasante\prix_sante\appels\dossier_candidature.php on line 365
    J'ai bien une page pour le formulaire (formulaire_candidat.php) et une page de controle (dossier_candidat.php).
    Lorsqu'on valide le formulaire, je veux afficher un message d'erreur si un input n'est pas renseigné.

    Merci d'avance.

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Si tu as cette erreur, c'est que des caractères ont déjà été envoyés au client.

    Vérifies bien qu'il n'y a rien d'envoyé avant 'header()' (pas de echo, pas de retour à la ligne avant le premier '<?php', pas de fermeture de balise php, ...)

  5. #5
    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
    Avant d'aller plus loin j'aimerai un avis.
    Mes 2 pages (formulaire_candidat.php) et (dossier_candidat.php) doivent servir à la fois à enregistrer un dossier et à pourvoir le modifier.
    Je me demande si je dois faire un fichier pour la saisie et un autre pour les modifications.

    Est ce que ce ne serait pas plus simple pour les traitements?

  6. #6
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par philippef Voir le message
    Avant d'aller plus loin j'aimerai un avis.
    Mes 2 pages (formulaire_candidat.php) et (dossier_candidat.php) doivent servir à la fois à enregistrer un dossier et à pourvoir le modifier.
    Je me demande si je dois faire un fichier pour la saisie et un autre pour les modifications.

    Est ce que ce ne serait pas plus simple pour les traitements?
    Non, je ne pense pas que ce serait beaucoup plus simple pour les traitements. Par contre, ça rendrait la maintenance nettement plus complexe...

    Mais je n'ai pas bien compris la différence entre le formulaire et le dossier. A quoi servent ces deux pages ?

  7. #7
    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
    Le code de mes 2 pages est long dossier_candidatures = 577 lignes de code
    et le formulaire fait 840 lignes.

    Sur les tuto que j'ai vu c'est ce qui est conseillé, c'est pour ça que j'ai adopter cette façon de travailler.

    Je mets mes pages en pièce jointe
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Maintenant, je comprend mieux, tu as un fichier qui s'occupe de la gestion des données (récupération / validation / enregistrement) et un fichier qui présente les informations (affiche le formulaire).

    Tu n'as pas vraiment 2 pages comme le proposait elcoyotos, mais deux fichiers, le fichier formulaire étant inclus dans le fichier dossier selon les besoins. Si tu veux conserver cette structure, il ne sert à rien de faire un header(), mais il "suffit" de récupérer les erreurs dans ton formulaire pour les afficher.

  9. #9
    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 Eusebe Voir le message
    Maintenant, je comprend mieux, tu as un fichier qui s'occupe de la gestion des données (récupération / validation / enregistrement) et un fichier qui présente les informations (affiche le formulaire).

    Tu n'as pas vraiment 2 pages comme le proposait elcoyotos, mais deux fichiers, le fichier formulaire étant inclus dans le fichier dossier selon les besoins. Si tu veux conserver cette structure, il ne sert à rien de faire un header(), mais il "suffit" de récupérer les erreurs dans ton formulaire pour les afficher.
    Pardon j'avais pas vraiment fait la différence entre "page" et "fichier".
    Quand tu dis "il suffit", c'est bien là mon problème car je ne sais ni où ni comment afficher les messages d'erreurs uniquement au moment de la validation.

  10. #10
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Je suis désolé, ça doit être la fatigue, mais je n'arrive pas bien à comprendre où tu as un problème

    J'ai regardé en diagonale ton fichier dossier_candidat.php, et il me semble qu'il affiche des messages d'erreur si un champs n'est pas valide, non ?

  11. #11
    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
    C'est moi qui doit être fatigué.
    En tout cas merci pour ta patience.

    Si j'écris :
    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
    if ((!empty($etablist)) && (!empty($etablist_nom)) && (!empty($etablist_adresse)) && (!empty($etablist_cp)) && (!empty($etablist_ville)) && (!empty($etablist_tel)) && (!empty($etablist_email)) && (!empty($etablist_effectif))){
    	$message1 ="ok";
    }
    else {
    	$message1= "page incomplete";
    }
     
    etc....
     
    	if (($message1 == "ok") && ($message2 == "ok")){
    		enregistrer_etablist($etablist, $etablist_nom, $etablist_adresse, $etablist_cp, $etablist_ville, $etablist_tel, $etablist_fax, $etablist_email, $etablist_effectif);
    		$id_etablist = mysql_insert_id();
    		echo "<p align='center'><font color='navy'><b> Le dossier est enregistré.</b></font></p>";
    	}
    	else {
    		echo $message1;
    	}
    	include 'formulaire_candidature.php';
    le message s'affiche dès l'ouverture de la page avant qu'on ait cliqué sur le bouton submit.

  12. #12
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Ok, je comprend mieux

    Pour savoir si c'est la première visite ou si tu dois traiter l'envoi du formulaire, il faut que tu vérifies si les paramètres POST sont passés ou non.

    S'il sont passés, il faut les vérifier, et éventuellement afficher le message d'erreur. S'ils ne sont pas passés, tu peux te contenter d'afficher ton formulaire vide.

    Ca pourrait donner quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $messages = array();
     
    // test d'existence des variables POST
    if (isset($_POST('var1'))
    {
        // vérification des variables, traitement des erreurs...
        // S'il y a des erreurs, remplissage du tableau $messages
        // Si tout est ok : sauvegarde dans la base
    }
     
    include 'formulaire.php';
    Dans ton fichier formulaire.php, tu peux vérifier le contenu de $messages, et afficher les messages d'erreurs, les avertissements ou même l'information que c'est bien stocké dans la base, à toi de voir ...

  13. #13
    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.

    Je crois avoir trouvé, voilà ce que j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	else if (isset($_POST['valider'])) {
    			echo $message1;
    			echo $message2;
    	}
    valider c'est mon bouton submit.
    Je viens de tester et ça marche.

    Je crois avoir découvert un nouveau problème avec les checkbox

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/07/2011, 18h09
  2. Ouverture d'une page aprés validation d'un formulaire
    Par civodultrebor37 dans le forum Langage
    Réponses: 11
    Dernier message: 14/12/2006, 14h19
  3. [PEAR][HTML_QuickForm] Comment afficher une page après validation du formulaire ?
    Par jpinfotech dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 27/11/2006, 16h58
  4. Réponses: 18
    Dernier message: 03/03/2006, 19h19

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