Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

[PHP/MySQL]Recuperer des données

Discussion dans 'Développement web' créé par dmo95, 29 Novembre 2008.

Modérateurs: Nephou
  1. dmo95

    dmo95 Membre émérite

    Inscrit:
    24 Mai 2007
    Messages:
    584
    J'aime reçus:
    14
    Bonsoir à tous,

    Je sollicite une fois de plus la communauté des développeurs Mac (ou pas ?!), pour m'aider dans ma démarche, afin d'initialiser un tableau clé=>valeurs correctement à partir de données.

    Je récupère les données de la façon suivante :

    Code (Text):
    function load_marques(){
            $connection = connect_db();
           
            $sql_query = "SELECT DISTINCT `marque`, `cat` FROM `articles`;";
            $reponse = mysql_query($sql_query);
           
            $i=0;
       
            while($donnees = mysql_fetch_array($reponse))    //traitement dans une liste
            {
                $shop[$i]=array(
                    'marque'=>$donnees['marque'],
                    'cat'=>$donnees['cat'],
                );
                $i++;
            }
           
            close_db();
           
            return $shop;
        }
     
    Ce qui me donne un tableau avec la structure suivante :

    Code (Text):
    Array (
            [0] => Array         (
                     [marque] => Smalto            
                     [cat] => Costume         )      
            [1] => Array         (
                     [marque] => Hugo Boss
                     [cat] => Chemise         )      
            [2] => Array         (
                     [marque] => Smalto            
                     [cat] => Chemise         )      
            [3] => Array         (            
                     [marque] => Smalto            
                     [cat] => Pantalon         )
            [4] => Array         (
                     [marque] => Hugo Boss
                     [cat] => Pantalon         )
            [5] => Array         (
                     [marque] => Hugo Boss            
                     [cat] => Costume         )
    )
    Or j'aimerais avoir un tableau qui se présente de la manière suivante pour pouvoir travailler plus facilmement avec les clés/valeurs:

    Code (Text):
    $shop = array(
            'smalto'=> array('costume','chemise', 'pantalons'),
            'hugo boss'=> array('costume', 'polo', 'accessoire')
        );
    Il faut donc changer mon premier bloc dans lequel j'initialise le tableau $shop...

    Ne comprenant déjà pas trop bien le système de la boucle, avec la fonction mysql_fetch_array, je sollicite vos connaissances et votre savoir pour m'orrienter vers la solution !!

    Merci bien
     
  2. dmo95

    dmo95 Membre émérite

    Inscrit:
    24 Mai 2007
    Messages:
    584
    J'aime reçus:
    14
    Un peu technique, et surtout un peu lourd de s'immerger dans mon code, mais je pense que c'est très simple pour quelqu'un qui touche un peu sa bille !!

    Sinon il me reste la solution d'initialiser mon tableau avec un petit algo, auquel cas je perd en performance de chargement ! Ce n'est pas la bonne solution...

    Up svp ;)
     
  3. p4bl0

    p4bl0 Membre d’élite
    Club MacG

    Inscrit:
    12 Juillet 2004
    Messages:
    4 772
    J'aime reçus:
    425
    J'vois pas trop comment faire à part un truc du genre :

    Code (Text):
    // $data est le résultat mysql
    $shop = array();
    while ($d = mysql_fetch_array($data)) {
      if (array_key_exists($d['marque'], $shop)) $shop[$d['marque']][] = $d['cat'];
      else $shop[$d['marque']] = array($d['cat']);
    }
     
  4. Gz'

    Gz' Membre émérite

    Inscrit:
    29 Mai 2007
    Messages:
    761
    J'aime reçus:
    45
    Methode crade :

    Code (Text):

    function load_marques(){
            $connection = connect_db();
           
            $sql_query = "SELECT DISTINCT `marque` FROM `articles`;";
            $reponse = mysql_query($sql_query);
           
            $i=0;
       
            while($donnees = mysql_fetch_array($reponse))    //traitement dans une liste
            {
                $marque = $donnees['marque'];
                $sql2 = "SELECT * FROM 'articles' WHERE marque  = '.$marque;
                $res2 = mysql_query($sql2);
                $j = 0;
                while($row = mysql_fetch_array($res2)){
                   $shop[$marque][$j] = $row['cat'];
                   $j++;
                }
            }
           
            close_db();
           
            return $shop;
        }

     
    Ca donne un truc comme ça fait très rapidement, c'est pas super propre mais dans le principe, ça marche. A mons avis, avec une seule requête sql bien placée, c'est faisable, mais il est tard et j'ai la flemme.
     
  5. p4bl0

    p4bl0 Membre d’élite
    Club MacG

    Inscrit:
    12 Juillet 2004
    Messages:
    4 772
    J'aime reçus:
    425
    :afraid: !
     
  6. dmo95

    dmo95 Membre émérite

    Inscrit:
    24 Mai 2007
    Messages:
    584
    J'aime reçus:
    14
    Ok merci, je vais tester vos deux solutions et je vous tiens au courant ;)

    Edit : Bon et bien je viens de tester les quelques ligne de p4ablo et cela m'organise mon tableau comme je voulais, c'est parfait !!!

    Cela va me permettre d'automatiser l'affichage de mon site en fonction des marques disponibles, ainsi que de leurs types d'articles.
     
  7. p4bl0

    p4bl0 Membre d’élite
    Club MacG

    Inscrit:
    12 Juillet 2004
    Messages:
    4 772
    J'aime reçus:
    425
    C'est qui çuilà ? :D
    ;)
     
  8. Gz'

    Gz' Membre émérite

    Inscrit:
    29 Mai 2007
    Messages:
    761
    J'aime reçus:
    45
    J'ai bien dis que c'était crade.
     
  9. dmo95

    dmo95 Membre émérite

    Inscrit:
    24 Mai 2007
    Messages:
    584
    J'aime reçus:
    14
    Peut être qu'elle marche ta technique Gz mais j'ai pas tester, j'ai opté pour les quelques lignes synthétiques de p4blo héhé ^^

    J'ai un autre soucis maintenant, qui n'est ni plus ni moins que de l'affichage !?!? Mais cela me rend dingue le CSS entre IE et FF j'ai rarement optimisé pour IE donc j'avoue avoir quelques difficultés !! Alors que le W3C me dit que c'est OK :p

    Donc voilà j'ai un menu sous forme de liste (là ou il y a les marques) et mon conteneur qui est juste en dessous. Les éléments de la liste ont une image (en png, on passe les problèmes de transparence !!! ^^), et cette image à une certaine taille qui apparament pose problème, sous IE.

    Code HTML :
    Code (Text):
    <ul class="navigation">
                    <li><a href="#boss"><span>Hugo Boss</span></a></li>
                    <li><a href="#smalto"><span>Smalto</span></a></li>
                    <li><a href="#arthur"><span>Vicompte Arthur</span></a></li>
                    <li><a href="#marina"><span>La Martina</span></a></li>
                    <li><a href="#acces"><span>Acc&egrave;s</span></a></li>
                </ul>
    Code CSS :
    Code (Text):
        #page .navigation{
            padding:0 0 0 20px;
            height:50px;
            background:url(images/page_navigation_bg.png) center top no-repeat;
        }
       
        #page .navigation .center{
            margin : auto;
        }
       
        #page .navigation li{
            height:50px;
            float:left;
            padding:0 2px 0 0;
            z-index : 0;
        }
       
        #page .navigation a{
            display:block;
            height:70px;
            line-height:50px;
            float:left;
            padding:0 13px 0 0;
            /*margin-left : 2px;*/
            font-size:13px;
            color:#FFF;
            font-weight:bold;
        }
            #page .navigation a:hover,
            #page .navigation a.selected{
                color:#000;
                background:url(images/page_navigation_a.png) right top no-repeat;
            }
        #page .navigation a span{
            display:block;
            height:70px;
            float:left;
            padding : 0 7px 0 20px;
        }
        #page .navigation a:hover span,
        #page .navigation a.selected span{
                background:url(images/page_navigation_span.png) left top no-repeat;        }
    Site pour que vous aillez une meilleure idée : http://starlight95.free.fr/mathieu

    Par ailleurs, je souhaiterais centrer le menu (la liste) automatiquement ca la taille est variable selon la page principale dans laquelle vous vous trouvez. Or j'ai essayé le margin auto dans tous les blocs css rien y fait... Et aussi de mettre la classe center dans ma liste (<ul class="center")...

    Je laisse un background-color pour que vous vous rendez bien compte des deux comportements, sachant que le comportement souhaité et bien évidemment celui de FF.

    PS : Je n'ai pas réouvert de topic, même ci le sujet dérive un peu du titre principale...
     
Modérateurs: Nephou
Chargement...

iOccasion - Achetez un produit Apple d'occasion

refurb Apple