Erreur Mysql au niveau de la fermeture de la base

Bonjour à tous,

Pour ne pas utiliser PHPMYADMIN, j’ai fait les codes Php qui me permettent d’administrer une table facilement (création base/table, ajout, liste complète, liste sur 1 id, update, suppression de données, suppression de table).

Tout va bien dans tous les fichiers… sauf 1 ! C’est celui de la mise à jour.

Donc, après m’être connecté au serveur et à la base, je fais le traitement, enfin, j’essaie.
C’est là que ça bloque “mysql_close();”, et bien entendu, il n’y a aucune mise à jour d’effectuer. :frowning:

Est-ce que vous pourriez m’aider pour que tout aille bien ?

Merci d’avance.

Salut,

Poste le code pour que nous puissions t’aider, parce que là sans éléments cela va être difficile.

Merci Canoo, voilà le code :

...
<?php
$host = "localhost";	
$user = "root";	
$password = "";	
$nombase = "recherche";
$nomtable = "recherche";
$lien = mysql_connect($host,$user,$password) or die('Erreur de connexion : ' . mysql_error() . ""); 
mysql_select_db($nombase,$lien) or die ('Erreur de connexion à la base. ' . mysql_error() . ""); 
$sql = mysql_query("SELECT * FROM $nomtable LIMIT 0, 30") or die('Erreur de la requête : ' . mysql_error() . ""); 

      $requete = mysql_query("SELECT * FROM $nomtable WHERE id=$id");
      $reponse = mysql_fetch_array($requete);
      $contenu_actuel = $reponse['motscles'];
      $nouveau_contenu = $contenu_actuel.$motscles;

echo 'Nouveaux mots-clés enregistrés : <br /><strong>', $nouveau_contenu ,'</strong><br /><br />';

mysql_query("UPDATE $nomtable SET motscles = '$nouveau_contenu' WHERE id=$id"); 
}
mysql_close();

echo '<br /><br />';
echo '[ <a href="javascript:history.go(-1)">Retour page précédente</a> ]';
echo '<br /><br />';
echo '<form method="post" action="../choix.html">';
echo '<input type="submit" name="choix" value="Retour au choix">';
echo '</form>';
?>

Ce serait bien que tu vois pourquoi ça marche pas !
Edité le 14/04/2008 à 10:01

Est-il normal qu’il y ait un “}” tout seul (entre le « mysql_query("UPDATE $nomtable » et le « mysql_close(); ») ?

Si je l’enlève, j’ai

Parse error: parse error, unexpected $end in G:\SiteQI98\recherche\admin_recherche\update\_update.php on line 56

Donc,ça vient pas de là.

mysql_query(“UPDATE $nomtable SET motscles = ‘$nouveau_contenu’ WHERE id=$id”);

Tes variables sont mal implantées dans ta requête:

mysql_query(“UPDATE “.$nomtable.” SET motscles = '”.$nouveau_contenu."’ WHERE id=".$id);
Edité le 14/04/2008 à 13:07

Ou que tu n’as pas donné l’intégralité du code :slight_smile:

Y’a-t-il un quelconque message d’erreur ?

guymage > Dans les chaînes construites avec les double-quote ("), PHP remplace $uneVariable par le contenu de la variable $uneVariable : donc ça ne vient pas de là.

Ah tiens, je ne savais pas ça, je m’étonnais d’être le seul à l’avoir vu :smiley:

la même question que guymage pourquoi y a t-il un “}” tout seul dans le code ? à mon avis il manque un bout de code au dessus comme le pense Raynor. Une possibilité de le poster ?

Je savais pas ça. Je rectifie.

Mais j’ai repéré “{”, c’est une condition de vérification.
Comme les variables ID et MOTSCLES viennent d’un formulaire, c’est pour voir si ces 2 champs sont bien remplis.

Donc, il va falloir que je revois le code de A à Z.

Comme je l’ai dit, la remarque de guymage (« Tes variables sont mal implantées dans ta requête ») est incorrecte.
Cela dit, si tu revois ton code, profites-en pour faire ainsi :

mysql_query('UPDATE `' . $nomtable . '` SET motscles = \'' . mysql_real_escape_string($nouveau_contenu, $lien) . '\'  WHERE id=' . $id);

Edité le 14/04/2008 à 23:12

Ben non, j’ai rien touché de ce côté"-là.

J’ai revu entièrement le code des 2 pages (formulaire et requete), apparemment, c’était la variable “$_GET” qui devait poser problème.
En effet, j’ai vu dans le formulaire “type=post”, et dans ma requête c’était GET.

J’ai rectifié tout ça et, chose bizarre, ça a remarché. Va savoir pourquoi maintenant ???

Donc, c’est résolu.

Merci de votre aide les gars.

++

Bah, si ton formulaire faisait une requête POST et que tu utilisais $_GET pour en recevoir le résultat c’est normal que ça ne fonctionne pas non ?