aide pour update

Eléphant du PHP | 61 Messages

24 févr. 2009, 11:42

Bonjour,


Voila j ai un fichier modif.php qui m affiche dans un menu déroulant toutes les références stockés dans l un de mes champs de ma table contenu, quand je valide la référence ça me renvoie vers un deuxième fichier php modif.php qui affiche le résultat d un select sur la référence choisie sous forme de textbox car je voudrais que la personne puisse faire un update directement dans les champs textbox via un bouton validez.

je me gratte la tete pour savoir comment faire, je pense bien sur rajouter un $sql2=update ... avec un $req2=...($sql2) mais je m embrouille un peu pou récupérer ce que la personne a tapé dans ses champs

Merci de votre aide

modif.php

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Catalogue</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body link="#000000" vlink="#FFFFFF" alink="#FFFFFF"> <div id="body"> <?php include ('config.php'); include ('connexion.php'); $rq = "SELECT DISTINCT reference FROM contenu ORDER BY reference"; $result = mysql_query($rq) or die ("Exécution de la requête impossible"); echo"<b>Choisir la référence</b>\n"; echo"<br><br>"; echo "<form action='modif2.php' method='post'><select name='reference'>\n"; while ($liste=mysql_fetch_array($result)) { extract($liste); echo "<option value='$reference'>$reference\n"; } echo " </select>\n"; echo " <BR><BR><BR><BR>"; echo "<input type='submit'"."value='Validez votre choix'></form>\n"; ?> </body></html> <?php mysql_close(); ?>
modif2.php

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Catalogue</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body link="#000000" vlink="#FFFFFF" alink="#FFFFFF"> <div id="body"> <?php include ('config.php'); include ('connexion.php'); //reference: $reference = $_POST["reference"] ; $sql1 = "SELECT reference, artiste, album, format from contenu where reference='".$_POST['reference']."' " ; AND Date = "08-Jan-1999" " ; $req = mysql_query($sql1) or die( mysql_error() ) ; $total = mysql_num_rows($req); if($total) { echo '<table>'."\n"; echo '<tr>'; echo '<td ><b><u>reference</u></b></td>'; echo '<td><b><u>artiste</u></b></td>'; echo '<td><b><u>album</u></b></td>'; echo '<td><b><u>format</u></b></td>'; echo '</tr>'."\n"; while($row = mysql_fetch_array($req)) { echo '<tr>'; echo '<td><input type="text" value="'.$row["reference"].'"/></td>'; echo '<td><input type="text" value="'.$row["artiste"].'"/></td>'; echo '<td><input type="text" value="'.$row["album"].'"/></td>'; echo '<td><input type="text" value="'.$row["format"].'"/></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; } else echo 'Pas d\'enregistrements pour cette référence'; ?> </body></html> <?php mysql_close(); ?>

ViPHP
ViPHP | 1996 Messages

24 févr. 2009, 13:35

Ce que tu veux c'est remplacer le select par un input text ?

En attendant ta réponse : Corrige déjà moi cela sinon tu vas avoir des surprises d'injection sql
 //reference:
  $reference = addslashes($_POST["reference"]);

  $sql1 = "SELECT reference, artiste, album, format from contenu where reference='$reference' AND Date = '08-Jan-1999'"; 
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 61 Messages

24 févr. 2009, 14:07

oui c est bien ca que je souhaite et puvoir faire un update pour le addslashes je dois le mettre a chaque fois deant un $_POST ?

Merci

ViPHP
ViPHP | 1996 Messages

24 févr. 2009, 14:12

oui c est bien ca que je souhaite et puvoir faire un update pour le addslashes je dois le mettre a chaque fois deant un $_POST ?

Merci
C'est mieux en effet...

Pour ton input text, je vois à long terme un module AJAX qui donne la solution en court de frappe mais c'est pas facile à mettre en œuvre rapidement.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 61 Messages

24 févr. 2009, 14:25

voila j ai tatone un peu et j obtiens ca

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Catalogue</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body link="#000000" vlink="#FFFFFF" alink="#FFFFFF"> <div id="body"> <?php include ('config.php'); include ('connexion.php'); //reference: $reference = $_POST["reference"] ; $sql1 = "SELECT reference, artiste, album, format from contenu where reference='".$_POST['reference']."' " ; $req = mysql_query($sql1) or die( mysql_error() ) ; $total = mysql_num_rows($req); if($total!=0) { echo '<form method ="post" action="modif2.php">'; echo '<table>'."\n"; echo '<tr>'; echo '<td ><b><u>reference</u></b></td>'; echo '<td><b><u>artiste</u></b></td>'; echo '<td><b><u>album</u></b></td>'; echo '<td><b><u>format</u></b></td>'; echo '</tr>'."\n"; while($row = mysql_fetch_array($req)) { echo '<tr>'; echo '<td><input type="text" name="reference" value="'.$row ["reference"].'"/></td>'; echo '<td><input type="text" name="artiste" value="'.$row["artiste"].'"/></td>'; echo '<td><input type="text" name="album" value="'.$row["album"].'"/></td>'; echo '<td><input type="text" name="format" value="'.$row["format"].'"/></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; echo '<input type="submit" name="btOk" value="Modifier!"/>'; echo '</form>'; if (isset($_POST['btOk'])) { $sql2= "UPDATE contenu SET reference=".$_POST['reference'].",artiste=".$_POST ['artiste'].",album=".$_POST['album'].",format=".$_POST['format']." WHERE reference ='$reference'"; $req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error()); if($req2) { echo ("L'insertion a été correctement effectuée") ; } else { echo("L'insertion à échouée") ; } } } ?> </body></html> <?php mysql_close(); ?>
mais quand je fais une mise a jour et que je clique sur modifier il me met cette erreur

Erreur SQL !UPDATE contenu SET reference=#10,artiste=test,album=.,format=CDR WHERE reference ='#10'
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