domi_bu | antac a écrit :
en même temps tu as pas besoin de tout nous montrer, faut voir la façon dont tu indentes, dont tu nommes et gères tes variables, etc...
|
bon ok, je me lance. Alors voici une page qui gère la creation d'enseignants. J'ai une page dans un réperteroire "controleur", une page dans un répertoire "vue" et un index.php qui appelle le bon contrôleur. 1) tout d'abord le controleur :
Code :
- <?php
- include_once 'class/personne.class.php';
- include_once 'class/etablissement.class.php';
- include_once 'class/securite.class.php';
- /* initialisation des variables qui seront ensuite reprises dans la vue */
- $id_etablissement = $_SESSION['_ID_ETABLISSEMENT'];
- $id_personne = "";
- $civilite=0;
- $nom = "";
- $prenom = "";
- $email = "";
- $login = "";
- $password = "";
- $commentaire = "";
- $cp="";
- $adresse1="";
- $adresse2="";
- $cp="";
- $commune="";
- $erreur = false;
- $erreur_libelle = "";
- // si formulaire posté
- if (isset($_POST['ok']))
- {
- $_POST = array_map('securite::html', $_POST);
- $id_personne = $_POST['id_personne'];
- //est ce que cette personne essaye d'accéder à un administrateur qui n'est pas de son établissement ?
- if ($id_personne != "" ){
- if (Securite::login_autorise_personne($_SESSION['_ID_PERSONNE'], $id_personne) == false ) {header('Location: index.php?section=acces_interdit');exit;}
- }
- $civilite = $_POST['civilite'];
- $nom = $_POST['nom'];
- $prenom = $_POST['prenom'];
- $email = $_POST['email'];
- $password = $_POST['password'];
- $commentaire = $_POST['commentaire'];
- $adresse1 = $_POST['adresse1'];
- $adresse2 = $_POST['adresse2'];
- $cp = $_POST['cp'];
- $commune = $_POST['commune'];
- // vérif du nom
- if (($_POST['nom'] == "" ) or (!isset($_POST['nom'])))
- { $erreur_libelle .= "- Saisir un nom. <br />"; $erreur = true; }
- else {
- // vérif du nom
- if (!preg_match("#^[a-zA-Z' ]{2,}$#", $_POST['nom']))
- { $erreur_libelle .= "- Le nom ne doit contenir que des lettres. <br />"; $erreur = true; }
- }
- // vérif présence de l'email
- if (($_POST['email'] == "" ) or (!isset($_POST['email'])))
- { $erreur_libelle .= "- Saisir un email. <br />"; $erreur = true; }
- else {
- // vérif format de l'email
- if (!preg_match("/^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/", $_POST['email']))
- { $erreur_libelle .= "- Format d'email incorrect (exemple correct : eric.dupont@orange.fr). <br />"; $erreur = true; }
- }
- // vérifier saisie login
- if ((!isset($_POST['login'])) or ($_POST['login']=="" ))
- { $erreur_libelle .= "- Saisir un login. <br />"; $erreur = true; }
- else {
- // vérifier unicité login
- if (isset($_POST['login'])) {
- $login = $_POST['login'];
- if ( (personne::verifUniciteLogin($_POST['login'], $_POST['id_personne']) == false) )
- { $erreur_libelle .= "- Ce login est déjà utilisé. <br />"; $erreur = true; }
- }
- }
- // vérif du password
- if (($_POST['password'] == "" ) or (!isset($_POST['password'])))
- { $erreur_libelle .= "- Saisir un mot de passe. <br />"; $erreur = true; }
- // si pas d'erreur => maj base de données
- if ($erreur == false)
- {
- $personne = new personne($_POST['id_personne'], 1, $_SESSION['_ID_ETABLISSEMENT'], null, $_POST['civilite'], strtoupper($_POST['nom']), ucwords($_POST['prenom']), $_POST['login'], $_POST['password'], null, null, $_POST['commentaire'], $_POST['adresse1'], $_POST['adresse2'], $_POST['cp'], $_POST['commune'], null, $_POST['email'], null, "N", null, $_SESSION['_LOGIN'], $_SESSION['_LOGIN']);
- if ($_POST['id_personne']!= "" )
- // ==> modification en base
- {
- personne::update($personne);
- // renvoie vers la liste des enseignants apres la modif
- header("location: index.php?section=liste_enseignant" );
- }
- else
- // ==> insertion en base d'un nouvel admin (type = 1)
- {
- $lastID = personne::insert($personne);
- $_GET['id_personne'] = $lastID;
- // renvoie vers la liste des affectations apres la creation
- header("location: index.php?section=enseignant_affectation&id_personne=".$lastID);
- }
- }
- }
- $id_etablissement = $_SESSION['_ID_ETABLISSEMENT'];
- // cas de la modif d'un enseignant ==> recherche des infos de cet enseignant en base
- if (isset($_GET['id_personne'])) {
- $_GET = array_map('securite::html', $_GET);
- $id_personne = $_GET['id_personne'];
- //est ce que cette personne essaye d'accéder à un administrateur qui n'est pas de son établissement ?
- if (Securite::login_autorise_personne($_SESSION['_ID_PERSONNE'], $id_personne) == false ) {header('Location: index.php?section=acces_interdit');exit;}
- $personne = personne::select($id_personne);
- $id_etablissement = $personne['id_etablissement'];
- $civilite = $personne['civilite'];
- $nom = $personne['nom'];
- $prenom = $personne['prenom'];
- $login = $personne['login'];
- $email = $personne['email'];
- $password = $personne['password'];
- $commentaire = $personne['commentaire'];
- $adresse1 = $personne['adresse1'];
- $adresse2 = $personne['adresse2'];
- $cp = $personne['cp'];
- $commune = $personne['commune'];
- }
- include_once 'vue/enseignant/enseignant.php';
- ?>
|
je vous l'avais dit, c'est verbeux....
Et la vue :
Code :
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Etablissement</title>
- <link rel="stylesheet" media="screen" type="text/css" title="Design" href="vue/css/style.css" />
- <script src="vue/js/verif_formulaire_etablissement_login.js" type="text/javascript"></script>
- <script src="vue/js/generatePassword.js" type="text/javascript"></script>
- </head>
- <body>
- <?php include_once("vue/include/en_tete.php" ); ?>
- <?php include_once("vue/include/menu.php" ); ?>
- <div id="contenu">
- <!-- ******************
- * menu à onglets *
- ****************** -->
- <?php if(isset($id_personne)){ $onglet_actif = 1; include_once 'vue/enseignant/entete_enseignant.php';} ?>
- <!-- *************************
- * formulaire enseignant *
- ************************* -->
- <!-- <form name="f" class="form_centre" method="post" action="index.php?section=enseignant&id_personne=<?php echo $id_personne; ?>" onsubmit="return verifForm(this)" > -->
- <form id="f" class="form_centre" method="post" action="index.php?section=enseignant" onsubmit="return verifForm(this)" >
- <p>
- <input type="hidden" name="id_etablissement" value="<?php echo $id_etablissement; ?>" />
- <input type="hidden" name="id_personne" value="<?php echo $id_personne; ?>" />
- <label>Civilité :</label> <select name="civilite" onkeyup="verif_civilite(this)" >
- <option value="0" selected="selected">-- civilité --</option>
- <option value='Melle'<?php if ($civilite=='Melle') {echo "selected='selected'";}?>>Mademoiselle</option>
- <option value='Mde' <?php if ($civilite=='Mde') {echo "selected='selected'";}?>>Madame</option>
- <option value='Mr' <?php if ($civilite=='Mr') {echo "selected='selected'";}?>>Monsieur</option>
- </select><br />
- <label>Nom :</label> <input type="text" name="nom" class="UpperCase" value = "<?php echo $nom ?>" onblur="verif_nom(this)" /><br />
- <label>Prénom :</label> <input type="text" name="prenom" class="Capitale" value = "<?php echo $prenom ?>" /> <br />
- <label>Email :</label> <input type="text" name="email" value = "<?php echo $email ?>" onblur="verif_email(this)" /><br />
- <label>Login :</label> <input type="text" name="login" id="login" value = "<?php echo $login ?>" onblur="verif_login(this)" /><br />
- <!-- <input type="checkbox" name="choixautologin" onclick="login_disabled()"/><em>Laisser choisir le système</em><br /> -->
- <label>Mot de passe :</label> <input type="text" id="password" name="password" value="<?php echo $password?>" onblur="verif_password(this)" title="un bon mot de passe doit être une combinaison de lettres et chiffres, et de longueur supérieure à 6 caractères"/><input type="button" name="genererpassword" value="Générer un mot de passe" onclick="generatePassword()"/><br />
- <label>Commentaire :</label><textarea name="commentaire" rows="5" cols="40"><?php echo $commentaire?></textarea> <br /><br />
- </p>
- <fieldset class='width500px'><legend>Adresse</legend>
- <label>Adresse 1:</label> <input type="text" name="adresse1" value="<?php echo $adresse1 ?>" maxlength="45" size = "45" /> <br />
- <label>Adresse 2:</label> <input type="text" name="adresse2" value="<?php echo $adresse2 ?>" maxlength="45" size = "45" /> <br />
- <label>Code postal :</label> <input type="text" name="cp" value="<?php echo $cp ?>" maxlength="5" size="5" /> <br />
- <label>Commune :</label> <input type="text" name="commune" value="<?php echo $commune ?>" /> <br /><br />
- </fieldset>
- <p>
- <label><input type="submit" name="ok" value="OK" /><br /></label>
- <br /><br /><span class="message_erreur"><?php echo $erreur_libelle ?></span>
- </p></form>
- </div>
-
-
-
-
-
- <?php include_once("vue/include/pied_page.php" ); ?>
- </body>
- </html>
|
exemple de classe pour mettre à jour la bdd mysql :
Code :
- public static function insert(personne $personne)
- {
- include_once 'connectionBDD.class.php';
- include_once 'class/date.class.php';
- // creation d'un acces bdd
- // $maconnexion = new connectionBDD();
- // $bdd = $maconnexion->getconnectionBDD();
- $bdd = connectionBDD::getInstance()->getConnexion();
- $requete = $bdd->prepare('insert into personne(
- id_type_personne,
- id_etablissement,
- id_regime_scolaire,
- civilite,
- nom,
- prenom,
- login,
- password,
- age_password,
- date_naissance,
- commentaire,
- adresse1,
- adresse2,
- cp,
- commune,
- pays,
- email,
- photo,
- is_admin,
- sexe,
- date_creation,
- auteur_creation,
- date_maj,
- auteur_maj
- ) values (
- :id_type_personne,
- :id_etablissement,
- :id_regime_scolaire,
- :civilite,
- :nom,
- :prenom,
- :login,
- :password,
- :age_password,
- :date_naissance,
- :commentaire,
- :adresse1,
- :adresse2,
- :cp,
- :commune,
- :pays,
- :email,
- :photo,
- :is_admin,
- :sexe,
- now(),
- :auteur_creation,
- null,
- null)
- ');
- $requete->bindValue(':id_type_personne', $personne->id_type_personne);
- $requete->bindValue(':id_etablissement', $personne->id_etablissement);
- $requete->bindValue(':id_regime_scolaire', $personne->id_regime_scolaire);
- $requete->bindValue(':civilite', $personne->civilite);
- $requete->bindValue(':nom', $personne->nom);
- $requete->bindValue(':prenom', $personne->prenom);
- $requete->bindValue(':login', $personne->login);
- $requete->bindValue(':password', $personne->password);
- $requete->bindValue(':age_password', $personne->age_password);
- $requete->bindValue(':date_naissance', $personne->date_naissance);
- $requete->bindValue(':commentaire', $personne->commentaire);
- $requete->bindValue(':adresse1', $personne->adresse1);
- $requete->bindValue(':adresse2', $personne->adresse2);
- $requete->bindValue(':cp', $personne->cp);
- $requete->bindValue(':commune', $personne->commune);
- $requete->bindValue(':pays', $personne->pays);
- $requete->bindValue(':email', $personne->email);
- $requete->bindValue(':photo', $personne->photo);
- $requete->bindValue(':is_admin', $personne->is_admin);
- $requete->bindValue(':sexe', $personne->sexe);
- $requete->bindValue(':auteur_creation', $personne->auteur_creation);
- $requete->execute() or die(print_r($requete->errorInfo()));
- return $bdd->lastInsertId();
- }
|
Donc mes questions :
- ça vous parait correct ? et bien fait ?
- je contrôle tout ce qui arrive par le formulaire, même si la page html contrôle en amont avec son propre code js. N'est ce pas trop luxueux ? (cette partie est particulièrement verbeuse....)
- l'utilisation de fonction dans des classes pour mettre à jour la bdd : est ce la bonne méthode ? Le tout fonctionne parfaitement. Indulgence sivouplai, je débute dans ce langage. Je vous remercie d'avance de tous les commentaires que vous pourriez faire sur cet extrait. Comme j'ai pas mal de pages à faire dans ce style, je voulais avoir des avis avant de me lancer dans les autres pages. DOminique
|