Création de l'index : problème avec le tuto "conception d'un site dynamique"
Bonjour !
Je débute en php :oops:
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:
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:
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:
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 :D
Merci,
Cécile