Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
604 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Php/Sql] Problème Order By

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Php/Sql] Problème Order By

n°2073217
MonTheDim
Posté le 02-05-2011 à 11:39:52  profilanswer
 

Bonjour a vous tous :)
 
Je code actuellement un site ou un professionnel peut venir ajouter une pub,jusque la pas de soucis sauf que dans mon administration je voudrais afficher un tableau avec toutes les pubs enregistrés dans la BD et les pubs serait triés selon des critères choisis par l'admin le problème c'est que le trie (ORDER BY) ne fonctionne pas  
 
Voila les parties du code concernés :
 
Class Pub:

Code :
  1. class pub{
  2. public $id,$id_pro,$nom,$prixclick,$dimension,$lienimg,$nb_affichage,$nb_click,$lienurl,$id_domaine,$date_creation,$date_activation,$date_fin,$active;
  3. public function __construct($n,$idp,$d,$p,$l,$nba,$nbc,$url,$iddom,$dc,$da,$df,$a=false,$i=false){
  4.  $this->id=$i;
  5.  $this->id_pro=$idp;
  6.  $this->nom=$n;
  7.  $this->prixclick=$p;
  8.  $this->dimension=$d;
  9.  $this->active=$a;
  10.  $this->lienimg=$l;
  11.  $this->nb_affichage=$nba;
  12.  $this->nb_click=$nbc;
  13.  $this->lienurl=$url;
  14.  $this->id_domaine=$iddom;
  15.  $this->date_creation=$dc;
  16.  $this->date_activation=$da;
  17.  $this->date_fin=$df;
  18. }
  19. public function save(){
  20.  if($this->id==false){
  21.   $sql = "INSERT INTO pub VALUES (NULL,'$this->nom','$this->id_pro','$this->dimension','$this->prixclick','$this->lienimg','$this->nb_affichage','$this->nb_click','$this->lienurl','$this->id_domaine','$this->date_creation','$this->date_activation','$this->date_fin','$this->active')";
  22.   mysql_query($sql);
  23.   $this->id = mysql_insert_id();
  24.  }
  25.  else{
  26.   $sql= "UPDATE pub SET id_pro='$this->id_pro',nom='$this->nom',prix='$this->prixclick',dimension='$this->dimension',lienimg='$this->lienimg',nb_affichage='$this->nb_affichage',nb_click='$this->nb_click',lienurl='$this->lienurl',id_domaine='$this->id_domaine',date_creation='$this->date_creation',date_validation='$this->date_activation',date_fin='$this->date_fin',active='$this->active' WHERE id='$this->id'";
  27.   mysql_query($sql);
  28.  }
  29. }
  30. ...
  31. }


 
class PubTable:

Code :
  1. <?php
  2. class PubTable{
  3.  public static function getAlltrie($order) {
  4.  $sql="Select * from pub order by '$order'";
  5.  echo $sql;
  6.  $res = mysql_query($sql);
  7.  $toto = array();
  8.  while($line=mysql_fetch_array($res)){
  9.   $toto[] =  new pub($line['nom'],$line['id_pro'],$line['dimension'],$line['prix'],$line['lienimg'],$line['nb_affichage'],$line['nb_click'],$line['lienurl'],$line['id_domaine'],$line['date_creation'],$line['date_validation'],$line['date_fin'],$line['active'],$line['id']);
  10.  }
  11.  return $toto;
  12. }
  13. }
  14. ?>


 
Appel de la fonction
 
 

Code :
  1. $res=PubTable::getAlltrie($order);


 
J'ai fait tout les echo possible et le $order est bien valide que ce soit ici (admin.php) ou dans la class PubTable.class.php
 
Voila je ne sais pas du tout pour quoi ca ne marche pas :/  
 
 

mood
Publicité
Posté le 02-05-2011 à 11:39:52  profilanswer
 

n°2073225
olivthill
Posté le 02-05-2011 à 11:52:18  profilanswer
 

Habituellement, il est recommandé d'éviter les select * et les remplacer par des select en précisant le nom de chaque colonne dans le select, surtout si après on utilise un nom de colonne dans un order ou un group by.

n°2073242
esox_ch
Posté le 02-05-2011 à 13:03:12  profilanswer
 

- Quel est le résultat de ton echo $sql?
- On évite en général de mélanger français et anglais ( getAlltrie )
- Essaie de respecter les standards de mise en majuscule (getAllTrie)
- Arrête d'utiliser mysql_query + requête écrite en dûr et passe plutôt par DBO et les prepared statements.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2073252
MonTheDim
Posté le 02-05-2011 à 13:48:54  profilanswer
 

Mon echo de $sql avec par exemple $order=nom: Select * from pub order by 'nom'
 
 
Edit:problème résolue !  
 
En fait il fallait juste enlevé les simple quote autour du $order dans la variable $sql de la fonction getAlltrie()


Message édité par MonTheDim le 02-05-2011 à 14:06:36

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Php/Sql] Problème Order By

 

Sujets relatifs
Order by sur un champ taille avec des KB, MB, etcProbleme avec cscript
Probléme avec jacarta tomcat 5.0 sous eclipse helios(résolu) Protection de données d'un repertoire, probleme de loading
[PHP] Utiliser 2 requêtes SQL dans 1 boucle ?Problem de Filtre en SQL
Probleme en Programmation C :(probleme avec javadoc
(CSS) Problème avec sélecteurs d'attributs sur IEPHP SQL probleme ORDER BY , GROUP BY...
Plus de sujets relatifs à : [Php/Sql] Problème Order By


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR