par
sadeq » 11 juin 2007, 23:45
Corrige d'abord les erreurs logiques de codage suivantes, à la fois au niveau du code PHP et HTML:
- . Le formulaire HTML doit indiquer dans action le chemin HTTP du programme de traitement (et non via le protocole file://)
. Tu n'as pas besoin du javascript redirecteur pour faire un submit (location.href) un bouton de type submit sait déjà faire un appel HTTP vers la page déclarée dans "action" du "form"
. Pour rappeler les valeurs des champs après le submit utilise l'attribut "value" dans les champs dont La valeur est réécrite par php à partir du postage ($_GET)
. Le programme php doit suivre un algorithme rigoureux qui contrôle les données et gère les erreurs avant d'attaquer SQL
Voici une indication dans une et seule page contenant à la fois le php du traitement et l'HTML du formulaire.
page
rec.php
<?php
//Début du traitement
//on ne doit traiter que si les données obligatoires sont vraiment postées et sont valides
if ($_GET["submit"])
if (!isset($_GET["ref"]) || trim($_GET["ref"]) == "") $message = "La référence est obligatoire";
else if (!isset($_GET["design"]) || trim($_GET["design"]) == "") $message = "La désignation est obligatoire";
else if (!isset($_GET["qte"]) || !is_numeric(trim($_GET["qte"])) || trim($_GET["qte"]) <= 0)
$message = "La quantité doit être numérique > à 0";
else {
//les données sont valides
$ref = trim($_GET["ref"]);
$design = trim($_GET["design"]);
$qte = trim($_GET["qte"]);
//ajouter l'article dans la base de données
$connexion = @mysql_connect("localhost", "root","");
if (!$connexion) $message = "Impossible de se connecter !";
else if (!@mysql_select_db("articles",$connexion))
$message = "Impossible d'ouvrir la base de données!";
else if (@mysql_query("insert into produits values ('','$ref','$design','$qte')") )
$message = "Ajout effectué.";
else $message = "Ajout non effectué!";
}//fin données valides
//Fin du traitement
?>
<HTML>
<Meta http-equiv="refresh">
<Meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Saisie des produits</title><body bgcolor="#0066CC" text="#FFFFFF" link="#FF0000">
<form action="rec.php" method="GET">
<center>
<table width="77%" border="0">
<!--DWLayoutTable-->
<tr>
<td colspan="5" height="85"> <div align="center">
<p><font color="#FFFFFF" size="6" face="Georgia, Times New Roman, Times, serif"><B><em>Ecran de saisie d'un produit</em></B></font></p>
<p> </p>
<p> </p>
<p> </p>
</div> </tr>
<tr>
<td width="110" height="72" valign="top"><I><B><font color="#000000" face="Comic Sans MS">Référence
:</font></B></I></td>
<td width="161" valign="top"><font color="#FF0000">
<input name="ref" type="text" id="ref" size=20 value="<?php echo $_GET['ref']; ?>" />
</font></td>
<td colspan="2" valign="top"><I><B><font color="#000000" face="Comic Sans MS">Désignation : </font></B></I>
<td width="185" valign="top"><input name="design" type="text" id="design" size=20 value="<?php echo $_GET['design']; ?>" /></td>
<tr>
<td height="72" valign="top"><div align="justify"><I><B><font color="#000000" face="Comic Sans MS">Quantité : </font></B></I> </div></td>
<td valign="top"><font color="#FF0000">
<input name="qte" type="text" id="qte" size=20 value="<?php echo $_GET['qte']; ?>" />
</font></td>
<td colspan="2" valign="top"><font face="comic sans ms">
<input type="submit" value="Valider" name="submit" />
</font></td>
<td valign="top"><div align="justify"><font color="#FF0000">
</input>
</font><font face="comic sans ms">
<input type="button" value="Fermer" onClick=window.location.href="index.php" name="button" />
<p><Font color="red"><i><?php echo $message; ?></i></Font></p>
</font></div></td>
</table>
</center>
</form>
</body>
</html>
Corrige d'abord les erreurs logiques de codage suivantes, à la fois au niveau du code PHP et HTML:
[list]. Le formulaire HTML doit indiquer dans action le chemin HTTP du programme de traitement (et non via le protocole file://)
. Tu n'as pas besoin du javascript redirecteur pour faire un submit (location.href) un bouton de type submit sait déjà faire un appel HTTP vers la page déclarée dans "action" du "form"
. Pour rappeler les valeurs des champs après le submit utilise l'attribut "value" dans les champs dont La valeur est réécrite par php à partir du postage ($_GET)
. Le programme php doit suivre un algorithme rigoureux qui contrôle les données et gère les erreurs avant d'attaquer SQL
[/list]
Voici une indication dans une et seule page contenant à la fois le php du traitement et l'HTML du formulaire.
page [b]rec.php[/b]
[php]<?php
//Début du traitement
//on ne doit traiter que si les données obligatoires sont vraiment postées et sont valides
if ($_GET["submit"])
if (!isset($_GET["ref"]) || trim($_GET["ref"]) == "") $message = "La référence est obligatoire";
else if (!isset($_GET["design"]) || trim($_GET["design"]) == "") $message = "La désignation est obligatoire";
else if (!isset($_GET["qte"]) || !is_numeric(trim($_GET["qte"])) || trim($_GET["qte"]) <= 0)
$message = "La quantité doit être numérique > à 0";
else {
//les données sont valides
$ref = trim($_GET["ref"]);
$design = trim($_GET["design"]);
$qte = trim($_GET["qte"]);
//ajouter l'article dans la base de données
$connexion = @mysql_connect("localhost", "root","");
if (!$connexion) $message = "Impossible de se connecter !";
else if (!@mysql_select_db("articles",$connexion))
$message = "Impossible d'ouvrir la base de données!";
else if (@mysql_query("insert into produits values ('','$ref','$design','$qte')") )
$message = "Ajout effectué.";
else $message = "Ajout non effectué!";
}//fin données valides
//Fin du traitement
?>
<HTML>
<Meta http-equiv="refresh">
<Meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>Saisie des produits</title><body bgcolor="#0066CC" text="#FFFFFF" link="#FF0000">
<form action="rec.php" method="GET">
<center>
<table width="77%" border="0">
<!--DWLayoutTable-->
<tr>
<td colspan="5" height="85"> <div align="center">
<p><font color="#FFFFFF" size="6" face="Georgia, Times New Roman, Times, serif"><B><em>Ecran de saisie d'un produit</em></B></font></p>
<p> </p>
<p> </p>
<p> </p>
</div> </tr>
<tr>
<td width="110" height="72" valign="top"><I><B><font color="#000000" face="Comic Sans MS">Référence
:</font></B></I></td>
<td width="161" valign="top"><font color="#FF0000">
<input name="ref" type="text" id="ref" size=20 value="<?php echo $_GET['ref']; ?>" />
</font></td>
<td colspan="2" valign="top"><I><B><font color="#000000" face="Comic Sans MS">Désignation : </font></B></I>
<td width="185" valign="top"><input name="design" type="text" id="design" size=20 value="<?php echo $_GET['design']; ?>" /></td>
<tr>
<td height="72" valign="top"><div align="justify"><I><B><font color="#000000" face="Comic Sans MS">Quantité : </font></B></I> </div></td>
<td valign="top"><font color="#FF0000">
<input name="qte" type="text" id="qte" size=20 value="<?php echo $_GET['qte']; ?>" />
</font></td>
<td colspan="2" valign="top"><font face="comic sans ms">
<input type="submit" value="Valider" name="submit" />
</font></td>
<td valign="top"><div align="justify"><font color="#FF0000">
</input>
</font><font face="comic sans ms">
<input type="button" value="Fermer" onClick=window.location.href="index.php" name="button" />
<p><Font color="red"><i><?php echo $message; ?></i></Font></p>
</font></div></td>
</table>
</center>
</form>
</body>
</html>[/php]