Souci reqête update sql

Résolu/Fermé
Caroline - Modifié par Caroline le 18/06/2015 à 13:41
 Caroline - 18 juin 2015 à 16:40
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 jeudi 18 juin 2015 Statut Membre Dernière intervention 17 avril 2021 2
18 juin 2015 à 13:49
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
18 juin 2015 à 15:20
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
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 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668
Modifié par jordane45 le 18/06/2015 à 15:36
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
Et bien j'ai fais un echo $sql; mais rien en sais afficher sur la page est-ce normale ?
0
jordane45 Messages postés 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668 > Caroline
18 juin 2015 à 15:42
As tu testé MON CODE tel quel ?????
0
Cela à fonctionner c'est bon !
merci à vous !

jordane45
le père
0
jordane45 Messages postés 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668 > Caroline
18 juin 2015 à 15:49
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
18 juin 2015 à 13:46
Bonjour

C'est vraiment un UPDATE ou un INSERT INTO que tu veux faire ?
0
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
18 juin 2015 à 15:05
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
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
18 juin 2015 à 15:15
Peux-tu redonner la requête telle qu'elle est maintenant ?
0
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 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668
18 juin 2015 à 15:19
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 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668
18 juin 2015 à 15:21
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
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 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668 > Caroline
18 juin 2015 à 15:23
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 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024
18 juin 2015 à 15:25
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 38179 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 mai 2024 4 668 > Caroline
18 juin 2015 à 15:33
Je n'avais pas vu le SWITCH désolé.
Par contre... tu as toujours un ECHO à la ligne 8 ... qui ne sert à rien.
0
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