Page 1 sur 1

Update ne marche pas ...

Posté : 01 oct. 2005, 19:46
par PsykoCors
Bonjour tout le monde,

Voici mon probleme : ma requete UPTADE ne marche pas ... Et je ne vois vraiment pas ou est le probleme, mais je sens bien le truc tout con (dsl d'avance :? )


Fichier pour la modification :
<?
//connexion à la base
$db = mysql_connect('localhost','root','') or die ('erreur de connexion');
//sélection de la base
mysql_select_db('test',$db);

//identifie les variables
$modif = $_POST["modif"];
$id = $_POST["id"];
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
$datenaiss = $_POST["datenaiss"];
$classe = $_POST["classe"];

//Selection à modifié
$sql = "SELECT * FROM `eleves` WHERE id=$modif";
$req = mysql_query($sql);
$pers = mysql_fetch_array($req)
?>

MODIFICATION
<table border=0>
<form method="post" action="modif_validation.php">
<tr><td>id :</td>
<td><textarea name="id" rows=1 cols=40><? echo $pers['id']; ?></textarea></td></tr>
<tr><td>Nom :</td>
<td><textarea name="nom" rows=1 cols=40><? echo $pers['nom']; ?></textarea></td></tr>
<tr><td>Prénom :</td>
<td><textarea name="prenom" rows=1 cols=40><? echo $pers['prenom']; ?></textarea></td></tr>
<tr>
      <td height="41">Data de naissance :</td>
<td><textarea name="datenaiss" rows=1 cols=40><? echo $pers['datenaiss']; ?></textarea></td></tr>
<tr><td>Classe :</td>
<td><textarea name="classe" rows=1 cols=40><? echo $pers['classe']; ?></textarea></td></tr>
<tr><td colspan=2 align=center><input type="submit" name="submit" value="Envoyer"></td>
</form>
</table>

Fichier qui appele SQL pour la modif :
<?
//connexion à la base
$db = mysql_connect('localhost','root','') or die ('erreur de connexion');
//sélection de la base
mysql_select_db('test',$db);

//identifie les variables
$id = $_POST["id"];
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
$datenaiss = $_POST["datenaiss"];
$classe = $_POST["classe"];

//envoie de la requête modification des données
mysql_query("UPDATE eleves SET nom= '$nom ', prenom= '$prenom', datenaiss= '$datenaiss', classe= '$classe', nom= '$nom' WHERE id='$id' "); 
//Récupèration des données 
echo " $id modifié ";

//fermeture 
mysql_close();
?> 

L'erreur doit se situer au niveau de mysql_query, mais je dois pas arriver à ouvrir mes yeux :shock: :

Merci de votre aide

Posté : 01 oct. 2005, 19:56
par jeff
tu a essayé ta requete directement dans phpmyadmin???

Posté : 01 oct. 2005, 20:05
par Cyrano
Mouais, il y a des erreurs dans les deux codes de toutes façon:
Premier code, une balise <tr> non fermée et des balises <form> et </form> au mauvais endroit => code invalide:
<?
//connexion à la base
$db = mysql_connect('localhost','root','') or die ('erreur de connexion');
//sélection de la base
mysql_select_db('test',$db);

//identifie les variables
$modif     = $_POST["modif"];
$id        = $_POST["id"];
$nom       = $_POST["nom"];
$prenom    = $_POST["prenom"];
$datenaiss = $_POST["datenaiss"];
$classe    = $_POST["classe"];

//Selection à modifié
$sql  = "SELECT * FROM `eleves` WHERE id= ".$modif;
$req  = mysql_query($sql);
$pers = mysql_fetch_array($req)
?>

MODIFICATION
<form method="post" action="modif_validation.php">
  <table border=0>
    <tr>
      <td>id :</td>
      <td><textarea name="id" rows=1 cols=40><? echo $pers['id']; ?></textarea></td>
    </tr>
    <tr>
      <td>Nom :</td>
      <td><textarea name="nom" rows=1 cols=40><? echo $pers['nom']; ?></textarea></td>
    </tr>
    <tr>
      <td>Prénom :</td>
      <td><textarea name="prenom" rows=1 cols=40><? echo $pers['prenom']; ?></textarea></td>
    </tr>
    <tr>
      <td height="41">Data de naissance :</td>
      <td><textarea name="datenaiss" rows=1 cols=40><? echo $pers['datenaiss']; ?></textarea></td>
    </tr>
    <tr>
      <td>Classe :</td>
      <td><textarea name="classe" rows=1 cols=40><? echo $pers['classe']; ?></textarea></td>
    </tr>
    <tr>
      <td colspan=2 align=center><input type="submit" name="submit" value="Envoyer"></td>
    </tr>
</table>
</form>
Second code, essaye donc en faisant des concaténation propre et en enlevant les appostrophes autour de l'id de la clause WHERE, c'est un entier, or avecde apostrophes, il sera lu comme une chaine de caractères
<?
//connexion à la base
$db = mysql_connect('localhost','root','') or die ('erreur de connexion');
//sélection de la base
mysql_select_db('test',$db);

//identifie les variables
$id        = $_POST["id"];
$nom       = $_POST["nom"];
$prenom    = $_POST["prenom"];
$datenaiss = $_POST["datenaiss"];
$classe    = $_POST["classe"];

//envoie de la requête modification des données
$sql = "UPDATE eleves SET nom= '". $nom ."', prenom= '". $prenom ."', datenaiss = '". $datenaiss ."', classe='". $classe ."' 'nom= '". $nom ."' WHERE id=". $id;
if(mysql_query($sql))
{
    //Récupèration des données
    echo " $id modifié ";
}
//fermeture
mysql_close();
?>

Posté : 01 oct. 2005, 20:17
par PsykoCors
ca ne marche pas non plus :?

Rien n'est afficher dans la seconde page ( malgré le
echo " $id modifié ";
)


Si je met
mysql_query($sql);
echo " $id modifié ";
à la place de
if(mysql_query($sql))
{
    //Récupèration des données
    echo " $id modifié ";
} 
le echo fonctionne, mais toujours pas de modif ... je comprend vraiment pas

Posté : 01 oct. 2005, 20:19
par Cyrano
C'est pour ça que j'ai rajouté le if() : mysql_query() retourne false en cas d'échec.

Fais un echo($sql) pour voir la requête générée, copie-là et teste là dans phpMyAdmin pour avoir des détails sur l'erreur.

Posté : 01 oct. 2005, 20:23
par PsykoCors
Ok j'ai vu mon erreur grace a $sql...

J'avais anoncé que ca devait etre con, et ca l'est ... :evil: J'ai remis nom=$nom je ne sais meme pas pourquoi dans ma requete (donc elle aparait deux fois)

Merci !