Script sans effet sur base de données
Bonjour,
Ce que j'évoque ici est un exemple tiré d'un livre "PHP5 Le guide complet", de chez MicroApp.
Il s'agit de gérer une base de données à partir d'un formulaire.
Je précise que je ne cherche pas de script me permettant d'obtenir le même résultat que celui que je vais citer ici, je veux juste comprendre pourquoi il est sans effet. ;)
Voilà mon index.php :
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
|
<!--Système d'authentification du protocole HTTP-->
<?php
if (!($_SERVER['PHP_AUTH_USER']=="essai" &&
$_SERVER['PHP_AUTH_PW']=="essai")) {
header("status: 4O1 Unauthorized");
header("HTTP/1.0 401 Unauthorized");
header('WWW-authenticate: Basic '.
'realm="acces securise au back-office"');
print("vérification : ERREUR");
exit(0);
}
echo "<html>";
echo "<head>";
echo "<title>Admin Ecole</title>";
echo "</head>";
echo "<body>";
$liendb = mysql_connect("localhost", "root", "");
mysql_select_db("test");
$sql= "SELECT * FROM eleve";
$resultat= mysql_query ($sql);
echo "<h1>admin - ecole</h1>";
echo "<p align=left> :: accueil</p>";
echo "<table width=90% align=center border=1>";
echo "<tr><td>id</td><td>nom</td><td>prenom</td><td>naissance</td><td> </td></tr>";
while ($eleve = mysql_fetch_array ($resultat))
{
$id = $eleve['ideleve'];
$nom = $eleve['nom'];
$prenom = $eleve['prenom'];
$date = $eleve['naissance'];
echo "<tr>";
echo "<td>$id</td>";
echo "<td>$nom</td>";
echo "<td>$prenom</td>";
echo "<td>$date</td>";
echo "<td>";
echo "<a href='eleve_edite.php?id=$id'>voir</a>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($liendb);
echo "</body>";
echo "</html>"; |
Et voici la page contenant le formulaire et le script eleve_edite.php qui ne produit rien lorsque j'essaie de faire un update ou un delete sur une table :
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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
| <?php
$liendb = mysql_connect("localhost", "root", "");
mysql_select_db("test");
if ($_REQUEST['action'] == "maj")
{
if (empty($_REQUEST['nom']) || empty($_REQUEST['prenom']) ||
empty($_REQUEST['adresse']) || empty($_REQUEST['ville']) ||
empty($_REQUEST['codepostal']) || empty($_REQUEST['pays']) ||
empty($_REQUEST['naissance']) || empty($_REQUEST['telephone']) ||
empty($_REQUEST['lv']))
die("ERREUR : tous les champs doivent être remplis.");
if ($_REQUEST['sexe'] !="masculin" && $_REQUEST['sexe'] !="feminin")
die ("ERREUR : choisissez votre sexe.");
if (preg_match ("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/i",
$_REQUEST['email']) == false)
die("ERREUR : adresse email non valide.");
$sql = "UPDATE eleve SET nom = '".$_REQUEST['nom']."',".
"prenom = '".$_REQUEST['prenom']."',".
"adresse = '".$_REQUEST['adresse']."',".
"ville = '".$_REQUEST['ville']."',".
"cp = '".$_REQUEST['cp']."',".
"pays ='".$_REQUEST['pays']."',".
"sexe = '".$_REQUEST['sexe']."',".
"naissance = '".$_REQUEST['naissance']."',".
"email ='".$_REQUEST['email']."','".
"telephone= '".$_REQUEST['telephone']."',".
"lv ='".$_REQUEST['lv']."'".
" WHERE ideleve = '".$_REQUEST['id']."'";
mysql_query($sql);
}
elseif ($_REQUEST['action'] =="suppr" && $_REQUEST['id']>=1)
{
$sql = "DELETE FROM eleve WHERE ideleve'".$_REQUEST['id']."'";
mysql_query ($sql);
header("Location: http://localhost/mysql/authentification/index.php");
}
echo "<html>";
echo "<head>";
echo "<title>Admin Ecole</title>";
echo "</head>";
echo "<body>";
echo "<h1>admin - ecole</h1>";
echo "<p align=left> :: fiche d'eleve [".$_REQUEST['id']."]</p>"; //GET et REQUEST ont le meme effet
$sql= "SELECT * FROM eleve WHERE ideleve = '".$_REQUEST['id']."'";
$resultat = mysql_query ($sql);
$eleve = mysql_fetch_array ($resultat);
?>
<form action="eleve_edite.php" method="post">
<input type="hidden" name="enregistre" value="oui" />
<input type="hidden" name="id" value="<?php echo $_REQUEST['id']; ?>" />
<table>
<tr>
<td>nom</td>
<td><input type="text" name="nom" value="<?php echo $eleve['nom']; ?>" /></td>
</tr>
<tr>
<td>prenom</td>
<td><input type="text" name="prenom" value="<?php echo $eleve['prenom']; ?>" /></td>
</tr>
<tr>
<td>adresse</td>
<td><textarea name="adresse"><?php echo $eleve['adresse']; ?></textarea></td>
</tr>
<tr>
<td>ville</td>
<td><input type="text" name="ville" value="<?php echo $eleve['ville']; ?>" /></td>
</tr>
<tr>
<td>code postal</td>
<td><input type="text" name="codepostal" value="<?php echo $eleve['cp']; ?>" /></td>
</tr>
<tr>
<td>pays</td>
<td><input type="text" name="pays" value="<?php echo $eleve['pays']; ?>" /></td>
</tr>
<tr>
<td>sexe</td>
<td>
Masculin <input type="radio" name="sexe" value="masculin" <?php if($eleve['sexe'] == "masculin") echo "CHECKED"; ?>>
Féminin <input type="radio" name="sexe" value="feminin" <?php if($eleve['sexe'] == "feminin") echo "CHECKED"; ?>>
</td>
</tr>
<tr>
<td>date naissance</td>
<td><input type="text" name="naissance" value="<?php echo $eleve['naissance']; ?>" /></td>
</tr>
<tr>
<td>email</td>
<td><input type="text" name="email" value="<?php echo $eleve['email']; ?>" /></td>
</tr>
<tr>
<td>téléphone</td>
<td><input type="text" name="telephone" value="<?php echo $eleve['telephone']; ?>" /></td>
</tr>
<tr>
<td>langue vivante</td>
<td>
<select name="lv">
<option value="anglais">anglais</option>
<option value="espagnol" <?php if ($eleve['lv'] == "espagnol") echo "SELECTED"; ?>>espagnol</option>
<option value="allemand" <?php if ($eleve['lv'] == "allemand") echo "SELECTED"; ?>>allemand</option>
</select>
</td>
</tr>
</table>
<br/>
<select name="action">
<option value="maj"> Enregistrer la fiche </option>
<option value="suppr"> Supprimer la fiche </option>
</select>
<input type="submit" value="effectuer">
</form>
</body>
</html>
<?php mysql_close($liendb); ?> |
Lorsque je modifie un élément et que je clique sur effectuer, j'ai le die("ERREUR : tous les champs doivent être remplis.");, alors que pourtant le script affiche le formulaire déjà rempli pour chaque élève.
Lorsque je choisis de supprimer un élève, je reviens à index.php comme prévu, mais rien n'a été supprimé!
Y'a-t-il une erreur de syntaxe?
Je ne sais pas si vous aurez le courage de me lire en entier, mais ce serait sympa parce que là je sèche!
Merci! :aie: