Auteur Sujet: Update datebase  (Lu 3100 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne sab22

  • Débutant
  • *
  • Messages: 3
Update datebase
« le: 08 avril 2009 à 14:14:17 »
Bonjour,
Je veux faire une page d'administrateur de ma base de donnés en php. J'ai déjà ma page que liste toutes mes entrées et aussi la page qui insère des nouveaux entrées. Mais mon problème est avec l'update. Je ne comprends pas pourquoi il ne fonctionne pas. J'ai comme 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 '' at line 2". Je sais ce que l'erreur veux dire, mais je ne sais pas comment le corriger.
Le code :
 

<?php
$con = mysql_connect("...", "...", "...");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("...", $con);

// get details of selected record

  if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    $id = $_GET['id'];
   }
  else {
    $id = NULL;
   }
  if ($id) {
    $sql = "SELECT * FROM jornal WHERE id = $id";
  $result = mysql_query($sql) or die (mysql_error());
  $row = mysql_fetch_assoc($result);
   }
 
  // prepare the SQL query
  $sql = "UPDATE jornal SET titre = '$titre', message = '$message'
          WHERE id = $id";
  // submit the query and redirect if successful
  $done = mysql_query($sql) or die(mysql_error());


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Journal - update record</title>
<link href="../assets/admin.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Update journal entry</h1>
<p><a href="journal_list_mysqli.php">List all entries</a> </p>

<form id="form1" name="form1" method="post" action="">
<p>
        <label for="titre">Titre:</label>
        <input name="titre" type="text" class="widebox" id="titre" value= "<?php echo htmlentities($row['titre']); ?>" />
    </p>
    <p>
        <label for="message">message:</label>
        <textarea name="message" cols="60" rows="8" class="widebox" id="message"><?php echo htmlentities($row['message']); ?></textarea>
    </p>
    <p>
        <input type="submit" name="update" value="Update entry" />
      <input name="id" type="hidden" value="<?php $row['id']; ?>" />
    </p>
</form>
</body>
</html>

Merci d'avance

Hors ligne ange

  • Débutant
  • *
  • Messages: 27
Re : Update datebase
« Réponse #1 le: 08 avril 2009 à 18:18:03 »
Bonjour,

$sql = "UPDATE jornal SET titre = '".$titre."', message = '".$message."'
          WHERE id = '".$id."'";

Hors ligne sab22

  • Débutant
  • *
  • Messages: 3
Re : Update datebase
« Réponse #2 le: 08 avril 2009 à 18:41:23 »
Ok, merci!!!!
 je n'ai plus de message d'erreur. Mais il ne fait pas l'update non plus...

Hors ligne ange

  • Débutant
  • *
  • Messages: 27
Re : Update datebase
« Réponse #3 le: 08 avril 2009 à 18:55:55 »
Re,

Oui, normal, j'avais pas vu ton form.

Essayes :
$sql = "UPDATE jornal SET titre = '".$_POST[titre]."', message = '".$_POST[message]."'
          WHERE id = '".$_POST[id]."'";

+
je ne mettrais pas non plus mon html_entities là, mais plutôt au moment de l'enregistrement dans la BDD,
sinon, il te faut utiliser pour l'enregistrement html_entity_decode, sinon tu vas faire du encode sur du encode...
« Modifié: 08 avril 2009 à 19:07:36 par ange »

Hors ligne ange

  • Débutant
  • *
  • Messages: 27
Re : Update datebase
« Réponse #4 le: 08 avril 2009 à 19:14:00 »
Arrrf,
Mais c'est que ton script en plus est à l'envers, tu fais le select avant le update

Partages les choses:

if($_POST[titre]){

ton update

}

if($_GET[id]){

    ton select

}

Hors ligne sab22

  • Débutant
  • *
  • Messages: 3
Re : Update datebase
« Réponse #5 le: 09 avril 2009 à 18:17:26 »
Merci, mais ça donne la même chose. Mon script maintenant est comme ça:
<?php
$con = mysql_connect("...", "...", "...");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("...", $con);

// get details of selected record
if($_POST['titre']){

 $sql = "UPDATE jornal SET titre = '".$titre."', message = '".$message."'
          WHERE id = '".$id."'";
 
 
  if ($_GET['id']) {
    $id = $_GET['id'];
   }
  else {
    $id = NULL;
   }
  if ($id) {
    $sql = "SELECT * FROM jornal WHERE id = $id";
  $result = mysql_query($sql) or die (mysql_error());
  $row = mysql_fetch_assoc($result);
   }

   
 
  // submit the query and redirect if successful
  $done = mysql_query($sql) or die(mysql_error());

     }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Journal - update record</title>
<link href="../assets/admin.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Update journal entry</h1>
<p><a href="journal_list_mysqli.php">List all entries</a> </p>

<form id="form1" name="form1" method="post" action="">
<p>
        <label for="titre">Titre:</label>
        <input name="titre" type="text" class="widebox" id="titre"  <?php echo $row['titre']; ?> />
    </p>
    <p>
        <label for="message">message:</label>
        <textarea name="message" cols="60" rows="8" class="widebox" id="message"  ><?php echo $row['message']; ?></textarea>
    </p>
    <p>
        <input type="submit" name="update" value="Update entry" />
      <input name="id" type="hidden" value=" <?php $row['id']; ?>" />
    </p>
</form>
</body>
</html>


Je n'ai plus la message d'erreur, mais il ne fait pas l'update non plus....HELP!!!!

Hors ligne ange

  • Débutant
  • *
  • Messages: 27
Re : Update datebase
« Réponse #6 le: 10 avril 2009 à 07:21:22 »
Re,

Je te le redis, tu dois être plus methodique, tu prepares ta requete de update mais tu ne la fais pas donc c'est :

<?php
$con = mysql_connect("...", "...", "...");
if (!$con) {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("...", $con);

// mise a jour table
if($_POST['titre']){

       $sql = mysql_query("UPDATE jornal SET titre = '".$_POST[titre]."', message = '".$_POST[message]."'
                        WHERE id = '".$_POST[id]."'");
 // Normalement ici il serait bien de faire une redirection mais bon ...
}

if ($_GET['id'] && is_numeric($_GET[id])){
    $sql = "SELECT * FROM jornal WHERE id = $id";
     $result = mysql_query($sql) or die (mysql_error());
     $row = mysql_fetch_assoc($result);
}
?>