[RESOLU] REQUETE SQL AVEC ID ET ORDER

REQUETE SQL AVEC ID ET ORDER [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 17-02-2014 à 15:47:26    

Bonjour,
 
je voudrai faire un ORDER BY après une récupération de l'ID en GET voici mon exemple...
 
Mon GET:
 
<?php $id=$_GET['RUBRIQUE'];?>
 
Ma requete:
<?
$reponse = mysql_query ("SELECT * FROM $base WHERE RUBRIQUE=".$id);
while ($donnees = mysql_fetch_array ($reponse))
{
?>
 
J'ai essayé de mettre mon ORDER BY à la suite, mais ma récupération de GET ne fonctionne pas.
Merci pour votre aide.
Cordialement


Message édité par hogz le 19-02-2014 à 15:20:57
Reply

Marsh Posté le 17-02-2014 à 15:47:26   

Reply

Marsh Posté le 18-02-2014 à 10:26:14    

C'est normal "RUBRIQUE" écrit en majuscule dans ton $_GET :??: T'as vraiment une url du genre http://monsite.fr/index.php?RUBRIQUE=5  ???
T'as conscience que le "RUBRIQUE" du GET n'a rien à voir avec celui en base...
 
Par ailleurs, si tu fais un where rubrique = $id, si ton ID est unique, je vois pas à quoi va te servir le order by :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-02-2014 à 07:41:44    

Merci pour ta réponse...
Un ID est unique OUI et NON...
Exemple, si dans ta requête SQL tu demande "L'equipe de foot numéro "40", ton $_GET de RUBRIQUE sera "40" mais ton ARRAY sera 11 noms (tous les joueurs de la colonne RUBRIQUE appelé par le $_GET) mais bien sûr je voudrais classer ces joueurs, donc interviendrait ma demande sur l'ORDER BY.
Pour l'instant cette requête marche, simplement je voudrait ordonner un classement. Derrière ".$id pour l'instant je ne trouve pas la solution...


Message édité par hogz le 19-02-2014 à 08:23:12
Reply

Marsh Posté le 19-02-2014 à 08:44:57    

Normalement c'est tout simplement  
 
$reponse = mysql_query ("SELECT * FROM $base WHERE RUBRIQUE=".$id." ORDER BY nom");  
 
Faudra que tu adaptes en utilisant la bonne colonne, pas sûr que ce soit "nom" dans ton cas

Reply

Marsh Posté le 19-02-2014 à 09:01:41    

OK merci c'est ça...
Bonne journnée...

Reply

Marsh Posté le 19-02-2014 à 09:30:21    

Par contre c'est pour faire un site en ligne que tu vas utiliser ça ?
 
Parce que là la SQL injection est hyper simple à faire avec ce code. Si tu connais pas : http://fr.wikipedia.org/wiki/Injection_SQL

Reply

Marsh Posté le 19-02-2014 à 10:50:06    

Non pas du tout...cette partie est inaccessible sauf à celui qui a des codes restreints. Mais merci pour le lien je vais voir ça.

Reply

Marsh Posté le 19-02-2014 à 11:01:17    

Ok fais gaffe parce que même en interne tu dois être conscient de cet aspect et adapter ton code pour l'empêcher

Reply

Marsh Posté le 21-02-2014 à 08:35:52    

je viens de lire ces posts... et j'ai une question style, le php pour les nuls :)...
Les instructions SQL sont keysensitves en PhP ?
 
$reponse = mysql_query ("SELECT * FROM $base WHERE RUBRIQUE=".$id);  
<>
$reponse = mysql_query ("SELECT * FROM $base WHERE rubrique=".$id);  
?

Reply

Marsh Posté le 21-02-2014 à 08:55:51    

En fait ta question est plus au niveau de mySQL. Et la réponse est non, tu peux l'écrire en majuscules ou non.

Reply

Marsh Posté le 21-02-2014 à 08:55:51   

Reply

Marsh Posté le 21-02-2014 à 14:37:00    

Je ne comprends pas alors ce que dis alors Rufo...
(c'est pas bien grave, lol, car c'était vraiement une question de béautien ...)

Reply

Marsh Posté le 21-02-2014 à 15:01:48    

Ce que je voulais dire, c'est que le "RUBRIQUE" qui est écrit dans la variable $_GET['RUBRIQUE'] n'a rien à voir, du point de vue des variables en mémoire ou en base avec le "RUBRIQUE" (champ d'une table en base) qui est écrit dans ta requête SQL.
 
En résumé, c'est pas parce que tu as un champ en base nommé "RUBRIQUE" et que tu veux utiliser dans une requête SQL que le nom de la variable dans $_GET doit porter le même nom.
 
Tu peux faire :
$id = $_GET['Toto'];
$reponse = mysql_query("SELECT * FROM $base WHERE RUBRIQUE = $id" );
 
Ca veut dire que l'url du script sera du genre http://siteweb/script.php?Toto=5
 
C'est plus clair ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-02-2014 à 15:28:27    

okok :)  
Oui, je comprends ... merci :).
l'instruction $_GET['XXXX'] : te permet de te connecter (on va simplifier...)
et vu que tu es connecté après:  
tu fais une requete sql avec le mysql_query ("Chaines de caractères = requête SQL" ).
Si c'est ça: il faut juste que hogz concatene correctement son "order by SON_CHAMP" à la 1er partie de sa requête, non?
 
Encore une petite question est ce que $base est le nom de la table ou une variable? (ou est-ce que je vais acheter un bouquin sur le php? :D)
 

Reply

Marsh Posté le 21-02-2014 à 16:01:13    

Pas du tout. $_GET comme $_POST permet de récupérer une ou plusieurs données provenant d'un formulaire posté avec la méthode "get" ou "post".
 
En "get", les valeurs des champs du formulaire sont transmises dans l'url du script chargé de traiter le formulaire, d'où une url de la forme mentionnée précédemment : http://siteweb/script.php?champ1=T [...] amp2=25...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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