[PHP][Résolu] Problème de suppression...

Problème de suppression... [PHP][Résolu] - PHP - Programmation

Marsh Posté le 04-12-2005 à 21:54:27    

Bonsoir, voila quelques heures que je galère sur une ligne et je m'en remets à vous pour m'aider.
 
Voici le code :

Code :
  1. if($_REQUEST['suppr'])
  2. {
  3. print $_REQUEST['suppr'];
  4. $db = mysql_connect('localhost', 'family', 'breuil05');
  5. mysql_select_db('famille', $db);
  6. $sql_results = mysql_query("SELECT * FROM articles WHERE key ='".$_REQUEST['suppr']."'" ) or die(mysql_error());
  7. while($ligne = mysql_fetch_array($sql_results))
  8. {
  9.  if($_SESSION["log"] == $ligne['auteur'])
  10.  {
  11.   $squery = 'DELETE FROM articles WHERE \'key\' = \''.$_REQUEST['suppr'].'\'';
  12.   mysql_query($squery) or die(mysql_error());
  13.  }
  14. }
  15. mysql_close($db);
  16. $page = 'articles';
  17. }


 
L'erreur est la suivante :
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 'key ='1'' at line 1
 
$_REQUEST['suppr'] > c'est une variable que j'envoie à ma page de cette façon : index.php?suppr="clé primaire de l'article". Ce que je reçois est bien la clé primaire de l'article a supprimer.
 
Je voudrais donc supprimer l'article dans la base mais avant je vérifie si l'auteur est bien celui qui a ouvert une session...
 
Merci de votre aide.


Message édité par jacpapac le 05-12-2005 à 22:33:39
Reply

Marsh Posté le 04-12-2005 à 21:54:27   

Reply

Marsh Posté le 04-12-2005 à 22:16:18    

ca doit etre les ' autour de key non ?
 

Code :
  1. $squery = 'DELETE FROM articles WHERE `key` = "'.$_REQUEST['suppr'].'"';

?
 
 
 
ps: je crois qu'il vaut mieux employer $_GET['suppr']

Reply

Marsh Posté le 04-12-2005 à 22:31:12    

c'est autour de cette ligne oui, par contre la valeur renvoyée par $_REQUEST['suppr'] est bonne.  
Quand je stocke la requete dans une variable et que je l'affiche cela me donne :
SELECT * FROM articles WHERE 'key' ='18'
18 étant bien l'id de l'article à supprimer...


Message édité par jacpapac le 04-12-2005 à 22:31:38
Reply

Marsh Posté le 04-12-2005 à 22:32:52    

oui mais il ne faut pas mettre de ' autour de key
 
'key' pas bien: il considère que c'est une chaine et pas une colonne
key bien
`key` mieux (pour les eventuels mots réservés...)
 

Reply

Marsh Posté le 05-12-2005 à 00:56:53    

Donc on peut supprimer n'importe quelle ligne en tapant le lien et l'ID de la ligne :whistle:

Reply

Marsh Posté le 05-12-2005 à 01:01:47    

il vérifie quand meme l'auteur du message

Reply

Marsh Posté le 05-12-2005 à 01:09:48    

art_dupond a écrit :

il vérifie quand meme l'auteur du message


J'avais pas fait attention :jap:
M'enfin c'est pas le sujet :) Celà dit je ferais pas ça comme ça ;) C'est brouillon le select suivit du delete :) Et au delà de ça, faut-il vraiment supprimer, grand débat :??:

Reply

Marsh Posté le 05-12-2005 à 01:43:54    

je comprends pas la fin de ton message... "faut-il vraiment supprimer ?"
 
tu parles du fait que l'id vienne de l'url ?
 
 
si oui, comment ferais-tu ? l'id doit bien venir d'une facon ou d'une autre (get ou post). Après faut tester si la personne peut effacer.
 
tu ferais quoi en plus ?
 
 
 
 
 
 
sinon pour le bout de code, ce serait mieux comme ca ?
 

Code :
  1. delete ... from... where key="la clé" and auteur="log"


Reply

Marsh Posté le 05-12-2005 à 02:01:09    

art_dupond a écrit :

je comprends pas la fin de ton message... "faut-il vraiment supprimer ?"
 
tu parles du fait que l'id vienne de l'url ?
 
 
si oui, comment ferais-tu ? l'id doit bien venir d'une facon ou d'une autre (get ou post). Après faut tester si la personne peut effacer.
 
tu ferais quoi en plus ?
 
 
 
 
 
 
sinon pour le bout de code, ce serait mieux comme ca ?
 

Code :
  1. delete ... from... where key="la clé" and auteur="log"



La suppression matérielle est un choix, parfois la suppresion logique est pas plus mal mais ça dépend du besoin et du cas :)
 
Je serais plus d'accord avec ta proposition :) Parce que boucler sur un résultat unique normalement et se taper 2 requêtes dont une qui sert presque à rien et puis vive l'injection sql là ou au moins le plantage du sgbd et un joli time out du serveur http :)

Reply

Marsh Posté le 05-12-2005 à 09:53:25    

bon j'ai ré essayé avec les `` et ça marche :) Merci pour vos conseils ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed