Bonjour !
Je débute en php
Voilà mon problème : je fais un test pour mon site en ce moment, et j'ai trois pages pour l'instant :
- une page "accueil"
- une page "ajouter un stage" qui contient un formulaire pour entrer des données
- un script "traitement" qui traite les données du formulaire. si les champs ont bien été remplis, on peut revenir à la page d'accueil, sinon un message d'erreur s'affiche qui indique les champs qui ont été mal remplis.
Après avoir lu le tutoriel de Pierre-Baptiste Naigon. Je me suis dit que j'allais générer mes pages de cette façon.
J'ai donc créé une table "pages" dans ma BDD et dans le champ contenu, j'entre les chemins des pages "accueil" et "ajouter un stage".
J'ai donc une table avec
id_page = 1; contenu = ./gabarit/accueil.php
id_page = 2; contenu = ./gabarit/formStageHtml.php
Mon fichier "index.php" ressemble à ça :
Code php : 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 <?php //Démarrage de la session session_start(); // Active tout les warning. Utile en phase de développement // En phase de production, remplacer E_ALL par 0 error_reporting(E_ALL); // Inclus le fichier contenant les fonctions personalisées include_once 'mes_fonctions.php'; // Fonction de connexion à la base de données connexion_DB('supopexpat'); // Définit l'Id de la page d'accueil $id_page_accueil = 1; // Récupère l'id de la page courante passée par l'URL // Si non défini, on considère que la page est la page d'accueil if (isset($_GET['id_page'])) { $_ENV['id_page'] = intval($_GET['id_page']); } else { $_ENV['id_page'] = $id_page_accueil; } // Extrait les informations correspondantes à la page en cours de la DB extraction_infos_DB(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <!-- Insère les mots-clés extraits de la DB dans les meta --> <META NAME="keywords" lang="fr" CONTENT="<?php echo $_ENV['mots_cles']; ?>"> <!-- Insère la description extraite de la DB dans les meta --> <META NAME="Description" CONTENT="<?php echo $_ENV['description']; ?>"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- Insère le titre extrait de la DB dans la balise correspondante --> <title><?php echo 'SupopExpat : ' .$_ENV['titre']; ?></title> <link rel="stylesheet" type="text/css" href="design.css"> </head> <body> <div id="chemin_fer"> <?php // Affiche le chemin de fer echo 'Vous êtes ici : '.affiche_chemin_fer($_ENV['id_page']); ?> </div> <div id="bloc_central"> <div id="contenu"> <?php require_once($_ENV['contenu']) ?> </div> </div> <?php deconnexion_DB(); ?> </body> </html>
Je vais donc en chargeant index.php, afficher ma page d'accueil. Là je clique sur le lien "ajouter un stage" pour arriver sur le formulaire de stage.
Code du formulaire :
Code php : 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 <?php //Récupération des données pour créer un nouveau stage dans la base de données echo'<p> <h2> Création d\'un nouveau stage </h2> Vous allez créer un nouveau stage à l\'étranger auquel vous pourrez ensuite associer votre expérience. </p>'; if (!empty($_SESSION['msg_error'])) { echo'<p> <h3>Erreurs</h3> <ul>'.$_SESSION['msg_error'].'</ul> </p>'; } echo '<p> <form action="../core/formStage.php" method="post"> <h4> Informations sur le Pays </h4> <table border=0> <tr> <td>Pays : </td> <td> <select name="pays"> <option value="afriqueDuSud"> Afrique du Sud </option> <option value="algerie"'; if($_SESSION['pays']==algerie) echo 'selected="selected"'; echo '> Algérie </option> <option value="allemagne"'; if($_SESSION['pays']==allemagne) echo 'selected="selected"'; echo'> Allemagne </option> <option value="argentine"'; if($_SESSION['pays']==argentine) echo 'selected="selected"'; echo'> Argentine </option> <option value="australie"'; if($_SESSION['pays']==australie) echo 'selected="selected"'; echo'> Australie </option> <option value="autriche"'; if($_SESSION['pays']==autriche) echo 'selected="selected"'; echo'> Autriche </option> <option value="belgique"'; if($_SESSION['pays']==belgique) echo 'selected="selected"'; echo'> Belgique </option> <option value="bresil"'; if($_SESSION['pays']==bresil) echo 'selected="selected"'; echo'> Bresil </option> <option value="canada"'; if($_SESSION['pays']==canada) echo 'selected="selected"'; echo'> Canada </option> <option value="chili"'; if($_SESSION['pays']==chili) echo 'selected="selected"'; echo'> Chili </option> <option value="chine"'; if($_SESSION['pays']==chine) echo 'selected="selected"'; echo'> Chine </option> <option value="danemark"'; if($_SESSION['pays']==danemark) echo 'selected="selected"'; echo'> Danemark </option> <option value="espagne"'; if($_SESSION['pays']==espagne) echo 'selected="selected"'; echo'> Espagne </option> <option value="etatsUnis"'; if($_SESSION['pays']==etatsUnis) echo 'selected="selected"'; echo'> Etats-Unis </option> <option value="finlande"'; if($_SESSION['pays']==finlande) echo 'selected="selected"'; echo'> Finlande </option> <option value="grece"'; if($_SESSION['pays']==grece) echo 'selected="selected"'; echo'> Grece </option> <option value="inde"'; if($_SESSION['pays']==inde) echo 'selected="selected"'; echo'> Inde </option> <option value="irlande"'; if($_SESSION['pays']==irlande) echo 'selected="selected"'; echo'> Irlande </option> <option value="islande"'; if($_SESSION['pays']==islande) echo 'selected="selected"'; echo'> Islande </option> <option value="israel"'; if($_SESSION['pays']==israel) echo 'selected="selected"'; echo'> Israel </option> <option value="italie"'; if($_SESSION['pays']==italie) echo 'selected="selected"'; echo'> Italie </option> <option value="japon"'; if($_SESSION['pays']==japon) echo 'selected="selected"'; echo'> Japon </option> <option value="lettonie"'; if($_SESSION['pays']==lettonie) echo 'selected="selected"'; echo'> Lettonie </option> <option value="liban"'; if($_SESSION['pays']==liban) echo 'selected="selected"'; echo'> Liban </option> <option value="liechtenstein"'; if($_SESSION['pays']==liechtenstein) echo 'selected="selected"'; echo'> Liechtenstein </option> <option value="lituanie"'; if($_SESSION['pays']==lituanie) echo 'selected="selected"'; echo'> Lituanie </option> <option value="luxembourg"'; if($_SESSION['pays']==luxembourg) echo 'selected="selected"'; echo'> Luxembourg </option> <option value="maroc"'; if($_SESSION['pays']==maroc) echo 'selected="selected"'; echo'> Maroc </option> <option value="mexique"'; if($_SESSION['pays']==mexique) echo 'selected="selected"'; echo'> Mexique </option> <option value="norvege"'; if($_SESSION['pays']==norvege) echo 'selected="selected"'; echo'> Norvege </option> <option value="nouvelleZelande"'; if($_SESSION['pays']==nouvelleZelande) echo 'selected="selected"'; echo'> Nouvelle Zelande </option> <option value="paysBas"'; if($_SESSION['pays']==paysBas) echo 'selected="selected"'; echo'> Pays-Bas </option> <option value="perou"'; if($_SESSION['pays']==perou) echo 'selected="selected"'; echo'> Perou </option> <option value="pologne"'; if($_SESSION['pays']==pologne) echo 'selected="selected"'; echo'> Pologne </option> <option value="portugal"'; if($_SESSION['pays']==portugal) echo 'selected="selected"'; echo'> Portugal </option> <option value="royaumeUni"'; if($_SESSION['pays']==royaumeUni) echo 'selected="selected"'; echo'> Royaume-Uni </option> <option value="russie"'; if($_SESSION['pays']==russie) echo 'selected="selected"'; echo'> Russie </option> <option value="singapour"'; if($_SESSION['pays']==singapour) echo 'selected="selected"'; echo'> Singapour </option> <option value="suede"'; if($_SESSION['pays']==suede) echo 'selected="selected"'; echo'> Suede </option> <option value="suisse"'; if($_SESSION['pays']==suisse) echo 'selected="selected"'; echo'> Suisse </option> <option value="tunisie"'; if($_SESSION['pays']==tunisie) echo 'selected="selected"'; echo'> Tunisie </option> <option value="turquie"'; if($_SESSION['pays']==turquie) echo 'selected="selected"'; echo'> Turquie </option> <option value="ukraine"'; if($_SESSION['pays']==ukraine) echo 'selected="selected"'; echo'> Ukraine </option> </select> </td> </tr> <tr> <td>Ville : </td> <td><input type="text" name="ville" value="'; echo $_SESSION['ville']; echo'"></td> </tr> <tr> <td>Langue : </td> <td><input type="text" name="langue" value="'; echo $_SESSION['langue']; echo'"></td> </tr> </table> <h4> Informations sur le Stage </h4> <table border=0> <tr> <td>Type de Stage : </td> <td><input type="radio" name="type" value="0"'; if($_SESSION['type']==0) echo 'checked="checked"'; echo'> Entreprise </br> <input type="radio" name="type" value="1"'; if($_SESSION['type']==1) echo 'checked="checked"'; echo'> Labo </br> <input type="radio" name="type" value="2"'; if($_SESSION['type']==2) echo 'checked="checked"'; echo'> Ouvrier </br> <input type="radio" name="type" value="3"'; if($_SESSION['type']==3) echo 'checked="checked"'; echo'> Autre </br> </td> </tr> <tr> <td> Nom de l\'entité : </td> <td><input type="text" name="nom" value="'; echo $_SESSION['nom']; echo'"></td> </tr> <tr> <td> Adresse (facultatif) : </td> <td><textarea name="adresse" rows="8" cols="45" >'; echo $_SESSION['adresse']; echo'</textarea></td> </tr> <tr> <td> Description de l\'entité : </td> <td><textarea name="description" rows="8" cols="45" >'; echo $_SESSION['description']; echo'</textarea></td> </tr> </table> <h4> Informations Complémentaires </h4> <table border=0> <tr> <td> Précautions particulières (visa, vaccin...) : </td> <td><textarea name="precautions" rows="8" cols="45">'; echo $_SESSION['precautions']; echo'</textarea></td> </tr> <tr> <td> Remarques : </td> <td><textarea name="remarques" rows="8" cols="45">'; echo $_SESSION['remarques']; echo'</textarea></td> </tr> </table> <input type="submit" value="Envoyer"> </form> </p>'; ?>
Ce formulaire est traité par formStage.html, dont voici le code :
Code php : 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 // CONTROLE DES DONNEES ENTREES DANS DANS FORM_STAGE mysql_connect("localhost", "root", ""); // Connexion à MySQL mysql_select_db("supopExpat"); // Sélection de la base de données supopExpat $msg_error = ''; if (empty($_POST['pays'])){ $msg_error .= '<li>Vous devez choisir un pays</li>'; } if (empty($_POST['ville'])) { $msg_error .= '<li>Vous devez saisir une ville</li>'; } if (empty($_POST['nom'])) { $msg_error .= '<li>Vous devez préciser le nom de l\'entité</li>'; } if (empty($_POST['description'])) { $msg_error .= '<li>Vous devez entrer la description de l\'entité</li>'; } if (empty($msg_error)){ //traitement & enreigstrement $pays = mysql_real_escape_string(htmlspecialchars($_POST['pays'])); $ville = mysql_real_escape_string(htmlspecialchars($_POST['ville'])); $langue = mysql_real_escape_string(htmlspecialchars($_POST['langue'])); $type = mysql_real_escape_string(htmlspecialchars($_POST['type'])); $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom'])); $adresse = mysql_real_escape_string(htmlspecialchars($_POST['adresse'])); $description = mysql_real_escape_string(htmlspecialchars($_POST['description'])); $precautions = mysql_real_escape_string(htmlspecialchars($_POST['precautions'])); $remarques = mysql_real_escape_string(htmlspecialchars($_POST['remarques'])); // on crée les variables associées mysql_query("INSERT INTO infosstages VALUES('', '$pays', '$ville', '$langue', '$type', '$nom', '$adresse', '$description', '$remuneration', '$hebergement', '$precautions', '$remarques')"); //on enregistre les données dans la table des stages $_SESSION['msg_error'] = ''; echo '<p>Données enregistrées</p>'; echo '<p><a href="./index.php?id_page=1"> Retourner à la page d\'accueil </a></p>'; } else{ $_SESSION['msg_error'] = $msg_error; //on crée une variable de session pour aller passer les données sur une autre page $_SESSION['pays'] = $_POST['pays']; $_SESSION['ville'] = $_POST['ville']; $_SESSION['langue'] = $_POST['langue']; $_SESSION['type'] = $_POST['type']; $_SESSION['nom'] = $_POST['nom']; $_SESSION['adresse'] = $_POST['adresse']; $_SESSION['description'] = $_POST['description']; $_SESSION['precautions'] = $_POST['precautions']; $_SESSION['remarques'] = $_POST['remarques']; header('Location: ../index.php?id_page=2'); //redirection vers la page formStageHtml.php } mysql_close(); // déconnexion de la base de données ?>
Ouf ! maintenant qu'on a tout le code on peut passer aux problèmes
Donc mes problèmes :
1. quand j'affiche le formulaire, il y a un problème avec les variables "pays" (dans le select). Je vois donc toujours affiché des "undefined constant chili on ligne xx"
2. quand je charge le formulaire, il est préremplit avec les données d'une session précédente... (je passe les variables de formStage à formStageHtml avec des variables sessions).
J'imagine que pour le 2, il faut qu'à un moment je vide mes variables de session, mais je ne sais pas trop où ni comment
Quant au 1, je ne sais pas pourquoi c'est comme ça. Quand je testais mon formulaire simplement (sans l'appeler dans une page index), ça marchait très bien.
Donc si vous pouvez m'aider à résoudre ce problème, soit en me disant ce qui ne va pas dans mon code, soit en m'expliquant d'autres façons de construire ma page index.php, ce serait vraiment super
Merci,
Cécile
Partager