Update ne marche pas ...

Eléphant du PHP | 59 Messages

01 oct. 2005, 19:46

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

Mammouth du PHP | 1311 Messages

01 oct. 2005, 19:56

tu a essayé ta requete directement dans phpmyadmin???

Mammouth du PHP | 19672 Messages

01 oct. 2005, 20:05

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();
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 59 Messages

01 oct. 2005, 20:17

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

Mammouth du PHP | 19672 Messages

01 oct. 2005, 20:19

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 59 Messages

01 oct. 2005, 20:23

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 !