Souci reqête update sql

Résolu
Caroline -  
 Caroline -
Bonjour,

Je fais appel à vous car je rencontre un petit souci dans ma requête sql et je ne sais pas exactement ou, je voudrais faire un update des informations se trouvant dans ma base de donnée mais, plus précisément dans ma table actu.


case 'section2':
echo
//récupération des valeurs des champs:
$jour         = mysql_real_escape_string($_POST["jour"]);
$url          = mysql_real_escape_string($_POST["url"]);
$description  = mysql_real_escape_string($_POST["description"]);
$format       = mysql_real_escape_string($_POST["format"]);
$auteur       = mysql_real_escape_string($_POST["auteur"]);
 
if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) {

    //création de la requête SQL:
    $sql="UPDATE actu (jour, url, description, format, auteur) VALUES ('$jour', '$url', '$description', '$format', '$auteur') ";
 
    //exécution de la requête SQL:
    $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
 
    //affichage des résultats, pour savoir si l'insertion a marchée:
    header("Location: ../espace.php?section2=update");
}
 
else {
    header("Location: ../espace.php?section2=erreur");
};
break;


voilà l'erreur que cela me donne quand je valide le formulaire et que le formulaire est rediriger vers ce code php pour l'entré en base.

rien2You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('rien2', 'rien', 'rien', 'rien', 'test')' at line 1

(j'ai mis en base une ligne test pour tester avant)

merci de votre aide
A voir également:

8 réponses

clorideee Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut,

Tu confonds insert et update, update s'écrit comme ceci :

UPDATE table
SET champ = 'valeur'

et insert :

INSERT INTO table
VALUES ...
2
Utilisateur anonyme
 
Pas de WHERE, donc tu vas modifier toute ta table d'un seul coup quand ça marchera.
Si tu as toujours ton "or die()" et qu'il n'y a pas de message d'erreur, c'est que ta requête n'est pas exécutée. Ou que tu vérifies mal le contenu de ta table.
Peux-tu faire un 'echo $sql;' juste après
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
pour vérifier que tu y passes bien ?
1
Caroline
 
j'ai tester un echo après ce que vous me dites et au faites je n'ai pas de message ni quoi que se soit.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Essayes ça stp :
<?php
// Reporte toutes les erreurs PHP (Voir l'historique des modifications)
error_reporting(E_ALL);

//Connexion à la BDD
$cnx = mysql_connect( "localhost", "user", "password" ) or die( "<center>Impossible de se connecter au serveur</center><br>" );
$db= mysql_select_db( "DBActu" ) or die( "<center>Impossible de se connecter à la base de données</center><br>" );


$action=isset($_GET['action'])?$_GET['action']:NULL;

//récupération des valeurs des champs:
$id           = isset($_POST["id"])?mysql_real_escape_string($_POST["id"]):NULL;
$jour         = isset($_POST["jour"])?mysql_real_escape_string($_POST["jour"]):'';
$url          = isset($_POST["url"])?mysql_real_escape_string($_POST["url"]):'';
$description  = isset($_POST["description"])?mysql_real_escape_string($_POST["description"]):'';
$format       = isset($_POST["format"])?mysql_real_escape_string($_POST["format"]):'';
$auteur       = isset($_POST["auteur"])?mysql_real_escape_string($_POST["auteur"]):'';
  
switch ($action){

  case 'section2':
  
  if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) {
    //création de la requête SQL:
    $sql="UPDATE actu 
           SET id='$id'
           ,jour='$jour'
         ,url='$url'
         ,description='$description'
         ,format='$format'
         ,auteur='$auteur'
        WHERE id='$id'";
   
    //exécution de la requête SQL:
    $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
    
    //affichage des résultats, pour savoir si l'insertion a marchée:
    
    //le temps des tests:
    echo $sql;
    //header("Location: ../espace.php?section2=update");
  } else {
    //header("Location: ../espace.php?section2=erreur");
     print_r($_POST);
  };
  break;
  
 default :
   //header("Location: ../espace.php");
   echo " ERREUR : Variable ACTION  inconnue ";
   print_r($_GET);
 break;
}


NB : Pour le WHERE j'ai pensé que tu devais sûrment utiliser l'ID de ta table...
Sinon.. il faudra que tu changes.

PS: Merci de nous coller le résultat de ce qui s'affiche sur ta page.


EDIT : Ajout de debug !


Cordialement,
Jordane
1
Caroline
 
Et bien j'ai fais un echo $sql; mais rien en sais afficher sur la page est-ce normale ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Caroline
 
As tu testé MON CODE tel quel ?????
0
Caroline
 
Cela à fonctionner c'est bon !
merci à vous !

jordane45
le père
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Caroline
 
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
Utilisateur anonyme
 
Bonjour

C'est vraiment un UPDATE ou un INSERT INTO que tu veux faire ?
0
Caroline
 
C'est un update pour mettre a jour des informations déjà existante donc je doit faire comme ceci:
 
$sql="UPDATE actu (jour, url, description, format, auteur) SET ('$jour', '$url', '$description', '$format', '$auteur') ";

ou ceci:
$sql="UPDATE actu SET jour='$jour', url='$url', description='$description', format='$format', auteur='$auteur' ";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
La syntaxe du UPDATE, comme te l'a dit cloridee, est UPDATE table
SET champ = 'valeur' , etc. donc ton deuxième exemple.
Mais attention, tu as une parenthèse en trop et SURTOUT tu n'as pas de WHERE. Comment veux-tu que mysql devine quelle ligne tu veux modifier ? Il ne devinera pas, il modifiera TOUTE ta table.

Il faudrait aussi que tu te rensignes sur mysqli_ et PDO, car les fonctions mysql_ que tu utilises sont obsolètes, mais c'est une autre histoire.
0
Caroline
 
alors j'ai tester cela m'affiche une page blanche pas d'erreur mysql ou de syntaxe mais, l'envoie vers la bdd ne se fais pas.
0
Utilisateur anonyme
 
Peux-tu redonner la requête telle qu'elle est maintenant ?
0
Caroline
 
La voici :

$sql="UPDATE actu SET id='$id',jour='$jour',url='$url',description='$description',format='$format', auteur='$auteur'";


De base avant "jour" j'ai un champ "id" dans la table actu mais, il est en auto incrément donc je ne pense pas être obliger de mettre id dans la requête.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
à première vue la requête me semble bonne (maintenant)..
Le souci se situe surement ailleurs dans ton code.

Pourrais tu reposter l'intégralité de ton code actuel ?

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
EDIT : Il te manque un WHERE dans ta requête .... sinon... tu vas mettre à jour TOUTES les lignes de ta BDD...

UPDATE  matable
   SET monchamp = 'unevaleur'
        , monchamp2 = 'unevaleur2'
   WHERE  unchamp = 'quelquechose'
0
Caroline
 
Oui voici le code :

$cnx = mysql_connect( "localhost", "user", "password" ) or die( "<center>Impossible de se connecter au serveur</center><br>" );
$db= mysql_select_db( "DBActu" ) or die( "<center>Impossible de se connecter à la base de données</center><br>" );

$action=$_GET['action'];
switch ($action){

case 'section2':
echo
//récupération des valeurs des champs:
$id           = mysql_real_escape_string($_POST["id"]);
$jour         = mysql_real_escape_string($_POST["jour"]);
$url          = mysql_real_escape_string($_POST["url"]);
$description  = mysql_real_escape_string($_POST["description"]);
$format       = mysql_real_escape_string($_POST["format"]);
$auteur       = mysql_real_escape_string($_POST["auteur"]);
 
if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) {
    //création de la requête SQL:
    $sql="UPDATE actu SET id='$id',jour='$jour',url='$url',description='$description',format='$format', auteur='$auteur'";
 
    //exécution de la requête SQL:
    $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
 
    //affichage des résultats, pour savoir si l'insertion a marchée:
    header("Location: ../espace.php?section2=update");
}
 
else {
    header("Location: ../espace.php?section2=erreur");
};
break;
default :

header("Location: ../espace.php");
break;
}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Caroline
 
Tu as un CASE ... mais sans SWITCH ?

Tu as un ECHO tout seul .. sans rien avec ??


Est-ce là le contenu ENTIER de ton fichier PHP ???
0
Caroline > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
voilà le contenu entier:

$cnx = mysql_connect( "localhost", "user", "password" ) or die( "<center>Impossible de se connecter au serveur</center><br>" );
$db= mysql_select_db( "DBActu" ) or die( "<center>Impossible de se connecter à la base de données</center><br>" );

$action=$_GET['action'];
switch ($action){

case 'section2':
echo
//récupération des valeurs des champs:
$id           = mysql_real_escape_string($_POST["id"]);
$jour         = mysql_real_escape_string($_POST["jour"]);
$url          = mysql_real_escape_string($_POST["url"]);
$description  = mysql_real_escape_string($_POST["description"]);
$format       = mysql_real_escape_string($_POST["format"]);
$auteur       = mysql_real_escape_string($_POST["auteur"]);
 
if(isset($_POST["jour"]) AND isset($_POST["url"]) AND ($_POST["description"]) AND ($_POST["format"]) AND ($_POST["auteur"])) {
    //création de la requête SQL:
    $sql="UPDATE actu SET id='$id',jour='$jour',url='$url',description='$description',format='$format', auteur='$auteur'";
 
    //exécution de la requête SQL:
    $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
 
    //affichage des résultats, pour savoir si l'insertion a marchée:
    header("Location: ../espace.php?section2=update");
}
 
else {
    header("Location: ../espace.php?section2=erreur");
};
break;
default :

header("Location: ../espace.php");
break;
}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Caroline
 
Je n'avais pas vu le SWITCH désolé.
Par contre... tu as toujours un ECHO à la ligne 8 ... qui ne sert à rien.
0
Caroline
 
Voilà comment ça se présente coté formulaire après je ne sais pas si cela peut aider :

$cnx = mysql_connect( "localhost", "user", "password" ) ;
 
//sélection de la base de données:
$db = mysql_select_db( "DBActu" ) ;
 
//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier 
$id = $_GET["Info"] ;
 
//requête SQL:
$sql = "SELECT id, jour, description, url, format, auteur FROM actu  WHERE id = ".$id ;

mysql_query("SET NAMES utf8"); 
 
//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;
 
//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
echo '<form name="insertion" action="update.php?action=section2" method="POST">';
echo '<input type="hidden" name="id" value="'.$id.'">';
echo '<label for="jour">DATE</label>';
echo '<input type="text" id="jour" class="jour" name="jour" value="'.$result->jour.'"">';
echo '<br/>';
echo '<label for="url">URL</label>';
echo '<input type="text" id="url" class="url" name="url" value="'.$result->url.'">';
echo '<br/>';
echo '<label for="description">DESCRIPTION</label>';
echo '<input type="text" id="description" class="description" name="description" value="'.$result->description.'">';
echo '<br/>';
echo '<label for="format">FORMAT DU FICHIER </label>';
echo '<select id="format" name="format" class="format">';
echo '<option>'.$result->format.'</option>';
echo '<option>PDF</option>';
echo '<option>DOC</option>';
echo '<option>TXT</option>';
echo '</select>';
echo '<br/>';
echo '<label for="auteur">AUTEUR</label>';
echo '<input type="text" class="auteur" id="auteur" name="auteur" value="'.$result->auteur.'">';
echo '<br/>';
echo '<input type="submit" name="submit" value="Enregistrer" title="Enregistrement des paramètres" class="btn btn-primary active"/>';
echo '</form>';
echo '<br/>';
echo '<br/>';
echo '</form>';
}
0