Tableau trie avec clause WHERE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tableau trie avec clause WHERE

Re: Tableau trie avec clause WHERE

par moogli » 28 juil. 2013, 12:31

salut,


en dehors du fait que tu a créé une faille de sécurité en rendant ton code sensible aux injection SQL je pense que tu ne peux pas faire grand chose.

tu peux simplement imaginer une construction dynamique de la clause where et ensuite de l'ajouter à la requête.

cela ne devrait pas représenter 100 lignes de codes mêmes avec 10 conditions

@+

Tableau trie avec clause WHERE

par Duck806 » 27 juil. 2013, 18:06

Bonjour,
J'ai un problème avec mon code qui a pour but de trié via la clause WHERE mon tableau grâce a des critères soit différent soit successif.
En somme, mes requêtes fonctionne bien, mais à terme si je souhaite rajouter 3 ou 4 critères de plus cela deviendrais très vite un code avec des centaines de lignes.
Je souhaiterai trouver une solutions pour avoir un code plus logique qui me permettrai de trier avec ma clause WHERE un ou plusieurs critères soit différent soit successif sans passer par des requêtes avec des centaines de lignes..

Cette requête signifie que mon tableau comporte tous mes membres
if (isset($_GET['page']) AND !empty($_GET['page']))
{
 
$requete_classement = $bdd->prepare("SELECT f.id f_id,
f.username f_username,
c.id_designer c_id_designer,
f.moyenne f_moyenne
FROM forum_users f
LEFT JOIN user_detail c
ON f.id = c.id_designer
ORDER BY f.moyenne DESC
LIMIT :nombre_un, :nombre_deux");
$requete_classement->bindValue('nombre_un', ($_GET['page'] - 1) * $NombreDeMembresParPage, PDO::PARAM_INT);
$requete_classement->bindValue('nombre_deux', $NombreDeMembresParPage, PDO::PARAM_INT);
$requete_classement->execute();
}
Cette requete signifie que mon tableau comporte tous mes membres selon le type
if (isset($_GET['page']) AND !empty($_GET['page']) OR isset($_GET['type']) AND !empty($_GET['type']))
{
 
$requete_classement = $bdd->prepare("SELECT f.id f_id,
f.username f_username,
c.id_designer c_id_designer,
f.moyenne f_moyenne,
c.cat_".$_GET['type']." c_cat_".$_GET['type']."
FROM forum_users f
LEFT JOIN user_detail c
ON f.id = c.id_designer
WHERE c.cat_".$_GET['type']." > '0'
ORDER BY f.moyenne DESC
LIMIT :nombre_un, :nombre_deux");
$requete_classement->bindValue('nombre_un', ($_GET['page'] - 1) * $NombreDeMembresParPage, PDO::PARAM_INT);
$requete_classement->bindValue('nombre_deux', $NombreDeMembresParPage, PDO::PARAM_INT);
$requete_classement->execute();
}

while($classement = $requete_classement->fetch())
{ 
 
...


}
$requete_classement->closeCursor();
Voila j'ai vraiment essayer d'expliquer clairement la situation, je ne suis pas très doué dans ce domaine, si vous avez une explications pouvez vous simplifier au maximum :lol:


Cordialement.