neoraptor | J'ai réalisé la migration vers MySQL. J'ai par ailleurs rajouté un moyen de supprimer des personnes et leurs périodes associées.
Y a-t-il des points où il faut faire attention (requêtes SQL, sécurité, autre) ? Et concernant le code, est-ce assez propre ou il y a des parties à revoir?
Merci de vos avis. Voici le script principal (test.php) :
Code :
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="fr-CH" xml:lang="fr-CH">
- <head>
- <title>Inscription</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <link rel="stylesheet" type="text/css" href="style.css"/>
- </head>
- <body onload="Grise('liste2','Supprimer');">
- <?php
- // Vérifie état boutons Reset et Envoyer
- $Submit = $_POST["Submit"];
- $Submit1 = $_POST["Submit1"];
- if ($Submit1<>"" )
- effacer_fichier();
- if ($Submit<>"" ) {
- ecrire_fichier();
- }
- ?>
- <?php
- $Supprimer = $_POST["Supprimer"];
- $noms = $_POST["liste2"];
- echo $noms;
- if ($Supprimer<>"" )
- effacer_personne($noms);
- ?>
- <?php
- function ecrire_fichier()
- {
- $nom=$_POST["NOM"];
- $tel=$_POST["TEL"];
- $email=$_POST["EMAIL"];
- $sam14 = $_POST["sam14"];
- $dim15 = $_POST["dim15"];
- $sam21 = $_POST["sam21"];
- $dim22 = $_POST["dim22"];
- $groupe = $_POST["groupe"];
- $fichier=array("","sam14_","dim15_","sam21_","dim22_" );
- $valeur=array("",$sam14,$dim15,$sam21,$dim22);
- if ($nom<>"" ) {
- // Connexion MySQL
- $db = mysql_connect('localhost', 'user', 'pass');
- mysql_select_db('gestionPermance);
- $sql="SELECT * FROM Personne where Personne.NomPersonne='$nom'";
- $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- // Vérifie si utilisateur déjà existant
- if (mysql_affected_rows()<>0) {
- echo 'Cette personne existe déjà';
- echo '<br/> Entrer un autre nom';
- }
- else {
- // 1. Insérer Personne
- $sql = "INSERT INTO Personne VALUES('','$nom','$tel','$email','$groupe')";
- mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- $sql="SELECT NoPersonne FROM Personne where NomPersonne='$nom'";
- $result=mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- $tmp = mysql_fetch_array($result);
- $noPersonne=$tmp[0];
- for ($i=1;$i<=4;$i++) {
- $passage=$passage+parcoursInsertion($noPersonne,$fichier[$i],$valeur[$i]);
- }
- if ($passage==0) {
- echo "Vous devez vous inscrire à au moins un crénau pour être validé.";
- effacer_personne($nom);
- }
- }
- mysql_close();
- }
- }
- ?>
- <?php
- function parcoursInsertion($noPersonne,$fichier,$periode) {
- $passage=0;
- for ($i=0; $i<=count($periode); $i++) {
- if ($periode[$i]<>"" ) {
- $passage=1;
- // 2. MàJ Inscription
- $temp = $fichier.$periode[$i];
- $sql = "INSERT INTO Periode VALUES('','$temp','$noPersonne')";
- mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- }
- }
- return $passage;
- }
- ?>
- <?php
- function effacer_personne($nom) {
- if ($nom<>"" ) {
- $db = mysql_connect('localhost', 'user', 'pass');
- mysql_select_db('gestionPermance);
- $sql="SELECT Personne.NoPersonne FROM Personne where Personne.NomPersonne='$nom'";
- $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- $tmp = mysql_fetch_array($rep);
- // Vérifie si utilisateur existe
- if ($tmp<>0) {
- $noPersonne=$tmp[0];
- $sql="Delete Periode.* FROM Periode where Periode.FK_NoPersonne='$noPersonne'";
- $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- $sql="Delete Personne.* FROM Personne where Personne.NoPersonne='$noPersonne'";
- $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- }
- else {
- echo 'Cette personne n\'existe pas';
- echo '<br/> Entrer un autre nom';
- }
- }
- }
- ?>
- <?php
- function effacer_fichier() {
- $db = mysql_connect('localhost', 'user', 'pass');
- mysql_select_db('gestionPermance);
- $sql="Delete Periode.* FROM Periode";
- $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- $sql="Delete Personne.* FROM Personne";
- $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- }
- ?>
- <?php
- function lire_fichier($groupe, $periode) {
- $db = mysql_connect('localhost', 'user', 'pass');
- mysql_select_db('gestionPermance);
- $periode="\"$periode\"";
- $groupe="\"$groupe\"";
- $sql ="select t1.NomPersonne, t1.Tel, t1.Email from (
- select * from Personne
- left outer join Periode
- on Periode.FK_NoPersonne=Personne.NoPersonne) as t1
- Where t1.NomPeriode=$periode AND t1.Groupe=$groupe ORDER BY `NomPersonne`";
- $reponse = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- while ($donnees = mysql_fetch_array($reponse) )
- {
- echo $donnees['NomPersonne'] . "(".$donnees['Tel']." / ".$donnees['Email']." )";
- echo "<br/>";
- }
- mysql_close();
- }
- ?>
- <!-- Affichage du tableau d'inscription -->
- <div>
- <h1>Tableau inscription</h1>
- <hr></hr>
- <table border="1">
- <tr>
- <?php
- $N=4;
- $date_tab=array("samedi 13/12/08","dimanche 14/12/08",
- "samedi 20/12/08","dimanche 21/12/08" );
- $header_tab=array("","","Groupe 1","Groupe 2","Groupe 3" );
- $periode_tab=array("14h-15h","15h-16h","16h-17h" );
- $path_tab=array(2=>"cath",3=>"prot",4=>"evan" );
- $filename_tab=array("","sam14_14","sam14_15","sam14_16",
- "dim15_14","dim15_15","dim15_16",
- "sam21_14","sam21_15","sam21_16",
- "dim22_14","dim22_15","dim22_16" );
- for ($k=1;$k<=4;$k++)
- echo "<td class=\"Titre\">$header_tab[$k]</td>";
- echo "</tr>";
- for ($i=1; $i<=12; $i++)
- {
- echo "<tr>";
- for ($j=1; $j<=4; $j++)
- {
- if ($j==1) {
- if (($i-1) % 3 == 0)
- {
- $tmp=($i-1)/3;
- echo "<td class=\"diagonale\" >$date_tab[$tmp]</td></tr><tr>";
- }
- $tmp=($i-1)%3;
- echo "<td class=\"Titre\">$periode_tab[$tmp]</td>";
- }
- else
- {
- echo "<td class=\"normale\">";
- lire_fichier($path_tab[$j], $filename_tab[$i]);
- echo "</td>";
- }
- }
- echo "</tr>";
- }
- ?>
- </table>
- </div>
- <!-- Affichage du formulaire d'inscription -->
- <div>
- <h1>Formulaire d'inscription</h1>
- <hr></hr>
- <form action="test.php" method="post" enctype="multipart/form-data">
- <p>
- <label>Nom</label>
- <input type="text" name="NOM" size="50"/>
- </p>
- <p>
- <label>Téléphone</label>
- <input type="text" name="TEL" size="13"/>
- </p>
- <p>
- <label>Email</label>
- <input type="text" name="EMAIL" size="100"/>
- </p>
- <p>
- <label> Samedi 14/12/08</label><br/>
- <label><input type="checkbox" name="sam14[]" value="14"/>14h-15h</label>
- <label><input type="checkbox" name="sam14[]" value="15"/>15h-16h</label>
- <label><input type="checkbox" name="sam14[]" value="16"/>16h-17h</label>
- </p>
- <p>
- <label> Dimanche 15/12/08</label><br/>
- <label><input type="checkbox" name="dim15[]" value="14"/>14h-15h</label>
- <label><input type="checkbox" name="dim15[]" value="15"/>15h-16h</label>
- <label><input type="checkbox" name="dim15[]" value="16"/>16h-17h</label>
- </p>
- <p>
- <label> Samedi 21/12/08</label><br/>
- <label><input type="checkbox" name="sam21[]" value="14"/>14h-15h</label>
- <label><input type="checkbox" name="sam21[]" value="15"/>15h-16h</label>
- <label><input type="checkbox" name="sam21[]" value="16"/>16h-17h</label>
- </p>
- <p>
- <label> Dimanche 22/12/08</label><br/>
- <label><input type="checkbox" name="dim22[]" value="14"/>14h-15h</label>
- <label><input type="checkbox" name="dim22[]" value="15"/>15h-16h</label>
- <label><input type="checkbox" name="dim22[]" value="16"/>16h-17h</label>
- </p>
- <p>
- <label>Religion</label><br/>
- <label> <input type="radio" name="groupe" value="cath" checked="checked" />Groupe 1</label>
- <label> <input type="radio" name="groupe" value="prot"/>Groupe 2</label>
- <label> <input type="radio" name="groupe" value="evan" />Groupe 3</label>
- </p>
- <p>
- <input type="submit" name="Submit" value="Envoyer" />
- <input type="submit" name="Submit1" value="Reset table" />
- </p>
- <p>
- <input type="reset" name="Reset" value="Remise à zéro" />
- </p>
- </form>
- </div>
- <hr></hr>
- <!-- Lors du chargement de la page >> désactive la lecture -->
- <script type="text/javascript"><!--
- function Grise(element1,element2) {
- input = document.getElementById(element1);
- input.disabled = true;
- input2 = document.getElementById(element2);
- input2.disabled = true;
- }
- //--></script>
- <script type="text/javascript"><!--
- function Degrise(element) {
- input = document.getElementById(element);
- input.disabled = false;
- }
- //--></script>
- <script type="text/javascript" ><!--
- // Vérifie la compatibilité du navigateur
- function GetXmlHttpObject() {
- var xmlHttp=null;
- try {
- // Firefox, Opera 8.0+, Safari
- xmlHttp=new XMLHttpRequest();
- }
- catch (e) {
- // Internet Explorer
- try {
- xmlHttp=new ActiveXObject("Msxml2.XMLHTTP" );
- }
- catch (e) {
- xmlHttp=new ActiveXObject("Microsoft.XMLHTTP" );
- }
- }
- return xmlHttp;
- }
- //--></script>
- <!-- Lors de la sélection d'un groupe >> active la lecture -->
- <script type="text/javascript"><!--
- function active(element,element2,f) {
- var l1 = f.elements["liste1"];
- var l2 = f.elements["liste2"];
- var index = l1.selectedIndex;
- if (index<1) {
- //l2.options.length=0;
- // grise la 2ème liste
- input = document.getElementById(element)
- input.disabled = true;
- input2 = document.getElementById(element2)
- input2.disabled = true;
- }
- else {
- input = document.getElementById(element)
- input.disabled = false;
- input2 = document.getElementById(element2)
- input2.disabled = false;
- // Vérifie compatibilité navigateur
- xmlHttp=GetXmlHttpObject()
- if (xmlHttp == null) {
- alert ("Votre navigateur ne supporte pas les requêtes HTTP." )
- return
- }
- // Prépare une requête sur le serveur
- xmlHttp.open("POST", "sql.php", true);
-
- // attend réponse serveur (gestionnaire d'évènement pour chaque changement d'état)
- xmlHttp.onreadystatechange = function() {
-
- // requête terminée
- if (xmlHttp.readyState == 4)
- // réponse du serveur
- eval(xmlHttp.responseText);
- }
- // assigne un nom et une valeur à l'en-tête de la requête
- xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
- // requête
- var data = "Groupe="+escape(l1.options[index].value)+"&form="+f.name+"&select=liste2";
- // Lance la requête
- xmlHttp.send(data);
- }
- }
- //--></script>
- <!-- Affichage du formulaire de modification -->
- <div>
- <h1>Formulaire de modification</h1>
- <hr></hr>
- <form action="test.php" method="post" name="form_modif" id="form_modif" enctype="multipart/form-data">
- <fieldset>
- <p>
- <select name="liste1" id="liste1" size="4" onchange="active('liste2','Supprimer',this.form);">
- <option value="" selected="selected"></option>
- <option value="cath">Groupe 1</option>
- <option value="prot">Groupe 2</option>
- <option value="evan">Groupe 3</option>
- </select>
- <!-- A générer automatiquement en fonction du groupe -->
- <select name="liste2" id="liste2" >
- </select>
- </p>
- <br/>
- <input type="submit" name="Supprimer" id="Supprimer" value="Supprimer" />
- </fieldset>
- </form>
- </div>
- <hr></hr>
- <div>
- <p>
- <a href="http://validator.w3.org/check?uri=referer">
- <img src="http://www.w3.org/Icons/valid-xhtml10-blue"
- alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
- </p>
- </div>
- </body>
- </html>
|
Voici le script lié avec le javascript (sql.php):
Code :
- <?php
- header('Content-type: text/html; charset=iso-8859-1');
- $db = mysql_connect('', 'user', 'pass');
- mysql_select_db('gestionPermance);
- $sql = "SELECT Personne.NomPersonne FROM Personne WHERE Personne.Groupe='". $_POST["Groupe"]."' ORDER BY `NomPersonne`";
- $result = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
- echo 'var o = null;';
- echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
- echo 's.options.length = 0;';
- while($r = mysql_fetch_array($result))
- echo 's.options[s.options.length] = new Option("'.$r["NomPersonne"].'" );';
- mysql_close($db);
- ?>
|
Et voici les requêtes SQL pour la création des tables :
Code :
- CREATE TABLE `Periode` (
- `NoPeriode` int(11) NOT NULL auto_increment,
- `NomPeriode` tinytext NOT NULL,
- `FK_NoPersonne` int(11) NOT NULL,
- PRIMARY KEY (`NoPeriode`),
- KEY `FK_peNoPersonne` (`FK_NoPersonne`),
- CONSTRAINT `FK_peNoPersonne` FOREIGN KEY (`FK_NoPersonne`) REFERENCES `Personne` (`NoPersonne`) ON DELETE NO ACTION ON UPDATE NO ACTION
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
Code :
- CREATE TABLE `Personne` (
- `NoPersonne` int(11) NOT NULL auto_increment,
- `NomPersonne` tinytext NOT NULL,
- `Tel` tinytext,
- `Email` tinytext,
- `Groupe` tinytext NOT NULL,
- PRIMARY KEY (`NoPersonne`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|