Problème de requete SQL [Résolu]

Signaler
Messages postés
29
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
8 août 2005
-
Messages postés
29
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
8 août 2005
-
Bonjour à tous, j'ai une requete SQL qui ne s'execute pas, alors que je
ne vois pas où l'erreur peut se trouver. Voici donc l'ensemble du code
qui nous mene à elle:



J'ai une page avec l'ensemble de mes news qui s'affichent, et un lien
qui conduit pour chacune d'elle à une page d'édition: pour ce faire je
récupère dans l'url le paramètre ID que j'ai passé. Voici le code (sans
la connexion à la base de donnée) de la page d'édition:



<?



$id=$_GET['id'];

// connexion à la base

// CODE DE LA CONNEXION

// requete

$sql = "SELECT pkey,date,heure,titre,content FROM news WHERE pkey=$id";

// on execute la requete

$resultat=mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());



$val = mysql_fetch_array($resultat)

?>

<form method="post" action="xmaj.php">

Pkey:


" size="5" />


Date:


" size="15" />


Heure:


" size="15" />


Titre:


" size="40" />


Contenu:


<textarea name="content" cols="80" rows="5" wrap="PHYSICAL"><?
echo $val["content"] ?></textarea>




</form>



Là j'ai ma page avec le formulaire prérempli avec les données de la
news dont j'ai récupérer les données grace à l'ID. Si je fais une
modification, elle ne passe pas dans la base de donnée... voici la page
xmaj.php :



<?php

// On commence par récupérer les champs

//if(isset($_POST['kpey'])) $id=$_POST['pkey'];

//else $id="erreur";

$id=$_GET['id'];



if(isset($_POST['date'])) $date=$_POST['date'];

else $date="erreur";



if(isset($_POST['heure'])) $heure=$_POST['heure'];

else $heure="erreur";



if(isset($_POST['titre'])) $titre=$_POST['titre'];

else $titre="erreur";



if(isset($_POST['content'])) $content=$_POST['content'];

else $content="erreur";



{

// connexion à la base

// CODE DE CONNEXION

// on écrit la requête sql

$sql = "UPDATE news SET date='".$date."',
heure='".$heure."', titre='".$titre."', content='".$content."' WHERE
pkey='$id'";

// on insère les informations du formulaire dans la table

mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());

// on affiche le résultat pour le visiteur

echo 'La news a été mondifée


[index.php Revenir à la saisie des news]


[ttesnews.php Retour à la Modification des News]


[../index.php Retour à l&prime;Index du Site]';

// on ferme la connexion

mysql_close();

}

?>



voilà, vous avez tout! je sais, c'est long, merci d'avoir déjà lu jusqu'ici ;)

6 réponses

Messages postés
29
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
8 août 2005

c'est bon.. j'avais une erreur de nom de champ à récupérer... pfff

merci quand meme :)
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Tu utilises la méthode POST pour passer de la page d'édition à xmaj.php, pourtant, tu lis l'id en get : $id=$_GET['id'];
Sinon, as-tu un message d'erreur ?
Essaie de mettre
echo $sql avnt
mysql_query($sql)
pour voir le texte de la requète...

Arn;o)
Messages postés
68
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 octobre 2006

Bonjour MrsDallara,

Dans ta première requete $sql = "SELECT pkey,date,heure,titre,content FROM news WHERE pkey=$id"; tout marche bien,

Dans la deuxième $sql = "UPDATE news SET date='".$date."', heure='".$heure."', titre='".$titre."', content='".$content."' WHERE pkey='$id'"; ça marche pas parceque tu as mis l'$id entre les ' ' , Mysql ne trouve pas l'ID convenable car pkey est un entier alors que '$id' est une chaine de caractère (CHAR).

Il suffir d'en enlever les quottes, remplace cette requete par :
$sql = "UPDATE news SET date='".$date."', heure='".$heure."', titre='".$titre."', content='".$content."' WHERE pkey=$id";

Si ça marche pas, vérifie de même la compatibilité des autres variables avec leurs types.

Sympa developpeur ;-) http://pluscool.site.voila.fr
Messages postés
29
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
8 août 2005

Alors,

irkiouak ca ne marche pas sans les ' '



et arnal 69130, je n'arrive pas à afficher la requete dans la page, ca me sort juste $sql
Messages postés
29
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
8 août 2005

rectification :)

je suis arrivée à afficher la requete, et je pense que tu as raison arnal, voici ce que ca me donne:



UPDATE news SET date='06/03/05', heure='12:00', titre='/!\\ Travaux',
content='La refonte du site a commmencé, tout est plus ou moins en
travaux... retour à la normale bientot, je l\'espère! TEST' WHERE
pkey=''



donc la valeur du pkey est pas passée

comment je fais pour quelle soit au bon format ?

parce que si je récupère la valeur avec le



if(isset($_POST['kpey'])) $id=$_POST['pkey'];

else $id="erreur";



ca ne marche pas mieux il me semble, je retente quand meme au cas où
Messages postés
29
Date d'inscription
lundi 28 octobre 2002
Statut
Membre
Dernière intervention
8 août 2005

oué en faisant avec la récup des champs du form j'obtient une erreur:



UPDATE news SET date='06/03/05', heure='12:00', titre='/!\\ Travaux',
content='La refonte du site a commmencé, tout est plus ou moins en
travaux... retour à la normale bientot, je l\'espère! TETS' WHERE
pkey='erreur'



donc je fais quoi ?