Selection Tailles (simplifié) SQL [RESOLU]

Selection Tailles (simplifié) SQL [RESOLU] - PHP - Programmation

Marsh Posté le 10-11-2008 à 18:49:42    

Bonsoir je viens vous demander votre aide pour simplifier mon code,
 
J'ai créé un script pour afficher seulement les tailles disponibles (ex: si la taille "xl" = 0 alors on ne l'affiche pas  et vis versa si la taille=1 ou autre que '0')
 

Code :
  1. //on verifie si  il ya au moins une taille de dispo  
  2. if (($xs == '0' ) AND ($s == '0') AND ($m == '0' ) AND ($l == '0' ) AND ($xl == '0' ) AND ($xxl == '0' ) AND ($xxxl == '0' )) {
  3. //si pas de taille dispo on affiche rien
  4. }
  5. else {
  6. //sinon on affiche le menu deroulant
  7. ?>
  8.              Taille <select name="shirt" id="shirt">
  9.                 <option value="" selected>--</option>
  10.    
  11.    
  12.     <?php
  13. //SI $xs est different de  zero ALORS on affiche l'option XS
  14.     if($xs != '0' ) {
  15.     ?>
  16.     <option value="xs">XS</option>
  17. <?php
  18.                  }
  19.     ?>
  20.                       <?php
  21.     if($s != '0' ) {
  22.     ?>
  23.     <option value="s">S</option>
  24.     <?php
  25.                  }
  26.     ?>
  27.                       <?php
  28.     if($m != '0' ) {
  29.     ?>
  30.     <option value="m">M</option>
  31.     <?php
  32.                  }
  33.     ?>
  34.                       <?php
  35.     if($l != '0' ) {
  36.     ?>
  37.     <option value="l">L</option>
  38.     <?php
  39.                  }
  40.     ?>
  41.                
  42.                       <?php
  43.     if($xl != '0' ) {
  44.     ?>
  45.     <option value="xl">XL</option>
  46.     <?php
  47.                  }
  48.     ?>
  49.                
  50.                       <?php
  51.     if($xxl != '0' ) {
  52.     ?>
  53.     <option value="xxl">XXL</option>
  54.     <?php
  55.                  }
  56.     ?>
  57.                
  58.                       <?php
  59.     if($xxxl != '0' ) {
  60.     ?>
  61.     <option value="xxxl">XXXL</option>
  62.     <?php
  63.                  }
  64.      
  65. ?> 
  66.    </select>
  67.                
  68. <?php             
  69. } // fin else


 
 
Comment simplifier tout ça ? n'y a t il pas une fonction  ? et le pire c'est que mon code ne marche même pas comme ça :/
 
EDIT: mon code marche now (sétait une erreur dans la requete sql mais jaimerais toujours pouvoir simplifié mon code)


Message édité par skog le 10-11-2008 à 23:34:18
Reply

Marsh Posté le 10-11-2008 à 18:49:42   

Reply

Marsh Posté le 10-11-2008 à 18:54:49    

comment tu initialise $s, $xl , ?
si c'est une requete, est ce que tu ne peux pas filtrer directement dnas la requete ?


Message édité par flo850 le 10-11-2008 à 18:54:56

---------------

Reply

Marsh Posté le 10-11-2008 à 19:00:29    

Voici ma requete sql (et je colle tout le code pour que vous compreniez mieux )
 
En gros j'utilise une boucle  pour afficher mes produits avec une selection de taille pour chacun d'eux.
 

Code :
  1. require ($_SERVER["DOCUMENT_ROOT"].'/sql/includes/config.inc.php');
  2.   mysql_connect($host, $username, $password);
  3.   mysql_select_db($bdd_name);
  4.    $query2="SELECT * FROM `$stab` ";
  5.    $result2=mysql_query($query2);
  6.      while ($tableau_prod=mysql_fetch_array($result2)) {
  7.       $idprod=htmlspecialchars($tableau_prod["idprod"]);
  8.       $titleprod=htmlspecialchars($tableau_prod["titleprod"]);
  9.       $img=htmlspecialchars($tableau_prod["img"]);
  10.       $refprod=htmlspecialchars($tableau_prod["refprod"]);
  11.       $xs=htmlspecialchars($tableau_prod["xs"]);
  12.       $s=htmlspecialchars($tableau_prod["s"]);
  13.       $m=htmlspecialchars($tableau_prod["m"]);
  14.       $l=htmlspecialchars($tableau_prod["l"]);
  15.       $xl=htmlspecialchars($tableau_prod["xl"]);
  16.       $xxl=htmlspecialchars($tableau_prod["xxl"]);
  17.       $xxxl=htmlspecialchars($tableau_prod["xxxl"]);
  18. <?php echo($titleprod); ?>
  19.     <br />
  20.     <img src="http://s219158312.onlinehome.fr/photos/<?php echo($img);  ?>" />
  21. //on verifie si  il ya au moins une taille de dispo  
  22. if (($xs == '0' ) AND ($s == '0') AND ($m == '0' ) AND ($l == '0' ) AND ($xl == '0' ) AND ($xxl == '0' ) AND ($xxxl == '0' )) {
  23. //si pas de taille dispo on affiche rien
  24. }
  25. else {
  26. //sinon on affiche le menu deroulant
  27. ?>
  28.              Taille <select name="shirt" id="shirt">
  29.                 <option value="" selected>--</option>
  30.    
  31.    
  32.     <?php
  33. //SI $xs est different de  zero ALORS on affiche l'option XS
  34.     if($xs != '0' ) {
  35.     ?>
  36.     <option value="xs">XS</option>
  37. <?php
  38.                  }
  39.     ?>
  40.                       <?php
  41.     if($s != '0' ) {
  42.     ?>
  43.     <option value="s">S</option>
  44.     <?php
  45.                  }
  46.     ?>
  47.                       <?php
  48.     if($m != '0' ) {
  49.     ?>
  50.     <option value="m">M</option>
  51.     <?php
  52.                  }
  53.     ?>
  54.                       <?php
  55.     if($l != '0' ) {
  56.     ?>
  57.     <option value="l">L</option>
  58.     <?php
  59.                  }
  60.     ?>
  61.                
  62.                       <?php
  63.     if($xl != '0' ) {
  64.     ?>
  65.     <option value="xl">XL</option>
  66.     <?php
  67.                  }
  68.     ?>
  69.                
  70.                       <?php
  71.     if($xxl != '0' ) {
  72.     ?>
  73.     <option value="xxl">XXL</option>
  74.     <?php
  75.                  }
  76.     ?>
  77.                
  78.                       <?php
  79.     if($xxxl != '0' ) {
  80.     ?>
  81.     <option value="xxxl">XXXL</option>
  82.     <?php
  83.                  }
  84.      
  85. ?> 
  86.    </select>
  87.                
  88. <?php             
  89. } // fin else
  90. } FIN BOUCLE DU WHILE SQL


Message édité par skog le 10-11-2008 à 19:01:24
Reply

Marsh Posté le 10-11-2008 à 19:03:32    

EDIT: mon code marche now (s'était une erreur dans la requete sql mais j'aimerais toujours pouvoir simplifié mon code)

 

(j'avais pas appelé le tableau des tailles pareil que celui de img idprod titleprod et ref :)

 

Et pour répondre à ta question je pense pas que je puisse filtrer avec un where vu que chaque ligne contient tous les champs listés dans ma while:

 

                               

Code :
  1. $idprod=htmlspecialchars($tableau_prod["idprod"]);
  2.       $titleprod=htmlspecialchars($tableau_prod["titleprod"]);
  3.       $img=htmlspecialchars($tableau_prod["img"]);
  4.       $refprod=htmlspecialchars($tableau_prod["refprod"]);
  5.       $xs=htmlspecialchars($tableau_prod["xs"]);
  6.       $s=htmlspecialchars($tableau_prod["s"]);
  7.       $m=htmlspecialchars($tableau_prod["m"]);
  8.       $l=htmlspecialchars($tableau_prod["l"]);
  9.       $xl=htmlspecialchars($tableau_prod["xl"]);
  10.       $xxl=htmlspecialchars($tableau_prod["xxl"]);
  11.       $xxxl=htmlspecialchars($tableau_prod["xxxl"]);
  

à moins qu'il y ait une fonction sql pour trier les 0 des 1  tout en affichant quand meme la ligne pour le titre l'image du produit ect

 

La solution serait de choisir tous les champs qui ne sont pas égaux a 0 sur chaque ligne de ma table ! non ?

 

Mais comment faire une telle fonction ? on ne peux pas juste utiliser un where sinon il n'afficherait carement aps les lignes qui sont égales a 0 et donc ces produits ne seraient pas affichés , moi je veux juste pas afficher les tailles qui sont égales à 0


Message édité par skog le 10-11-2008 à 19:16:07
Reply

Marsh Posté le 10-11-2008 à 19:16:57    

le problème vients de la structure de ta table  
 
que ce passe t il le jour ou tu veux vendre des produit taille enfant ? tu ajoutes une colonne ? c'est pas top  
 
tu aurai pu faire quelque chose comme ca :
 
une taille produit  ( idProduit, ref, libelle, image, ... )  
une table stock ( idProduit, taille , stock )  
 
et ta requete t'aurai permit de filtrer directement. Ca simplifie aussi les requetes ou tu devra compter faire des  totaux  


---------------

Reply

Marsh Posté le 10-11-2008 à 19:25:11    

un truc du genre :  
 

Code :
  1. $query2="SELECT * FROM `$stab` ";
  2. $result2=mysql_query($query2);
  3. If (mysql_num_rows($result2)==''):
  4. echo 'aucuns enregistrements';
  5. else:
  6. while ($tableau_prod=mysql_fetch_array($result2)) {
  7.        $idprod=htmlspecialchars($tableau_prod["idprod"]);
  8.        $titleprod=htmlspecialchars($tableau_prod["titleprod"]);
  9.        $img=htmlspecialchars($tableau_prod["img"]);
  10.        $refprod=htmlspecialchars($tableau_prod["refprod"]);
  11.        $xs=htmlspecialchars($tableau_prod["xs"]);
  12.        $s=htmlspecialchars($tableau_prod["s"]);
  13.        $m=htmlspecialchars($tableau_prod["m"]);
  14.        $l=htmlspecialchars($tableau_prod["l"]);
  15.        $xl=htmlspecialchars($tableau_prod["xl"]);
  16.        $xxl=htmlspecialchars($tableau_prod["xxl"]);
  17.         $xxxl=htmlspecialchars($tableau_prod["xxxl"]);
  18. [...]
  19. endif;


 
tu as essayé?ca marche?ca marche pas?


---------------
C'est lorsqu'on a tout perdu qu'on est libre de faire tout ce que l'on veut...(Edward Norton, Fight Club)
Reply

Marsh Posté le 10-11-2008 à 20:36:12    

Merci ca marche comme je veux ! :)
 
sinon autre chose pendant que j'y suis: dites moi pourquoi ceci ne marche pas :
 
 

Code :
  1. <img src="<?php ($_SERVER["DOCUMENT_ROOT"].'/photos/".$img ."') ?>" />


 
 
Ca ne viens pas de ma bdd vu qu'il m'affiche bien mon image si je met l'adresse de mon serveur:
     
       

Code :
  1. <img src="http://mon.serveur.com/photos/<?php echo($img);  ?>" />


 

Reply

Marsh Posté le 10-11-2008 à 21:00:29    

tu as oubliéer un echo  
<img src="<?php echo ($_SERVER["DOCUMENT_ROOT"].'/photos/".$img ."') ?>" />


---------------

Reply

Marsh Posté le 10-11-2008 à 21:06:21    

haha merci jfais souvent des  ptites fautes que je captes jamais parce que je cherche des plus grosses xD
 
Merci à tous pour votre aide

Reply

Marsh Posté le 10-11-2008 à 21:06:24    

skog a écrit :

Merci ca marche comme je veux ! :)


de rien, si c'est résolu indique le =)


---------------
C'est lorsqu'on a tout perdu qu'on est libre de faire tout ce que l'on veut...(Edward Norton, Fight Club)
Reply

Sujets relatifs:

Leave a Replay

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