gestion absences/presences en php

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

03 mai 2011, 12:09

Bonjour,
- J'aimerais pouvoir modifier ou supprimer les élèves ou les profs ou les matières depuis le site est ce possible??par exemple changer le nom d'un élève ou ajouter un numéro de tel (je vais ajouter des champs dans ELEVES)
Tu fais un formulaire html de saisie pour chaque table avec le programme php qui exécute la requête INSERT.
- Quand on imprime est ce qu'on peut modifier le texte qui est à l'écran? (ex : enlever le mot "absent(e) pour que les case soit vierge si on n'a pas encore enregistrer la feuille de présence)
Tu crée une page modèle pour l'impression similaire à la page "formAssiduite.php" où les mots "absent(e)" ne figurent pas dans le code et imprime-là, comme on a fait pour exporter vers Excel, on a créé une page modèle qui s'appelle "formAssiduite_Export"
- Est ce que ça serait possible d'archiver les élèves qui sont actuellement en deuxième année pour ne pas les avoir dans la liste des élève l'an prochain ?
Chaque nouvelle année, il faut archiver toute la base de données dans un fichier ZIP nommé par date par exemple, puis vider les tables élèves, assiduite, ... etc. c'est à dire qu'il faut remettre à zéro toutes les tables qui contiennent l'activité de l'année, pour cela tu peux écrire un script SQL.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

03 mai 2011, 14:24

Merci pour ces précisions!
alors pour l'instant j'ai fais ça :

ajouter_eleve.php
<?php
	$nom = isset($_GET['nom']) && !empty($_GET['nom'])? $_GET['nom'] : null;
	$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
	$prenom = isset($_GET['prenom']) && !empty($_GET['prenom'])? $_GET['prenom'] : null;
	$adresse = isset($_GET['adresse']) && !empty($_GET['adresse'])? $_GET['adresse'] : null;
	$code_postal = isset($_GET['code_postal']) && !empty($_GET['code_postal'])? $_GET['code_postal'] : null;
	$ville = isset($_GET['ville']) && !empty($_GET['ville'])? $_GET['ville'] : null;
	$portable = isset($_GET['portable']) && !empty($_GET['portable'])? $_GET['portable'] : null;
	$mail = isset($_GET['mail']) && !empty($_GET['mail'])? $_GET['mail'] : null;
	$date_de_naissance = isset($_GET['date_de_naissance']) && !empty($_GET['date_de_naissance'])? $_GET['date_de_naissance'] : null;

		// on se connecte à notre base
	   // $base = mysql_connect ('serveur', 'login', 'pass');  
		//mysql_select_db ('ma_base', $base) ;  
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
?>
<?php

			// enregistrer la saisie du formulaire
		if (isset($_GET['action']) && $_GET['action']=='Enregistrer')
		{
			//
			$message = "";
			if (empty($nom)) $message .= "<p>Le nom est obligatoire !</p>";
			if (empty($prenom)) $message .= "<p>Le prenom est obligatoire !</p>";
			if (empty($idClasse)) $message .= "<p>La classe est obligatoire !</p>";
			if (empty($message))
			{
			  $sql = 'INSERT INTO eleve VALUES("'.$_POST['nom'].'", "'.$_POST['prenom'].'", "'.$_POST['idClasse'].'"'; 
			  mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
			  //echo $sql;
						
						if (!@mysql_query($sql)) $message .= "<li>".$nomEleve." => Erreur : ".mysql_error()."</li>";
				if (empty($message)) $message = "Enregistrement effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
?> 
<html>
<head>
	<title>Ajout d'élève dans la base</title>
</head>
<body>
			<form name="form2" action="" method="get">
				Nom : <input type="text" id="nom" name="nom" value=""/>
				Prenom : <input type="text" id="prenom" name="prenom" value=""/>
				Classe : <input type="text" id="idClasse" name="idClasse" value=""/>
				<br/>
				<input type="submit" name="action" value="Enregistrer" />
			</form>
			<div id="message"><?php echo isset($message)?$message:''; ?></div>
</body>

</html>
mais il me dit qu'il y a des erreurs :
Undefined index: nom in C:\wamp\www\projet\site classe\ajouter_eleve.php on line 29
Undefined index: prenom in C:\wamp\www\projet\site classe\ajouter_eleve.php on line 29
Undefined index: idClasse in C:\wamp\www\projet\site classe\ajouter_eleve.php on line 29

Erreur SQL !INSERT INTO eleve VALUES("", "", ""
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

je sais que sa veut dire que mes variables ne sont pas définis mais je les est pourtant définis au début de ma page "ajouter_eleve.php"
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

03 mai 2011, 14:48

pour ce qui est de l'impression avec les blanc j'ai suivi tes conseils et pour l'instant j'arrive juste a exporter sur une page ".doc" en enlevant le mot "absent" :

je pense qu'il faut que je remette le "onclick" mais e ne sais pas comment m'y prendre car si je le remet il n'exporte plus ou alors le mettre dans l'autre page.
J'ai compris le principe mais pas la technique.

code formAssiduite.php :
<input type="submit" name="action" value="Imprimer" >
			


			<
			<?php
					// Exportation de la feuille vers un fichier doc
					if (isset($_GET['action']) && $_GET['action']=='Imprimer')
					{
							include("formAssiduite_print.php");
					}
			?>
ancien code :
<input type="button" value="Imprimer2" onClick="imprime_zone('feuille_absence');">
formAssiduite_print :
<?php
// fonction de gestion du buffer d'affichage redirigé par ob_end_flush()
function enregistrer_pour_impression($buffer)
{
  // enregistre l'affichage sous un fichier Excel
  file_put_contents ("formAssiduite.doc", $buffer);
  return "Exportation effectuée dans le fichier <a href=\"formAssiduite.doc\">formAssiduite.doc</a>"; // affiche un message vers le navigateur
}
// redirige l'affichage vers la fonction désignée
ob_start('enregistrer_pour_impression');


// init
$date = isset($_GET['date']) && !empty($_GET['date'])? $_GET['date'] : null;
$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
//
$nomProf_mat_t1 = isset($_GET['nomProf_mat_t1']) ? $_GET['nomProf_mat_t1'] : null;
$nomProf_mat_t2 = isset($_GET['nomProf_mat_t2']) ? $_GET['nomProf_mat_t2'] : null;
$nomProf_amidi_t1 = isset($_GET['nomProf_amidi_t1']) ? $_GET['nomProf_amidi_t1'] : null;
$nomProf_amidi_t2 = isset($_GET['nomProf_amidi_t2']) ? $_GET['nomProf_amidi_t2'] : null;
                //
$nomMatiere_mat_t1 = isset($_GET['nomMatiere_mat_t1']) ? $_GET['nomMatiere_mat_t1'] : null;
$nomMatiere_mat_t2 = isset($_GET['nomMatiere_mat_t2']) ? $_GET['nomMatiere_mat_t2'] : null;
$nomMatiere_amidi_t1 = isset($_GET['nomMatiere_amidi_t1']) ? $_GET['nomMatiere_amidi_t1'] : null;
$nomMatiere_amidi_t2 = isset($_GET['nomMatiere_amidi_t2']) ? $_GET['nomMatiere_amidi_t2'] : null;


// connexion à la base de données
mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());


// crée la liste des élèves de la classe sélectionnée
$listeAssiduiteEleves = "";
if (isset($idClasse) && isset($date))
{
        // on fait une jointure externe à gauche du côté de la table client vers la table assiduité
        // pour afficher tous les élèves de la classe même si les données de présence sont NULL (cas nouvelle saisie)
        $sql = "SELECT a.*, total_ha.*, e.*
        FROM eleve e LEFT OUTER JOIN assiduite a ON e.idEleve=a.idEleve AND a.date=date('".$date."')
        LEFT OUTER JOIN total_heures_absence total_ha ON e.idEleve=total_ha.idEleve
        WHERE e.idClasse = '".$idClasse."'
        ORDER BY e.nom, e.prenom";
        //echo $sql;
        $result = mysql_query($sql) or die(mysql_error());
        while($result && $row=mysql_fetch_array($result))
        {              
                // si les données d'assiduité sont NULL (surtout la date) alors il s'agit d'une nouvelle feuille de présence
                // sinon affiche l'absence sous 4 tranches horaires : 2 le matin(mat_t1 et mat_t2) et 2 l'après-midi(amidi_t1 et amidi_t2)
                if (is_null($row["date"])) $mode_ajout = true; else $mode_ajout = false;
                // stat du total des nbre_heures_absence
                $nbre_heures_absence = $row['nbre_heures_absence'];
                //
                $nomProf_mat_t1 = $row['nomProf_mat_t1'];
                $nomProf_mat_t2 = $row['nomProf_mat_t2'];
                $nomProf_amidi_t1 = $row['nomProf_amidi_t1'];
                $nomProf_amidi_t2 = $row['nomProf_amidi_t2'];
                //
                $nomMatiere_mat_t1 = $row['nomMatiere_mat_t1'];
                $nomMatiere_mat_t2 = $row['nomMatiere_mat_t2'];
                $nomMatiere_amidi_t1 = $row['nomMatiere_amidi_t1'];
                $nomMatiere_amidi_t2 = $row['nomMatiere_amidi_t2'];
                //
                $mat_t1_checked = $row['presence_mat_t1']!=1 && !is_null($row['presence_mat_t1']) ? " checked " : "";
                $mat_t2_checked = $row['presence_mat_t2']!=1 && !is_null($row['presence_mat_t2']) ? " checked " : "";
                $amidi_t1_checked = $row['presence_amidi_t1']!=1 && !is_null($row['presence_amidi_t1']) ? " checked " : "";
                $amidi_t2_checked = $row['presence_amidi_t2']!=1 && !is_null($row['presence_amidi_t2']) ? " checked " : "";
                //
               $listeAssiduiteEleves .= "<tr><td>".$row['nom']." ".$row['prenom']."</td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td>" . $nbre_heures_absence . "</td></tr>";
 
        }
}

// fin de connexion
mysql_close();

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gestion d'assiduité des élèves</title>
<link rel="stylesheet" type="text/css" href="calendrier.css">
</head>
<body>
<h1>Gestion d'assiduité des élèves</h1>
<table>
<tr>
<th>Classe :</th><td><?php echo $idClasse; ?></td>
<th>Date : </th><td><?php echo $date; ?></td>
</tr>
</table>
<hr />
<h2>Feuille de présence existante du <?php echo date("d-m-Y",strtotime($date)); ?></h2>
<p>Veuillez cocher une case pour désigner une absence.</p>
<table border="1">
<tr><th>Nom - Prenom</th><th>8h00 - 10h00</th><th>10h00 - 12h00</th><th>13h30 - 15h30</th><th>15h30 - 17h30</th><th>Total heures d'absences</th></tr>
<?php echo $listeAssiduiteEleves; ?>
<tr>
<th>Prof : </th>
<td><?php echo $nomProf_mat_t1; ?></td><td><?php echo $nomProf_mat_t2; ?></td>
<td><?php echo $nomProf_amidi_t1; ?></td><td><?php echo $nomProf_amidi_t2; ?></td>
</tr>
<tr>
<th>Matière : </th>
<td><?php echo $nomMatiere_mat_t1; ?></td><td><?php echo $nomMatiere_mat_t2; ?></td>
<td><?php echo $nomMatiere_amidi_t1; ?></td><td><?php echo $nomMatiere_amidi_t2; ?></td>
</tr>
</table>
</body>
</html>

<?php
// déclenche la redirection de l'affichage
ob_end_flush();
?>
 
et pour le script sql le problème est que il faut pas tout archiver mais que les élèves qui sont en deuxième année, j'ai changer les id des classe : au lieu de mettre BTS AG 1 pour 1ere année et BTS AG 2 pour deuxième année j'ai mis : BTS AG 2010-2012 pour la 1ere année et BTS AG 2009-2011 pour la deuxième,
Le problème reste surtout quand on va dans la consultation d'assiduité car si on n'archive pas chaque année la liste va être infiniment longue.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

04 mai 2011, 10:17

Bonjour,
est ce qu'il y aurait quelqu'un pour m'aider svp??
Merci d'avance!
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

04 mai 2011, 23:26

Merci pour ces précisions!
alors pour l'instant j'ai fais ça :

ajouter_eleve.php
mais il me dit qu'il y a des erreurs :
Undefined index: nom in C:\wamp\www\projet\site classe\ajouter_eleve.php on line 29
Undefined index: prenom in C:\wamp\www\projet\site classe\ajouter_eleve.php on line 29
Undefined index: idClasse in C:\wamp\www\projet\site classe\ajouter_eleve.php on line 29

Erreur SQL !INSERT INTO eleve VALUES("", "", ""
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

je sais que sa veut dire que mes variables ne sont pas définis mais je les est pourtant définis au début de ma page "ajouter_eleve.php"
L'erreur est ici:
$sql = 'INSERT INTO eleve VALUES("'.$_POST['nom'].'", "'.$_POST['prenom'].'", "'.$_POST['idClasse'].'"'; 
Tu utilise $_POST c'est une erreur car ton formulaire fait un GET mais puisque tu as déjà initialisé tes variables au début du script il faut les utiliser directement dans la requête. La seconde erreur est qu'il te manque de rappeler, dans la requête INSERT, les noms des champs insérés et de fermer la parenthèse de VALUES.

La correction est :
$sql = 'INSERT INTO eleve (nom, prenom, idClasse) VALUES ("'.$nom.'", "'.$prenom.'", "'.$idClasse.'")'; 
Excuse moi des retards de réponse car je suis en pleine vacances là. Et j'enjoy le soleil 8-)
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

05 mai 2011, 09:53

Bonjour,

c'est pas grave je comprend je ferais la même a ta place.Moi je n'est pas de vacances ... snif je dois attendre la dernière semaine d'août... les dernière date de février.
merci ça marche mais ça me le rentre deux fois dans la base.Tu me diras : "Plus tôt deux fois qu'une" mais je n'est pas besoin d'avoir des doublons!lol!

ajouter_eleve.php :
<?php
	$nom = isset($_GET['nom']) && !empty($_GET['nom'])? $_GET['nom'] : null;
	$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
	$prenom = isset($_GET['prenom']) && !empty($_GET['prenom'])? $_GET['prenom'] : null;
	$adresse = isset($_GET['adresse']) && !empty($_GET['adresse'])? $_GET['adresse'] : null;
	$code_postal = isset($_GET['code_postal']) && !empty($_GET['code_postal'])? $_GET['code_postal'] : null;
	$ville = isset($_GET['ville']) && !empty($_GET['ville'])? $_GET['ville'] : null;
	$portable = isset($_GET['portable']) && !empty($_GET['portable'])? $_GET['portable'] : null;
	$mail = isset($_GET['mail']) && !empty($_GET['mail'])? $_GET['mail'] : null;
	$date_de_naissance = isset($_GET['date_de_naissance']) && !empty($_GET['date_de_naissance'])? $_GET['date_de_naissance'] : null;

		// on se connecte à notre base
	   // $base = mysql_connect ('serveur', 'login', 'pass');  
		//mysql_select_db ('ma_base', $base) ;  
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
?>
<?php

			// enregistrer la saisie du formulaire
		if (isset($_GET['action']) && $_GET['action']=='Enregistrer')
		{
			//
			$message = "";
			if (empty($nom)) $message .= "<p>Le nom est obligatoire !</p>";
			if (empty($prenom)) $message .= "<p>Le prenom est obligatoire !</p>";
			if (empty($idClasse)) $message .= "<p>La classe est obligatoire !</p>";
			if (empty($message))
			{
			  $sql = 'INSERT INTO eleve (nom, prenom, idClasse) VALUES ("'.$nom.'", "'.$prenom.'", "'.$idClasse.'")'; 
			  
			  mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
			  //echo $sql;
						
						if (!@mysql_query($sql)) $message .= "<li>".$nomEleve." => Erreur : ".mysql_error()."</li>";
				if (empty($message)) $message = "Enregistrement effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
?> 
<html>
<head>
	<title>Ajout d'élève dans la base</title>
</head>
<body>
			<form name="form2" action="" method="get">
				Nom : <input type="text" id="nom" name="nom" value=""/>
				Prenom : <input type="text" id="prenom" name="prenom" value=""/>
				Classe : <input type="text" id="idClasse" name="idClasse" value=""/>
				<br/>
				<input type="submit" name="action" value="Enregistrer" />
			</form>
			<div id="message"><?php echo isset($message)?$message:''; ?></div>
</body>

</html>


et pour supprimer un élève j'ai fait ça :

supprimer_eleve.php :
<?php
	$nom = isset($_GET['nom']) && !empty($_GET['nom'])? $_GET['nom'] : null;
	$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
	$prenom = isset($_GET['prenom']) && !empty($_GET['prenom'])? $_GET['prenom'] : null;
	$adresse = isset($_GET['adresse']) && !empty($_GET['adresse'])? $_GET['adresse'] : null;
	$code_postal = isset($_GET['code_postal']) && !empty($_GET['code_postal'])? $_GET['code_postal'] : null;
	$ville = isset($_GET['ville']) && !empty($_GET['ville'])? $_GET['ville'] : null;
	$portable = isset($_GET['portable']) && !empty($_GET['portable'])? $_GET['portable'] : null;
	$mail = isset($_GET['mail']) && !empty($_GET['mail'])? $_GET['mail'] : null;
	$date_de_naissance = isset($_GET['date_de_naissance']) && !empty($_GET['date_de_naissance'])? $_GET['date_de_naissance'] : null;
	
	$date = isset($_GET['date']) && !empty($_GET['date'])? $_GET['date'] : null;
	$mois =  date_format(date_create($date), "m"); // extrait le mois de $date 
	$idEleve = isset($_GET['idEleve']) && !empty($_GET['idEleve'])? $_GET['idEleve'] : null;
	


		// on se connecte à notre base
	   // $base = mysql_connect ('serveur', 'login', 'pass');  
		//mysql_select_db ('ma_base', $base) ;  
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
?>
<?php
		// remplissage systématique de la liste des élèves
		$listeDesEleves = "";
		$sql = "SELECT * FROM eleve";
		$result = mysql_query($sql) or die(mysql_error());
		while($result && $row=mysql_fetch_array($result))
		{
				$selected = $row['idEleve']==$idEleve? " selected " : "";
				$listeDesEleves .= "<option value=\"".$row['idEleve']."\" ".$selected." >".$row['nom']."</option>";
		}
			// supprimer un eleve
		if (isset($_GET['action']) && $_GET['action']=='supprimer')
		{
			//
			$message = "";
			if (empty($message))
			{
			  $sql = 'DELETE INTO eleve (nom) VALUES ("'.$nom.'")'; 
			 // DELETE FROM `bd_eleves`.`eleve` WHERE `eleve`.`idEleve` = 96
			  
			  mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
			  //echo $sql;
						
						if (!@mysql_query($sql)) $message .= "<li>".$nomEleve." => Erreur : ".mysql_error()."</li>";
				if (empty($message)) $message = "suppression effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Suppression d'élève de la base</title>
<link rel="stylesheet" type="text/css" href="calendrier.css">
<script type="text/javascript" src="calendrier.js"></script>
  <link href="/index.php?format=feed&type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
  <link href="/index.php?format=feed&type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
  <script type="text/javascript" src="/media/system/js/mootools.js"></script>
  <script type="text/javascript" src="/media/system/js/caption.js"></script>
	<link rel="stylesheet" type="text/css" href="css/content.css">
	<link rel="stylesheet" type="text/css" href="css/current.css">
	<link rel="stylesheet" type="text/css" href="css/form.css">
	<link rel="stylesheet" type="text/css" href="css/html_code.css">
	<link rel="stylesheet" type="text/css" href="css/menu.css">
	<link rel="stylesheet" type="text/css" href="css/message.css">
	<link rel="stylesheet" type="text/css" href="css/module.css">
	<link rel="stylesheet" type="text/css" href="css/page_nav.css">
	<link rel="stylesheet" type="text/css" href="css/print.css">
	<link rel="stylesheet" type="text/css" href="css/template.css">
	
	<script language="JavaScript">
                        function imprime_zone(obj)

                        {
                        // Ouvre une nouvelle fenêtre
                        var f = window.open("", "", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");

                        // Définit le Style de la page
                        f.document.body.style.color = '#000000';
                        f.document.body.style.backgroundColor = '#FFFFFF';
                        f.document.body.style.padding = "10px";

                        // Affiche le contenu HTML de obj dans le body de la nouvelle fenêtre
                        f.document.body.innerHTML  = document.getElementById(obj).innerHTML;

                        // Imprime et ferme la fenêtre
                        f.window.print();
                        f.window.close();
                        return true;
                        }
                        </script>
</head>
<body>
	<div class="main">
		<div class="logo">
		  <blockquote>
		    <blockquote>
		      <p>						 		<img src="images/banniere.jpg" width="1133" height="138" alt="banniere" />
	          </p>
	        </blockquote>
	      </blockquote>
	  </div>
		<br/><br/>
	
			<div class="leftmod">
				<div class="leftmod2">		
					<div class="module_menu">
						<div>
							<div>
								<div>
																<h3>Menu Principal</h3>
														<ul class="menu">
														  <li id="current" class="active item1"><a href="index.php"><span>Accueil</span></a></li>
														  <li class="parent item27"><a href="formAssiduite.php"><span> Gestion d'assiduité</span></a></li>
														  <li class="item2"><a href="consultation_d_assiduite.php"><span>Consultation d'assiduite</span></a></li>
														  <li class="item37"><a href="gestion_eleves.php"><span>Gestion des élèves</span></a></li>
														  <li class="item48"><a href=""><span></span></a></li>
														  <li class="item49"><a href=""><span></span></a></li>
														</ul>					
								</div>

							</div>
						</div>
					</div>
					<div class="module_menu">
						<div>
							<div>
								<div>
																<h3>Ressources</h3>

														<ul class="menu">
														  <li class="item11"><a href="modeles.php"><span>Modèles</span></a></li>
														  <li class="item12"><a href=""><span></span></a></li>
														  <li class="item13"><a href=""><span></span></a></li>
														  <li class="item17"><a href=""><span></span></a></li>
														</ul>					
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
			<br/><br/>
		<div class="main2">
		<h1>Suppression d'élève de la base</h1><br/><br/>

			<form name="form2" action="" method="get">
				Eleve : <select name="idEleve" onchange="form1.submit();" value="<?php echo isset($idEleve)?$idEleve:null; ?>" >
						<option value="" >
						</option>
						<?php echo isset($listeDesEleves)?$listeDesEleves:null; ?>
						</select>
				<br/>
				<input type="submit" name="action" value="supprimer" />
			</form>
			<div id="message"><?php echo isset($message)?$message:''; ?></div>
			
		</div>
	</div>
</body>

</html>
je sais que ma requète SQL est fausse mais je n'arrive pas a trouver la bonne.


Sinon comment faire pour modifier les paramètres d'un élève?

j'ai aussi un problème assez important : chaque fois que je rentre des élèves il prend un id supérieur au dernier que j'ai rentrer mais le problème c'est que même si j'ai supprimer l'id précédent (ex : actuellement le prochaine élève dans ma base de donnée aura l'id=95 alors que je n'est que 20 élèves)
Modifié en dernier par cobra2930 le 05 mai 2011, 10:25, modifié 1 fois.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2011, 16:45

salut,

dans l'ordre de facilité:

- Elève en double a l'insertion ? c'est normal il y a deux mysql_query dans le code (dont un avec une @ baaa ;) ). pour éviter cela il faut utiliser le retour du 1er mysql_query, par exemple $retour = mysql_query($sql) et ensuite if ($retour === false) message d'erreur !
- le fait que les id se suivent et ne sont pas remplacé, c'est normal c'est le jeux de l'auto incrément et évite une erreur dans les id (que ce passe t il si dans une table liée l'élève 28 n'est pas supprimé, mais qu'il est, ou plutôt remplacé, dans la table élève ? => il se retrouve ales action / notes /etc de l'élève précédents). Ce n'est pas gênant en soit il s'agit d'un identifiant unique, si tu souhaite un classe, utilise un autre critère, telle les noms, des moyennes etc.
- pour ce qui est du delete http://sqlpro.developpez.com/cours/sqlaz/dml/#LIII (delete from table where id=xxx)
- Pour la mise a jour il faut
* Afficher les élèves avec un lien pour la modification (a priori c'est bon c'est la même chose que le delete, mais pour aller sur une autre page, il ne pas oublier la clef primaire dans l'url pour identifier l'élève.
* récupère les info de l'élève : ça c'est une requête sql select avec un where (déjà vu dans le code fournis).
* Pré remplir le formulaire, la c'est assez simple il s'agit d'utiliser l'attribut value des balise input (<input name="truc" value="machin" />) ça se fait avec un simple echo.
* deux choix, soit l'on continu a mettre la clef primaire dans l'url (donc dans le action de la balise form) soit on prend le partis d'utiliser une balise input de type hidden dans laquelle on met cette info ;)
* pour la modification elle même, lorsque l'on a modifié le formulaire et qu'il est soumit (clic sur le bouton) il faut vérifier le contenu et utiliser la requête SQL UPDATE

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 150 Messages

05 mai 2011, 17:15

-Elève en double a l'insertion ? c'est normal il y a deux mysql_query dans le code (dont un avec une @ baaa ;) ). pour éviter cela il faut utiliser le retour du 1er mysql_query, par exemple $retour = mysql_query($sql) et ensuite if ($retour === false) message d'erreur !
Merci, j'ai simplement supprimer le premier mysql_query, j'espere ne pas avoir fait d'erreur en faisant çela.

- le fait que les id se suivent et ne sont pas remplacé, c'est normal c'est le jeux de l'auto incrément et évite une erreur dans les id (que ce passe t il si dans une table liée l'élève 28 n'est pas supprimé, mais qu'il est, ou plutôt remplacé, dans la table élève ? => il se retrouve ales action / notes /etc de l'élève précédents). Ce n'est pas gênant en soit il s'agit d'un identifiant unique, si tu souhaite un classe, utilise un autre critère, telle les noms, des moyennes etc.
je m'en doutais un peu que c'était cela mais je croyais que l'on pouvais éviter cela mais bon autant pour moi.
- pour ce qui est du delete http://sqlpro.developpez.com/cours/sqlaz/dml/#LIII (delete from table where id=xxx)
j'ai regarder sur le site et j'ai repris ce qu'il disait mais je n'y arrive toujours pas :
 $sql = 'DELETE FROM eleve WHERE idEleve=(SELECT * FROM eleve);
je n'y comprend rien quand il s'agit d'utiliser des variables existantes
- Pour la mise a jour il faut
* Afficher les élèves avec un lien pour la modification (a priori c'est bon c'est la même chose que le delete, mais pour aller sur une autre page, il ne pas oublier la clef primaire dans l'url pour identifier l'élève.
* récupère les info de l'élève : ça c'est une requête sql select avec un where (déjà vu dans le code fournis).
* Pré remplir le formulaire, la c'est assez simple il s'agit d'utiliser l'attribut value des balise input (<input name="truc" value="machin" />) ça se fait avec un simple echo.
* deux choix, soit l'on continu a mettre la clef primaire dans l'url (donc dans le action de la balise form) soit on prend le partis d'utiliser une balise input de type hidden dans laquelle on met cette info ;)
* pour la modification elle même, lorsque l'on a modifié le formulaire et qu'il est soumit (clic sur le bouton) il faut vérifier le contenu et utiliser la requête SQL UPDATE
je n'est pas tout compris dans tes explications : pourquoi parle tu de clé primaire dans l'url?


sinon est ce que tu as une réponse sur le sujet de l'archivage des étudiants de 2ème année? (il faut que chaque année la base de donnée archive les étudiants de deuxième année pour que lorsque l'on fasse la liste des élèves il ne soit plus dedans mais il faut qu'il soit toujours présent dans la base(sadeq m'as dit qu'il fallait faire un script mais quoi comme script?et je le met où))
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2011, 18:13

pour la requête delete tu supprimmer un éléve ou vider la table ? dans le 1er cas il faut mettre l'id derrière ideleve, dans le seconde simplement enlever la condition where.

par exemple
DELETE FROM eleve WHERE idEleve=12;

la clef primaire c'est ideleve dans la table. Pour savoir quel élève tu souhaite modifier il faut bien passer cette clef (car c'est elle qui l'idenditie).
Donc soit dans la liste tu utilise un lien (affichage du nom de l'élève avec un lien du genre <a href="modifiereleve.php?ideleve=412">durand paul</a> et la sur modifiereleve.php tu récupère la clef primaire dans $_GET['ideleve'] et a partir de la on récupère les infos de l'élève avec un select, remplissage du formulaire etc).
Ou alors tu utilise un formulaire pour la liste des élève (pourquoi pas une liste déroulante) et la tu passe l'ideleve par le formulaire (souvent méthode post). la c'est a toi de foir ce qui sera le plus ergonomique.

Pour ta dernière question il y a plusieurs solution :
- ne pas toucher à la structure actuelle et créer une procédure stockée qui déplace tous les tuples de la table eleves vers une table "archives" dans laquelle tu insère l'annèe pour récupérer facilement une promo (plusieurs solution, utiliser une table par année en la nommant avec le n° de l'année, ou alors une seule table dans laquelle tu ajoute l'année dans un champs). c'est aussi réalisable avec php mais autant le faire faire au SGBD puisse qu'il peux le faire ;)

- deuxième solution : modifier la structure actuelle et ajouter une table annee avec dedans les infos sur l'année scolaire (les dates le nom du prof principal ou d'autre chose). Ajouter un champs dans la table élève qui correspondra à la valeur de la clef primaire de la table année. Et la plus besoin de créer une table archive les données sont toujours la il suffit de trier sur l'année ;)
ça donne un schéma comme ça Image (bon c'est pasic mais c'est le principe)
il est aussi possible d'ajouter seulement le champ date dans la table élève mais bon c'est a l'encontre des formes normale ;)

ça peut paraitre compliqué mais c'est une solution viable ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 150 Messages

06 mai 2011, 09:31

- alors pour ma méthode supprimer j'ai opter pour la méthode déroulante comme tu as dû voir dans mes codes mais ce que je veux savoir c'est comment dans cette commande :
DELETE FROM eleve WHERE idEleve=12;
je fais pour mettre a la place du "12" , l'idEleve que j'aurais "choisis" dans la liste déroulante grâce au nom de l'élève.


- pour l'archivage j'ai créer un idClasse dans "eleve" qui représente les promo : "BTS AG 2009-2011" "BTS NRC 2010-2012" serait t'il possible d'archiver les élèves par classe en regardant l'année?

Si je prend ta deuxième solution cela veut dire que dans ma gestion d'assiduité quand je dois rentrer la classe avec la date je met l'année en premier qui va déterminer quelle classe il existe dans cette année?
Si je choisis cette option il y aurait il un moyen de mettre par défaut dans la liste déroulante la dernière année rentré dans la base ?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 mai 2011, 00:06

- alors pour ma méthode supprimer j'ai opter pour la méthode déroulante comme tu as dû voir dans mes codes mais ce que je veux savoir c'est comment dans cette commande :
DELETE FROM eleve WHERE idEleve=12;
je fais pour mettre a la place du "12" , l'idEleve que j'aurais "choisis" dans la liste déroulante grâce au nom de l'élève.
Tu remplace le 12 par la variable $idEleve qu'on récupère de la liste déroulante des élèves. ça donne ça:
 $sql = 'DELETE FROM eleve WHERE idEleve=' . $idEleve;
- pour l'archivage j'ai créer un idClasse dans "eleve" qui représente les promo : "BTS AG 2009-2011" "BTS NRC 2010-2012" serait t'il possible d'archiver les élèves par classe en regardant l'année?
Oui c'est bien ça, et ça veut dire que les données des élèves de la classe: "BTS AG 2009-2011" ont une durée de vie entre 2009 et 2011 et seront donc archivées et supprimées de la base de données après la fin de 2011.
Mais de toutes façons l'opération d'archivage peut être effectuée à chaque fin d'année pour toute la base de données (copie totale renommée par date).
Par exemple, on peut copier la base de données à la fin de l'année 2011 en la renommant "bd_eleves_2011" en créant le script SQL suivant par phpMyAdmin dans l'onglet "Opérations" puis "Copier la base de données vers: "
CREATE DATABASE `bd_eleves_2011` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
 CREATE  TABLE  `bd_eleves_2011`.`assiduite` (  `date` date NOT  NULL ,
 `idEleve` int( 11  )  NOT  NULL ,
 `presence_mat_t1` int( 11  )  NOT  NULL DEFAULT  '1',
 `presence_mat_t2` int( 11  )  NOT  NULL DEFAULT  '1',
 `presence_amidi_t1` int( 1  )  NOT  NULL DEFAULT  '1',
 `presence_amidi_t2` int( 11  )  NOT  NULL DEFAULT  '1',
 `nomProf_mat_t1` varchar( 50  )  NOT  NULL ,
 `nomProf_mat_t2` varchar( 50  )  NOT  NULL ,
 `nomProf_amidi_t1` varchar( 50  )  NOT  NULL ,
 `nomProf_amidi_t2` varchar( 50  )  NOT  NULL ,
 `nomMatiere_mat_t1` varchar( 50  )  NOT  NULL ,
 `nomMatiere_mat_t2` varchar( 50  )  NOT  NULL ,
 `nomMatiere_amidi_t1` varchar( 50  )  NOT  NULL ,
 `nomMatiere_amidi_t2` varchar( 50  )  NOT  NULL ,
 UNIQUE  KEY  `idAssiduite` (  `date` ,  `idEleve`  )  ) ENGINE  = InnoDB  DEFAULT CHARSET  = latin1;

INSERT INTO `bd_eleves_2011`.`assiduite` SELECT * FROM `bd_eleves`.`assiduite`;
 CREATE  TABLE  `bd_eleves_2011`.`eleve` (  `idEleve` int( 11  )  NOT  NULL  AUTO_INCREMENT ,
 `nom` varchar( 20  )  NOT  NULL ,
 `prenom` varchar( 20  )  NOT  NULL ,
 `idClasse` varchar( 20  )  DEFAULT NULL ,
 PRIMARY  KEY (  `idEleve`  )  ) ENGINE  = InnoDB  DEFAULT CHARSET  = latin1 AUTO_INCREMENT  =6;

INSERT INTO `bd_eleves_2011`.`eleve` SELECT * FROM `bd_eleves`.`eleve`;
 CREATE  TABLE  `bd_eleves_2011`.`matiere` (  `nom` varchar( 50  )  NOT  NULL  ) ENGINE  = InnoDB  DEFAULT CHARSET  = latin1;

INSERT INTO `bd_eleves_2011`.`matiere` SELECT * FROM `bd_eleves`.`matiere`;
CREATE TABLE `nbre_heures_absence` (
`date` date
,`idEleve` int(11)
,`nbre_heures_absence` decimal(37,0)
);;
CREATE TABLE `nbre_heures_presence` (
`date` date
,`idEleve` int(11)
,`nbre_heures_presence` decimal(36,0)
);;
 CREATE  TABLE  `bd_eleves_2011`.`prof` (  `nom` varchar( 50  )  NOT  NULL  ) ENGINE  = InnoDB  DEFAULT CHARSET  = latin1;

INSERT INTO `bd_eleves_2011`.`prof` SELECT * FROM `bd_eleves`.`prof`;
CREATE TABLE `total_heures_absence` (
`idEleve` int(11)
,`nbre_heures_absence` decimal(37,0)
);;
CREATE TABLE `total_heures_presence` (
`idEleve` int(11)
,`nbre_heures_presence` decimal(36,0)
);;
DROP TABLE IF EXISTS `bd_eleves_2011`.`nbre_heures_absence`;
 CREATE  ALGORITHM  =  UNDEFINED DEFINER  =  `root`@`localhost`  SQL  SECURITY  DEFINER  VIEW  `bd_eleves_2011`.`nbre_heures_absence`  AS  select  `bd_eleves_2011`.`assiduite`.`date`  AS  `date` ,
 `bd_eleves_2011`.`assiduite`.`idEleve`  AS  `idEleve` ,
sum( ( 8 - ( ( ( (  `bd_eleves_2011`.`assiduite`.`presence_mat_t1`  *2 ) + (  `bd_eleves_2011`.`assiduite`.`presence_mat_t2`  *2  )  )  + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t1`  *2  )  )  + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t2`  *2  )  )  ) ) AS  `nbre_heures_absence`  from  `bd_eleves_2011`.`assiduite`  group  by  `bd_eleves_2011`.`assiduite`.`date` ,
 `bd_eleves_2011`.`assiduite`.`idEleve` ;
DROP TABLE IF EXISTS `bd_eleves_2011`.`nbre_heures_presence`;
 CREATE  ALGORITHM  =  UNDEFINED DEFINER  =  `root`@`localhost`  SQL  SECURITY  DEFINER  VIEW  `bd_eleves_2011`.`nbre_heures_presence`  AS  select  `bd_eleves_2011`.`assiduite`.`date`  AS  `date` ,
 `bd_eleves_2011`.`assiduite`.`idEleve`  AS  `idEleve` ,
sum( ( ( ( (  `bd_eleves_2011`.`assiduite`.`presence_mat_t1`  *2 ) + (  `bd_eleves_2011`.`assiduite`.`presence_mat_t2`  *2  )  )  + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t1`  *2  )  ) + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t2`  *2  )  ) ) AS  `nbre_heures_presence`  from  `bd_eleves_2011`.`assiduite`  group  by  `bd_eleves_2011`.`assiduite`.`date` ,
 `bd_eleves_2011`.`assiduite`.`idEleve` ;
DROP TABLE IF EXISTS `bd_eleves_2011`.`total_heures_absence`;
 CREATE  ALGORITHM  =  UNDEFINED DEFINER  =  `root`@`localhost`  SQL  SECURITY  DEFINER  VIEW  `bd_eleves_2011`.`total_heures_absence`  AS  select  `bd_eleves_2011`.`assiduite`.`idEleve`  AS  `idEleve` ,
sum( ( 8 - ( ( ( (  `bd_eleves_2011`.`assiduite`.`presence_mat_t1`  *2 ) + (  `bd_eleves_2011`.`assiduite`.`presence_mat_t2`  *2  )  )  + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t1`  *2  )  )  + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t2`  *2  )  )  ) ) AS  `nbre_heures_absence`  from  `bd_eleves_2011`.`assiduite`  group  by  `bd_eleves_2011`.`assiduite`.`idEleve` ;
DROP TABLE IF EXISTS `bd_eleves_2011`.`total_heures_presence`;
 CREATE  ALGORITHM  =  UNDEFINED DEFINER  =  `root`@`localhost`  SQL  SECURITY  DEFINER  VIEW  `bd_eleves_2011`.`total_heures_presence`  AS  select  `bd_eleves_2011`.`assiduite`.`idEleve`  AS  `idEleve` ,
sum( ( ( ( (  `bd_eleves_2011`.`assiduite`.`presence_mat_t1`  *2 ) + (  `bd_eleves_2011`.`assiduite`.`presence_mat_t2`  *2  )  )  + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t1`  *2  )  ) + (  `bd_eleves_2011`.`assiduite`.`presence_amidi_t2`  *2  )  ) ) AS  `nbre_heures_presence`  from  `bd_eleves_2011`.`assiduite`  group  by  `bd_eleves_2011`.`assiduite`.`idEleve` ;
Par contre, il faut procéder à une opération d'épuration ou suppression des données élèves après la fin de leur formation. Et cela concernera toutes les données des élèves ayant un idClasse dont l'année de fin est terminée à savoir (dans notre cas étudié) les données le la table "eleve" et les données "assiduite" concernant les élèves concernés.

Voici une requête SQL qui permet de supprimer les données relationnelles en cascade des élèves (assiduité et élève) en fin de formation par exemple: supprimer les données des formations qui ont eu lieu entre 2009 et 2011:
Attention l'ordre de suppression dans les tables est important: assiduité puis élève.
DELETE assiduite, eleve 
FROM assiduite, eleve 
WHERE assiduite.idEleve = eleve.idEleve AND eleve.idClasse LIKE '%2009-2011%'

La formule de la condition qui spécifie l'année ciblée est :
idClasse Like '%2009-2011%'
qu'on peut aussi reformuler autrement : les formations qui se terminent en 2011:
idClasse Like '%-2011%' remarque qu'on a mis un tiret avant 2011 car on cible l'année de fin dans la forme d'exemple "2009-2011" où 2009 est l'année de début et (-) 2011 est l'année de fin de formation.
Pour plus d'infos sur l'opérateur LIKE voir la documentation MySQL ou PHP.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

08 mai 2011, 18:28

Merci Sadeq pour la requête SQL de supprimer sa fonctionne nickel,
Par contre je n'est pas bien compris pour l'archivage : ce que tu m'as donner consiste à tout archiver?car moi je veux seulement archiver les donnée des 2ème année et non toute la base, et je n'arrive toujours pas a trouver la requête SQL et le code PHP pour modifier les données d'un élève.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

08 mai 2011, 21:33

Pour la question d'archivage, t'as qu'à réadapter le script que je t'ai donné pour ne laisser que les tables qui te conviennent (eleve et assiduite) et surtout modifier les instructions INSERT INTO pour ne tenir compte que des classes LIKE '%2009-2011%'
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

08 mai 2011, 22:26

Pour la question d'archivage, t'as qu'à réadapter le script que je t'ai donné pour ne laisser que les tables qui te conviennent (eleve et assiduite) et surtout modifier les instructions INSERT INTO pour ne tenir compte que des classes LIKE '%2009-2011%'
d'accord je vais tenter de faire ça!Merci.

Et pour ce qui s'agit de modifier un élève tu saurais comment t'y prendre?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

09 mai 2011, 09:21

finalement pour l'archivage je vais rajouter juste un champ "année" (ou année scolaire) dans "eleve" (ou une table je sais pas ce qui est le mieux ) que l'on modifiera de 1ére à 2éme année ou bien "ancien élèves" comme ça le directeur change si l'éléve passe en 2nde année ou bien si il redouble. Donc il faudrait que j'archive les élèves qui seront dans la catégorie "ancien élèves" sans supprimer pour autant les donnée d'assiduite mais le hic c'est que je voudrais savoir si l'élève a fait son bts en 2 ou 3 ans et sur quelle année pour que quand je cherche dans les archive çela me facilite la tâche.
Est-ce possible?


De plus j'aimerais ajouter dans ma "consultation d'assiduité" un bouton qui me diras les jours d'absences d'un élèves et ses heures d'absences pour ces jours là, y a t'il une requête SQL qui pourrait faire ça ?

et autre petit souci :
j'ai ajouter des pages pour ajouter et supprimer les profs, l'ajout marche parfaitement mais pas la suppression pourtant j'ai repris comme pour l'élève :
<?php
		// remplissage systématique de la liste des profs
		$listeDesProfs = "";
		$sql = "SELECT * FROM prof";
		$result = mysql_query($sql) or die(mysql_error());
		while($result && $row=mysql_fetch_array($result))
		{
				$selected = $row['nom']==$nom? " selected " : "";
				$listeDesProfs .= "<option value=\"".$row['nom']."\" ".$selected." >".$row['nom']."</option>";
		}
			// supprimer un eleve
		if (isset($_GET['action']) && $_GET['action']=='supprimer')
		{
			//
			$message = "";
			if (empty($message))
			{
			  $sql = 'DELETE FROM prof WHERE nom=' . $nom;
			 // DELETE FROM `bd_eleves`.`eleve` WHERE `eleve`.`idEleve` = 96
			  
			
			$result = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
			//echo $sql;
			if(!$result);
						
				if (empty($message)) $message = "suppression effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
?> 
et ça me met ça :

Erreur SQL !DELETE FROM prof WHERE nom=stark
Unknown column 'stark' in 'where clause'

donc je sais que çela viens de la requête SQL et qu'il ne connais pas la colonne stark mais je ne comprend pas pourquoi il met cette erreur alors qu'il l'a met pas pour l'élève.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9: