Page 1 sur 2

UPDATE

Posté : 10 juil. 2005, 19:55
par Cypher_PHP
salut

voici le message d'erreur:
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 'FROM members SET prenom='', name='' WHERE id =''' at line 1
il me semble qu'il manque quelquechose dans la syntaxe Update???

voici mes fichiers
list_update.php
ce fichier contient la liste des id sur lesquels je clique pour mettre à jour mes infos.
<?php 
require_once('config.php');
?>
<html>
<head>
</head>
<body>
<table width="75%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td colspan="3">
      <?php do {?>
    </td>
  </tr>
  <tr> 
  
    <td width="45%"><?php echo "<a href='form_update.php?num=".$row_RecorMembers['id']."'".">".$row_RecorMembers['id']."</a>";?></td>
    <td width="55%"><?php echo $row_RecorMembers['name'];?></td>
    <td width="55%"><?php echo $row_RecorMembers['prenom'];?></td>
  </tr>
  <tr> 
    <td colspan="3">
      <?php } while ($row_RecorMembers = mysql_fetch_assoc($RecorMembers));?>
    </td>
  </tr>
</table>

</body>
</html>
form_update.php:
ce fichier contient le formulaire de mise à jour et indiquera aussi l'id dont leurs infos seront mises à jour.
<?php 
require_once('config.php');

$id = $_POST['id'];
$prenom = $_POST['prenom'];
$name    = $_POST['name'];

$RecorUpdate = mysql_query("UPDATE FROM $dbtable SET prenom='$prenom', name='$name' WHERE id ='$id' ") or die(mysql_error()); 
?>
<html>
<body>
<form method="POST" action="valide.php">
  <p>N&deg;: <?php echo $row_RecorMembers['id'];?><br>
    Nom: 
    <input type=text name="name"  value="<?php echo $name ?>">
    <br>
    Prénom: 
    <input type=text name="prenom" value="<?php echo $prenom ?>">
    <br>
    <input type=submit value="Enregistrer">
  </p>
  </form>
</body>
</html>

Cordialement
Cypher_PHP[/php]

Posté : 10 juil. 2005, 20:11
par ouckileou
il faut que tu prennes l'habitude de lire les messages d'erreur
You have an error in your SQL syntax.
il y a effectivement une erreur de syntaxe
Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM members SET prenom='', name='' WHERE id =''' at line 1
Suis donc le conseil qui t'est donné : consulter le manuel de la commande UPDATE, tu verras tout de suite ton erreur
=> http://dev.mysql.com/doc/mysql/fr/update.html
de plus, dans la fin du message, tu peux constater qu'apparament ce qui se trouve à la place de tes variables est vide...

(et quand tu as une erreur renvoyée par MySQL, poste dans le forum "Base de données" qui est plus approprié ;))

Posté : 10 juil. 2005, 22:09
par Cyrano
En clair : c'est "UPDATE table" et non "UPDATE FROM table" [-X

Posté : 10 juil. 2005, 22:17
par ouckileou
En clair : c'est "UPDATE table" et non "UPDATE FROM table" [-X
comment ça "en clair" ?!
je sens que tu veux faire passer un message:P
tu trouves que c'est pas clair ce que j'ai dit ? :lol:

Posté : 10 juil. 2005, 22:25
par Cyrano
lol, non, mais la page indiquée n'est pas forcément évidente pour un débutant et les explications de MySQL avec toutes les options indiquées entre crochets peuvent être perturbantes quand on n'est pas habitué ;)

Je vais personnellement recourir aux liens vers la doc pour appuyer une réponse partielle, pas pour envoyer chercher une réponse ailleurs à moins que le lien pointe sur une réponse évidente à l'ouverture ou quasiment :D

Posté : 10 juil. 2005, 22:33
par ouckileou
lol, non, mais la page indiquée n'est pas forcément évidente pour un débutant et les explications de MySQL avec toutes les options indiquées entre crochets peuvent être perturbantes quand on n'est pas habitué ;)

Je vais personnellement recourir aux liens vers la doc pour appuyer une réponse partielle, pas pour envoyer chercher une réponse ailleurs à moins que le lien pointe sur une réponse évidente à l'ouverture ou quasiment :D
c'est vrai, moi j'envoie quasi systématiquement sur la doc :oops:

Posté : 10 juil. 2005, 22:37
par Cyrano
Ce n'est pas forcément une mauvaise chose, si tous commençaient par là, on aurait sûrement moins de messages, mais bon, il ne faut pas trop en abuser. Ceux qui ne consultent pas la doc avant de poser des questions ne sont pas familier avec. Il faut les y amener... avec doigté je dirais :langue: Et dans certains cas, la doc n'aide pas beaucoup, ça n'est jamais qu'une traduction mais il faudrait dans certains cas particulier se demander si les traducteurs sont tous des développeurs ;)

Posté : 11 juil. 2005, 17:08
par Cypher_PHP
bonjour
je reviens dessus

oui c'est vrai la doc est un peu complexe avec les expressions et crochets
mais j'ai trouvé qd mm pour la partie FROM (je suis bete )

reste à trouver pourquoi ca ne met pas à jour les informations... :oops:
quand je clique le bouton "enregistrer" du fichier form_update.php qui me renvoie vers le fichier valide_update.php qui devrait me confirmer que les informations ont été mises à jour.

Voici le fichier list_update.php:
<?php 
require_once('config.php');
?>
<html>
<head>
</head>
<body>
<table width="75%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td colspan="3">
      <?php do {?>
    </td>
  </tr>
  <tr> 
  
    <td width="45%"><?php echo "<a href='form_update.php?num=".$row_RecorMembers['id']."'".">".$row_RecorMembers['id']."</a>";?></td>
    <td width="55%"><?php echo $row_RecorMembers['name'];?></td>
    <td width="55%"><?php echo $row_RecorMembers['prenom'];?></td>
  </tr>
  <tr> 
    <td colspan="3">
      <?php } while ($row_RecorMembers = mysql_fetch_assoc($RecorMembers));?>
    </td>
  </tr>
</table>

</body>
</html>
Voici le fichier form_update.php:
<?php 
require_once('config.php');

?>
<html>
<body>
<form method="POST" action="valide_update.php">
  <p>N&deg;: <?php echo $row_RecorId['id'];?><br>
    Nom: 
    <input type=text name="name"  value="<?php echo $row_RecorId['name'];?>">
    <br>
    Prénom: 
    <input type=text name="prenom" value="<?php echo $row_RecorId['prenom'];?>">
    <br>
    <input type=submit value="Enregistrer">
  </p>
  </form>
</body>
</html>
Voici le fichier valide_update.php:
<?php 
require_once('config.php');
    
    // --- Récupération des données du formulaire
$id 		= $_GET['id'];
$prenom 	= $_GET['prenom'];
$name  		= $_GET['name'];

$RecorUpdate = mysql_query("UPDATE $dbtable SET prenom='$prenom', name='$name' WHERE id ='$id' ") or die(mysql_error()); 

?>
<html>
<head>
</head>
<body>
Bravo vous avez ajouté "<?php echo $row_RecorId['name'];?>" et "<?php echo $row_RecorId['prenom'];?>" <br>
vous pouvez voir les infos <a href="list.php">ici</a>
</body>
</html>

Cordialement

Cypher_PHP

Posté : 11 juil. 2005, 17:13
par zeus
Il y a quelquechose d'autre que j'apprendrais volontier aux débutants, c'est de sortir les variables des chaines de caractère :twisted:

De plus, dans un WHERE, si tu compare une chaine de caractère, il faut utiliser LIKE et non pas =

Il se peut que l'erreur vienne de là : il ne trouve pas la ligne correspondante donc il ne met rien à jour
$RecorUpdate = mysql_query("UPDATE ".$dbtable." SET prenom='".$prenom."', name='".$name."' WHERE id LIKE '".$id."' ") or die(mysql_error()); 

Posté : 11 juil. 2005, 17:21
par ouckileou
oui c'est vrai la doc est un peu complexe avec les expressions et crochets
mais j'ai trouvé qd mm pour la partie FROM (je suis bete )
pour info, dans de la documentation, quelle qu'elle soit :
<quelquechose> signifie une valeur à insérer (sans les <>)
[quelquechose] signifie quelque chose de facultatif

Posté : 11 juil. 2005, 17:28
par Cypher_PHP
Ah

raté
il ne met toujours pas à jour!

je crois qu'il manque encore quelquechose...

vous m'aviez proposé votre code
ca me parait un peu bizarre

Cordialement
Cypher_PHP

Posté : 16 juil. 2005, 15:05
par Cypher_PHP
salut

de retour de mes vacances courtes
beau temps à Noirmoutiers

aie pas de réponses à ce problème?

snif....


Cordialement
Cypher_PHP

Posté : 16 juil. 2005, 15:13
par ouckileou
plusieurs points bizarre :
dans ton form_update tu ne récupères pas les valeurs par $_GET alors qu'elles ont été transmises parl'url du lien, tu récupères des $rowrecord[] dont on ne sait pas d'où elles viennent
tu transmets "num" par l'url, que tu ne récupères jamais

dans valide_update.php tu récupères des variables par $_GET alors qu'elles ont été transmises par POST

bref, un petit effort de coordination de tes récupérations de données ferait du bien
et vérifie déjà que tu récupères tes données avant de vérifier l'update ;)

Posté : 18 juil. 2005, 15:52
par Cypher_PHP
merci
je vais les étudier

Cordialement
Cypher_PHP

Posté : 19 juil. 2005, 14:52
par Cypher_PHP
salut

je me désespère

je trouve pas la solution

eh bien, j'essaie de vous expliquer clairement
je ne suis pas trés doué en francais j'espere que vous m'excusez

bon....
fichier list_update.php
tout semble parfait car j'ai pu récuperer les enregistrements dans un tableau;
puis je choisis un id pour modifier les données dans le fichier form_update.php et j'ai récuperer des données d'un id choisi dans les champs du formulaire. donc c'est bon...

mais dès que je modifie ces données, ca ne change rien

donc je pense que le problème est là dans le fichier valide_update.php

Fichier config.php:
<?php
    $dbhost="sql.free.fr";
    $dblogin="xxxxxx";
    $dbpassword="xxxxxx";
    $dbname="xxxxxxx";
	$dbtable='xxxx';

$members=mysql_pconnect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
mysql_select_db($dbname, $members);

$RecorMembers= mysql_query ("select * from $dbtable order by id desc");
$row_RecorMembers = mysql_fetch_assoc($RecorMembers);

$RecorId= mysql_query ("SELECT * FROM $dbtable where id='" . $_GET['num'] . "'");
$row_RecorId = mysql_fetch_assoc($RecorId);
?>
Fichier list_update.php:
<?php 
require_once('config.php');
?>
<html>
<head>
</head>
<body>
<table width="75%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td colspan="3">
      <?php do {?>
    </td>
  </tr>
  <tr> 
  
    <td width="45%"><?php echo "<a href='form_update.php?num=".$row_RecorMembers['id']."'".">".$row_RecorMembers['id']."</a>";?></td>
    <td width="55%"><?php echo $row_RecorMembers['name'];?></td>
    <td width="55%"><?php echo $row_RecorMembers['prenom'];?></td>
  </tr>
  <tr> 
    <td colspan="3">
      <?php } while ($row_RecorMembers = mysql_fetch_assoc($RecorMembers));?>
    </td>
  </tr>
</table>

</body>
</html>
Fichier form_update.php:
<?php 
require_once('config.php');
$RecorUpdate = mysql_query("UPDATE ".$dbtable." SET prenom='".$prenom."', name='".$name."' WHERE id LIKE '".$id."' ") or die(mysql_error()); 

?>
<html>
<body>
<form method="GET" action="list.php">
  <p>N&deg;: <?php echo $row_RecorId['id']; ?><br>
    Nom: 
    <input type=text name="name"  value="<?php echo $row_RecorId['name'];?>">
    <br>
    Prénom: 
    <input type=text name="prenom" value="<?php echo $row_RecorId['prenom'];?>">
    <br>
    <input type=submit value="Enregistrer">
  </p>
  </form>
</body>
</html>
Fichier valide_update.php:
<?php 
require_once('config.php');
    
    // --- Récupération des données du formulaire
$id 		= $_GET['id'];
$prenom 	= $_GET['prenom'];
$name  		= $_GET['name'];

$RecorUpdate = mysql_query("UPDATE ".$dbtable." SET prenom='".$prenom."', name='".$name."' WHERE id LIKE '".$id."' ") or die(mysql_error()); 

?>
<html>
<head>
</head>
<body>
Bravo vous avez ajouté "<?php echo $row_RecorId['name'];?>" et "<?php echo $row_RecorId['prenom'];?>" <br>
vous pouvez voir les infos <a href="list.php">ici</a>
</body>
</html>
merci à vous

Cordialement
Cypher_PHP