problème d'UPDATE

Répondre
nasdrovia70
le 02/05/2009 à 11:53
nasdrovia70
Bonjour, j'ai un problème d'UPDATE a la modification d'une fiche
<?php
//paramètres de la base
$serveur="localhost";
$util="root";
$mpasse="";
$base="stocks";
// connexion au serveur Mysql
$lien=mysql_connect($serveur,$util,$mpasse);
// connexion à la base de données
mysql_select_db($base);
// réccupération des données du formulaire

// Vérification du formulaire

// déclaration de la fonction

echo "<table border='1' bordercolor='yellow' width='4010'>
<tr>
<td width='30'><font color ='white'>ID</font></td>
<td width='300'><font color ='white'>jour</font></td>
<td width='300'><font color ='white'>commande</font></td>
<td width='300'><font color ='white'>produit</font></td>
<td width='300'><font color ='white'>marque</font></td>
<td width='300'><font color ='white'>designation</font></td>
<td width='300'><font color ='white'>sequence</font></td>
<td width='300'><font color ='white'>etat</font></td>
<td width='300'><font color ='white'>commentaire</font></td>
<td width='300'><font color ='white'>serie</font></td>
<td width='300'><font color ='white'>date</font></td>
<td width='300'><font color ='white'>affectation</font></td>
<td width='300'><font color ='white'>nom</font></td>
</tr>";




$reponse = mysql_query("SELECT * FROM Pcs");
echo '<form action="modifier2.php" name="fiche" method="post">';
while ($donnees = mysql_fetch_array($reponse))
{

$id = $donnees['id_pcs'];
$jour = $donnees['jour'];
$commande = $donnees['commande'];
$produit = $donnees['produit'];
$marque = $donnees['marque'];
$designation = $donnees['designation'];
$sequence = $donnees['sequence'];
$etat = $donnees['etat'];
$commentaire = $donnees['commentaire'];
$serie = $donnees['serie'];
$date = $donnees['date'];
$affectation = $donnees['affectation'];
$nom = $donnees['nom'];





echo ' <tr>

<td width="300"><input type="text" name="id_pcs" value="'.$id.'" size="50" /></td>
<td width="300"><input type="text" name="jour" value="'.$jour.'" size="50" /></td>
<td width="300"><input type="text" name="commande" value="'.$commande.'" size="50" /></td>
<td width="300"><input type="text" name="produit" value="'.$produit.'" size="50" /></td>
<td width="300"><input type="text" name="marque" value="'.$marque.'" size="50"/></td>
<td width="300"><input type="text" name="designation" value="'.$designation.'" size="50" /></td>
<td width="300"><input type="text" name="sequence" value="'.$sequence.'" size="50" /></td>
<td width="300"><input type="text" name="etat" value="'.$etat.'" size="50" /></td>
<td width="300"><input type="text" name="commentaire" value="'.$commentaire.'" size="50" /></td>
<td width="300"><input type="text" name="serie" value="'.$serie.'" size="50" /></td>
<td width="300"><input type="text" name="date" value="'.$date.'" size="50" /></td>
<td width="300"><input type="text" name="affectation" value="'.$affectation.'" size="50" /></td>
<td width="300"><input type="text" name="nom" value="'.$nom.'" size="50" /></td>

</tr>';




}
echo " </table>

<input type='submit' name='modifier' value='Modifier le contact' /> </form>";






mysql_close(); // Déconnexion de MySQL
?>

<?php
//paramètres de la base
$serveur="localhost";
$util="root";
$mpasse="";
$base="stocks";
// connexion au serveur Mysql
$lien=mysql_connect($serveur,$util,$mpasse);
// connexion à la base de données
mysql_select_db($base);

// Traitement


if (isset($_POST['modifier'])) {
$id=htmlentities($_POST['id_pcs']);
$jour=htmlentities($_POST['jour']);
$commande=htmlentities($_POST['commande']);
$produit=htmlentities($_POST['produit']);
$marque=htmlentities($_POST['marque']);
$designation=htmlentities($_POST['designation']);
$sequence=htmlentities($_POST['sequence']);
$etat=htmlentities($_POST['etat']);
$commentaire=htmlentities($_POST['commentaire']);
$serie=htmlentities($_POST['serie']);
$date=htmlentities($_POST['date']);
$affectation=htmlentities($_POST['affectation']);
$nom=htmlentities($_POST['nom']);
mysql_query("UPDATE pcs SET jour='$jour', commande='$commande', produit='$produit', marque='$marque', designation='$designation', sequence='$sequence', etat='$etat', commentaire='$commentaire', serie='$serie', date='$date', affectation='$affectation', nom='$nom' WHERE id_pcs='$id'");
}

mysql_close(); // Déconnexion de MySQL
echo "<meta http-equiv='refresh' content='1; url=index.php'>"; // redirection vers l'index

?>
LA GLOBULE
le 02/05/2009 à 13:02
LA GLOBULE
Ton code présente plusieurs problèmes.

1) Il faut que tu testes si tes requêtes SQL se déroulent sans problème, et, le cas échéant, tu dois récupérer l'erreur SQL retournée. Sans ca, tu ne sauras jamais pourquoi tes requêtes buguent.

2) Tu dois protéger les variables que tu insères dans tes requetes SQL en utilisant la fonction mysql_escape_string pour les chaines de caractères, et intval pour les valeurs numériques

Pour le point 1 et 2, on aura donc par exemple :

<?php
$sql = "UPDATE table SET champs1 = '".mysql_escape_string($var1)."', champs2 = '".mysql_escape_string($var2)."' WHERE id = ".intval($id);
$req = mysql_query($sql) or die ($sql.'<br />'.mysql_error());
?>


3) Il vaut mieux faire le htmlentities à l'affichage des données et non à l'insertion en base

4) Ton formulaire est mal concu, car, dans ton while, tu écris plusieurs input txt avec le même attribut name (qui "s'écrasent" donc).

Que veux tu faire exactement ? Tu veux pouvoir modifier toutes tes entrées de base SQL d'un coup ? Ou les modifier une par une ? Car la, tu affiches des input pour toutes les données, mais tu fais un seul UPDATE.
LupusMic
le 02/05/2009 à 15:54
LupusMic
(nasdrovia70) Plus simple sera plus compliqué.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours