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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Votre avis sur ma requete

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Votre avis sur ma requete

n°1535689
lilougirl8
Posté le 29-03-2007 à 11:16:36  profilanswer
 

Bonjour,  
 
Je voudrais savoir si je n'ai pas fais trop d'erreurs sur ma requete... je precise que tout fonctionne à laffichage, j'aimerai m'assurer que la requete est bonne...Puis si vous voyez des problemes de sécurité se serait sympa de m'expliquer à quoi vous le voyer... (je n'ai pas encore sécurisé mes pages je le ferai en dernier mais ça me fera gagner du temps et surtout ça me fera apprendre :d )
 

Code :
  1. /*=================== triage des résultats ==========================*/
  2. if(empty($limite)){ // Je définit à 0 la limite si elle n'existe pas (J'utilise une fonction pour limiter le nombre de page)
  3. $limite = 0;
  4. }
  5. if(!empty($_GET['type'])) { //Si la requete type  existe
  6. $type1=""; // Je définis tout d'abord mes variables à NULL
  7. $type2="";
  8. $requete = $_GET['type']; // je definis ma requete par la variable $requete
  9. $type = explode(",",$_GET['type']); //Je Met dans un tableau la requete Si il y en a plusieurs
  10. if(!empty($type)) { // Si mon tableau n'est pas vide Je test les 2 lignes (qui sont les seuls possiblitité par rapport à ma base
  11.  if (!empty($type[0])) {
  12.   if (($type[0] == "Transaction" ) OR $type[0] == "Location" ) {
  13.    $type1 = $type[0];
  14.    }
  15.   else {
  16.   $type1 = "Transaction"; //dans tous les cas je définit par défaut pour ma variable $type1 "TRANSACTION"
  17.   }
  18.  }
  19.  if (!empty($type[1])) {
  20.   if (($type[1] == "Transaction" ) OR $type[1] == "Location" ) {
  21.   $type2 = $type[1];
  22.    }
  23.   else {
  24.   $type2 = "Location"; //idem pour $type2
  25.   }
  26.  }
  27. }
  28. else { //Je défini par defaut mes varaibale si elle n'existe pas
  29. $requete="";
  30. $type="";
  31. $type1 = "Transaction";
  32. $type2 = "Location";
  33. }
  34. }
  35. else { //Je défini par defaut mes varaibale si elle n'existe pas
  36. $requete="";
  37. $type="";
  38. $type1 = "Transaction";
  39. $type2 = "Location";
  40. }
  41. if(!empty($_GET['type_bien'])) { //Jutilise la meme procédure que pour $type pour l'exploitation de la requete
  42.  $typebien1 = "";
  43.  $typebien2 = "";
  44.  $typebien3 = "";
  45.  $typebien4 = "";
  46.  $typebien5 = "";
  47.  $typebien6 = "";
  48. $requetebien = $_GET['type_bien'];
  49. $typebien = explode(",",$requetebien);
  50. if(!empty($typebien)) {
  51.  $i=1; //Je créer une variable $i défini a 1 qui me servira a incrémenter le nom de la variable automatiquement
  52.  foreach($typebien as $key => $value) { //Je boucle sur le tableau
  53.   if ($value != "Villa" AND $value != "Appartement" AND $value != "Maison de village" AND $value != "Terrain" AND $value != "Commerce" AND $value != "Cabanon" )  {
  54.    $erreur = true; //Je test les valeurs si elle ne commresponde pas je définit erreur a true
  55.   }
  56.   else { //Sinon je créer mes variables
  57.    ${"typebien".$i} = $value;
  58.    $i++;
  59.   }
  60.  }
  61. }
  62. else { //Je défini par defaut mes varaibale si elle n'existe pas
  63.  $requetebien="";
  64.  $typebien="";
  65.  $typebien1 = "Villa";
  66.  $typebien2 = "Maison de village";
  67.  $typebien3 = "Appartement";
  68.  $typebien4 = "Terrain";
  69.  $typebien5 = "Cabanon";
  70.  $typebien6 = "Commerce";
  71. }
  72. }
  73. else {//Je défini par defaut mes varaibale si elle n'existe pas
  74. $requetebien="";
  75. $typebien="";
  76. $typebien1 = "Villa";
  77. $typebien2 = "Maison de village";
  78. $typebien3 = "Appartement";
  79. $typebien4 = "Terrain";
  80. $typebien5 = "Cabanon";
  81. $typebien6 = "Commerce";
  82. }
  83. if(empty($_GET['tri'])) { // idem les autres cas
  84. $tri = "prix";
  85. }
  86. else {
  87. if($_GET['tri'] != "prix" AND $_GET['tri'] != "date_entree" AND $_GET['tri'] != "ville" AND $_GET['tri'] != "nombre_pieces" AND $_GET['tri'] != "surface_habitable" ){
  88.  $erreur = true;
  89.  }
  90. else {
  91. $tri = $_GET['tri'];
  92. }
  93. }
  94. /*==============================================================*/
  95. if ($erreur == true) { //Si erreur a true je renvoi vers une page d'erreur
  96.     include("./erreur_recherche.php" );
  97. }
  98. else { //sinon je continue...
  99. /*=============== Comptage du Nombre d'annonces ===================*/
  100. $compter = mysql_query("SELECT count(ID) FROM xxxxxxxx WHERE (type_affaire='".$type1."' OR type_affaire='".$type2."') AND (type_bien IN ('".$typebien1."','".$typebien2."','".$typebien3."','".$typebien4."','".$typebien5."','".$typebien6."')) " );
  101. $nb_annonce_total = mysql_fetch_row($compter);
  102. $total = $nb_annonce_total[0];
  103. /*============================================================== */
  104. $annonce = mysql_query("SELECT * FROM xxxx WHERE (type_affaire='".$type1."' OR type_affaire='".$type2."') AND (type_affaire='".$type1."' OR type_affaire='".$type2."') AND (type_bien IN ('".$typebien1."','".$typebien2."','".$typebien3."','".$typebien4."','".$typebien5."','".$typebien6."'))    ORDER BY $tri LIMIT $limite, $nb_annonce" ) or die("Erreur : Problème avec la requete annonce" );


Message édité par lilougirl8 le 29-03-2007 à 11:50:56
mood
Publicité
Posté le 29-03-2007 à 11:16:36  profilanswer
 

n°1535706
did-54
Posté le 29-03-2007 à 11:30:02  profilanswer
 

et si tu te limitais à 80 colonnes ? :o

n°1535714
MagicBuzz
Posté le 29-03-2007 à 11:38:07  profilanswer
 

- avec la requête seule
- avec un explicatif de ce que tu attends de la requête ?
 
ça donne quoi ?
 
je vois pas pourquoi on devrait me faire chier à lire 111 lignes de code non documenté, afin d'essayer d'imaginer ce que tu veux qu'il fasse.

n°1535715
lilougirl8
Posté le 29-03-2007 à 11:38:19  profilanswer
 

oops...désolé comment je fais ça? pour les 80 colonnes..  
 
Pis je vai rajouter les commentaires


Message édité par lilougirl8 le 29-03-2007 à 11:38:59
n°1535719
bpoujol
GT : bsms360
Posté le 29-03-2007 à 11:43:07  profilanswer
 

Juste survolé beaucoup de if...else
Peut etre y'a t'il moyen d'utilsier des elsif ou des switch ?


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
n°1535725
lilougirl8
Posté le 29-03-2007 à 11:51:30  profilanswer
 

j'ai editer... avec des commantaires!!
 
Pour les colonnes heu... lol dsl

n°1535738
bpoujol
GT : bsms360
Posté le 29-03-2007 à 12:01:27  profilanswer
 

// Je définis tout d'abord mes variables à NULL
 //Je défini par defaut mes varaibale si elle n'existe pas
 
Définit dés le départ à la valeur par défaut serait plus simple non?
Permettra de gagner bien des lignes.


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
n°1535745
lilougirl8
Posté le 29-03-2007 à 12:10:05  profilanswer
 

oui mai si je fais ça... si ma requete GET n'est par exemple que VILLA
les autres seront définit aussi... du coup aucun filtrage non?


Message édité par lilougirl8 le 29-03-2007 à 12:10:19
n°1536281
NewsletTux
<Insérez ici votre vie />
Posté le 30-03-2007 à 10:33:40  profilanswer
 

evite autant que faire se peut les "SELECT *", outre le danger potentiel que cela représente (pour toi, pas forcément, mais dans le cas de la lecture d'un profil, ça rapatrie le mot de passe et potentiellement d'autres données sensibles), ça surcharge surtout la requête si tu n'utilises pas tous les champs.
Et même si actuellement tu les utilises tous : il se peut dans dans XXX années que tu veuilles en ajouter d'autres dont tu n'auras pas besoin dans cet exemple précis, et cela illustre la surcharge de la réponse dont je parlais plus haut.
 
EDIT :  

Code :
  1. if(empty($limite)){ // Je définit à 0 la limite si elle n'existe pas (J'utilise une fonction pour limiter le nombre de page)
  2. $limite = 0;
  3. }


 
attention, empty veut dire 'vide', cela ne veut pas dire pour autant que la variable n'existe pas ...
si je met$limite = NULL; alors ma variable sera définie (donc elle existera) mais vide ...
j'écrirais plutôt :

Code :
  1. if(!isset($limite)) { // Je définit à 0 la limite si elle n'existe pas (J'utilise une fonction pour limiter le nombre de page)
  2. $limite = 0;
  3. }


Message édité par NewsletTux le 30-03-2007 à 10:37:27
n°1536362
lilougirl8
Posté le 30-03-2007 à 13:07:29  profilanswer
 

effiectivement c'été pas très juste j'ai corriger par la meme occasion mon test sur le tri c'est la meme chose !!  
Merci beaucoup pour tes conseils

mood
Publicité
Posté le 30-03-2007 à 13:07:29  profilanswer
 

n°1536403
NewsletTux
<Insérez ici votre vie />
Posté le 30-03-2007 à 14:10:30  profilanswer
 

je vois pas pourquoi tu as besoin de répéter en double ou triple certaines infos ...
 
C'est une lacune de PHP que je n'aime pas à savoir le manque de typage, si tu n'es pas rigoureux tu finis par faire n'importe quoi.


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

  [PHP] Votre avis sur ma requete

 

Sujets relatifs
[PHP] oscommerce - Login -> redirection et message d'accueil[PHP] Requete et SQL
[PHP] Soutraction dateMulti Requete Ajax
PHP traducteur de séquences d'ADNCherche Script php associé à une requete cron
requete sql et variableDébutant PHP,besoin d'aide
Lire des articles d'1 serveur sur 1 autre serveur?MSSQL& XML, PHP,.NET 
Plus de sujets relatifs à : [PHP] Votre avis sur ma requete


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