IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

trié un fetchAll avec les regex, je peux faire plus simple ? [ZF 1.11]


Sujet :

Zend Framework PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut trié un fetchAll avec les regex, je peux faire plus simple ?
    Bonjour, j'essaye de trier après un fetchAll(); j'ai réussi a faire ce que je voulais mais je ne sais pas si je peux faire plus simple.

    voici 2 tulpes de bas base de donnée je les obtiens avec ce script sur le controleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            $sql=$table_car->fetchAll();
            $this->view->voitures=$sql->toArray();
    sur la vue voici ce que ça donne avec un var_dump($this->voiture)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    array
      0 => 
        array
          'id' => string '1' (length=1)
          'nom' => string '106' (length=3)
          'prix' => string '15000' (length=5)
          'year' => string '2011' (length=4)
          'km' => string '23005' (length=5)
          'couleur' => string 'blue' (length=4)
          'meca' => string 'semi-automatique' (length=16)
          'nb_meca' => string '5' (length=1)
          'energie' => string 'solaire' (length=7)
          'fisco' => string '100' (length=3)
          'caros' => string 'berline' (length=7)
          'decrit' => string 'voiture ancienne' (length=16)
          'foto_show' => string 's1' (length=2)
          'mini1' => string 'm1' (length=2)
          'mini2' => string 'm2' (length=2)
          'mini3' => string 'm3' (length=2)
          'mini4' => string 'm4' (length=2)
          'big1' => string 'b1' (length=2)
          'big2' => string 'b2' (length=2)
          'big3' => string 'b3' (length=2)
          'big4' => string 'b4' (length=2)
      1 => 
        array
          'id' => string '2' (length=1)
          'nom' => string 'sariz' (length=5)
          'prix' => string '99000' (length=5)
          'year' => string '3000' (length=4)
          'km' => string '12201111' (length=8)
          'couleur' => string 'metal ' (length=6)
          'meca' => string 'atiomique' (length=9)
          'nb_meca' => string '5' (length=1)
          'energie' => string 'solaire' (length=7)
          'fisco' => string '0' (length=1)
          'caros' => string 'camion' (length=6)
          'decrit' => string 'derni�re technologique' (length=22)
          'foto_show' => string 's2' (length=2)
          'mini1' => string 'm5' (length=2)
          'mini2' => string 'm6' (length=2)
          'mini3' => string 'm7' (length=2)
          'mini4' => string 'm8' (length=2)
          'big1' => string 'b5' (length=2)
          'big2' => string 'b6' (length=2)
          'big3' => string 'b7' (length=2)
          'big4' => string 'b8' (length=2)
    mon but:

    d'afficher tous ce qu'il y a dans le premier tulpe 0,
    c'est une annonce de voiture par exemple, je mes des donnée sur le voiture en question et ensuite les photo, une fois le tuple fini, je passe a la suivante , ansi de suite, le poblème de fetchAll(), c'est que les données sont rangé par colonne et moi je veux par ligne

    j'ai donc décider de filter toute les image, toute les information dans un tableau selon sont type, si c'est une image elle ira dans $image[] si c'est une info dans $info[] etc ..

    voici ma vu qui trie les informations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    //var_dump($this->voitures);
    foreach($this->voitures as $tulpe)
    {
     
        foreach($tulpe as $key=>$resultat)
        {
            if(preg_match("#[^mini|^big|^show]#",$key))
            {
                $info[] = $resultat;
            }
            if(preg_match("#mini#",$key))
            {
               $image[]=$resultat;
            }
     
            if(preg_match("#big#",$key))
            {
                $imagebig[]=$resultat;
            }
     
            if(preg_match("#show#",$key))
            {
                     $imagefirst=$resulat;
            }
     
     
        }
    }
     
    var_dump($mini);
    ?>
    avant de commencer plus loin je souhaite savoir si je peux faire plus simple ??

    je ne sais pas si j'ai bien formulé ma question?

    je vous remercie de vos suggestions

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Je n'ai pas compris ton histoire de trie sur colonne et tri sur ligne, peux tu expliquer?

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    mon but serais d'afficher ceci avec une boucle foreach

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //-----------------------------------id=1-1er boucle-------------------------
    modèle: 106;
    kilometrage:1000km;
    prix:1000euro
     
    image_principal :<img href="image/s1.jpg">
    image miniuature:
    <a href="image/grosseimage1.jpg><img href="image/p1.jpg">
    <a href="image/grosseimage2.jpg><img href="image/p2.jpg">
    <a href="image/grosseimage3.jpg><img href="image/p3.jpg">
    <a href="image/grosseimage4.jpg><img href="image/p4.jpg">
     
    //-----------------------------------id=2-----2ème boucle---------------------
    modèle: 206;
    kilometrage:2000km;
    prix:1000euro
     
    image_principal :<img href="image/s1.jpg">
    image miniuature:
    <a href="image/grosseimage5.jpg><img href="image/p5.jpg">
    <a href="image/grosseimage6.jpg><img href="image/p6.jpg">
    <a href="image/grosseimage7.jpg><img href="image/p7.jpg">
    <a href="image/grosseimage8.jpg><img href="image/p8.jpg">
    c'est ca ce que je veux afficher, le problème c'est que avec un fetchAll je ne peux pas le faire puisqu'il va me sortire ceci si je fait une boucle foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    modèle: 106;
    modèle: 206;
    kilometrage:1000km;
    kilometrage:3000km;
    prix:1000euro
    prix:15500euro
    image_principal :<img href="image/s1.jpg">
    image_principal :<img href="image/s2.jpg">
    image miniuature:
    <a href="image/grosseimage1.jpg><img href="image/p1.jpg">
    <a href="image/grosseimage2.jpg><img href="image/p2.jpg">
    <a href="image/grosseimage3.jpg><img href="image/p3.jpg">
    <a href="image/grosseimage4.jpg><img href="image/p4.jpg">
    <a href="image/grosseimage5.jpg><img href="image/p5.jpg">
    <a href="image/grosseimage6.jpg><img href="image/p6.jpg">
    <a href="image/grosseimage7.jpg><img href="image/p7.jpg">
    <a href="image/grosseimage8.jpg><img href="image/p8.jpg">
    c'est ce que j'ai dans ma vu et ce que je souhaite c'est d'afficher fiche par fiche(le tuple1 on va dire toute les info sur la ligne id=1, puis le tulpe2 pourles info id=2 etch ...

    voici la vu c'est pas tous à fait les même nom par contre mais je corrigerai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    <div class="caracteristique">
     
        <p><a href="#">voitures</a></p>
        <table>
            <tr>
                <th>modèle</th>
                <th>prix</th>
                <th>Année</th>
                <th>kilometrage</th>
                <th>couleur</th>    
                <th>transmission mecanique</th>
                <th>carrosserie</th>       
                <th>enregie</th>
                <th>nombre de chevaux fiscaux</th>
                <th>description</th>
                <th>phto principal </th>
     
     
            </tr>
     
     
     
            <?php foreach ($this->voitures as $car) : ?>
                <tr>
                    <td><?php echo $this->escape($car->nom); ?></td>
                    <td><?php echo $this->escape($car->prix); ?></td>
                    <td><?php echo $this->escape($car->year); ?></td> 
                    <td><?php echo $this->escape($car->km); ?></td>
                    <td><?php echo $this->escape($car->couleur); ?></td>
                    <td><?php echo $this->escape($car->meca); ?></td>  
                    <td><?php echo $this->escape($car->caros); ?></td>
                    <td><?php echo $this->escape($car->energie); ?></td>
                    <td><?php echo $this->escape($car->fisco); ?></td>  
                    <td><?php echo $this->escape($car->decrit); ?></td>        
                </tr>
            <?php endforeach ?> 
    </div>
     
    <div class="gallerie">
     
    <ul>
    <div class="show">
        <?php foreach ($this->voitures as $car) : ?>
                   <?php  echo '<a href="image/big/'.$this->escape($car->big1).'.jpg" rel="lightbox"><img src="image/mini/'.$this->escape($car->mini1).'.jpg"/></a>'; ?>
                   <?php  echo '<a href="image/big/'.$this->escape($car->big2).'.jpg" rel="lightbox"><img src="image/mini/'.$this->escape($car->mini2).'.jpg"/></a>'; ?>    
                   <?php  echo '<a href="image/big/'.$this->escape($car->big3).'.jpg" rel="lightbox"><img src="image/mini/'.$this->escape($car->mini3).'.jpg"/></a>'; ?>
                   <?php  echo '<a href="image/big/'.$this->escape($car->big4).'.jpg" rel="lightbox"><img src="image/mini/'.$this->escape($car->mini4).'.jpg"/></a>'; ?>    
        <?php endforeach; ?>
    </div>
    </ul>
     
    </div>
     
    <div class="show">
        <?php foreach ($this->voitures as $car) : ?>
           <?php echo '<img src="image/show/'.$this->escape($car->foto_show).'.jpg">';?>
        <?php endforeach; ?>
    </div>
    vois tu mon problème ?

    je pourrais utliser cette solution mais on m'a tous dit qu'il fait éviter des boucles de requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = 'SELECT * FROM bugs WHERE bug_id = ?';
    for( $i = 1; $coutn($sql) <11; $i++)
    {
    $result = $db->fetchAll($sql, $i); //ici le résultat est goupé par tulpe puisqu'on veux toute les info de la ligne 1, puis la ligne 2 etc ...
    }

  4. #4
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Et pourquoi ne fais tu pas ta base de données dans l'ordre que tu souhaite ?

    Car le jour ou je fais un foreach pour ça j'arrête la programmation

    Après tu peux spécifier les champs que tu récupère sur la table dans ta requête dans l'ordre que tu souhaites

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	Et pourquoi ne fais tu pas ta base de données dans l'ordre que tu souhaite ?
    comment je fait pour lui dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    donne moi toutes les données des champs qui se trouve sur le 1er id
    donne moi toutes les données des champs qui se trouve sur le 2er id
    donne moi toutes les données des champs qui se trouve sur le 3er id
    etc...
    car après si j'ai ceci sous forme de table je peux aisément faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo" <table>";
    for ($id=1; $id<$imax;$i++)
    {
    echo $nom[$i] = $champ$i
    echo $image[$i] = $ iamge $i
    }
     
    echo "</table>";

    il faut peu être ne pas utliser le fetchAll?

  6. #6
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Attend on va faire plus simple.

    Tu veux afficher quoi exactement un exemple concret avec le schema de la table

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    voici ma table voiture simplifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    table voitures
     
    id| model | image
    --------------------
    0 | 106   |  image1 
    1 | 107   |  image2
    2 | 108   | image 3
    le résultat de l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    id= 0
     
    model= 106 
     
    <img src="image1.jpg">
    ------------------
    id= 1
     
    model= 107
     
    <img src="image2.jpg">
     
    -----------------
    id= 2
     
    model= 108
     
    <img src="image2.jpg">
    normalement c'est simple comme affichage mais avec un fetch All je ne sais pas faire

  8. #8
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Admettons que tu aie ton modèle voitures

    Dans l'action de ton controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $Tvoitures = new Application_Model_DbTable_Voirtures();
    $rowset = $Tvoitures->fetchAll();
    $this->view->voitures = $rowset;
    Dans ta vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <table>
    <tr>
         <th>ID</th><th>MODEL</th><th>IMAGE</th>
    </tr>
    <?php 
    foreach($this->voitures as $voiture){
         echo '<tr>';
         echo '<td>'.$voiture->id.'</td><td>'.$voiture->model.'</td><td>'.$voiture->image.'</td>';
         echo '</tr>';
    }
    ?>
    </table>
    ça ne te vas pas ça ?

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    AH ok

    je me suis fait avoir, la première fois j'avais utiliser ceci le plus simple mais c'était tous "dans le désordre", je n'avais pas mis de CSS, donc j'ai mal interpréter le résultat, je me suis dis qu'il me mettais un résultat qui n'est pas dans l'ordre




    merci a toi, si j'avais réessayer j'aurai encore chercher pendant longtemps

    c'est un problème de mise en forme et pas de résultat de la requête.

    avec des image de différente taille, c'est très mal rangé sans CSS

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    c'est fait

  11. #11
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Pas de soucis n’oublie pas de marqué ton sujet comme résolu si c'est bon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec les regex
    Par dalton5 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/02/2007, 17h33
  2. [RegEx] validation url avec les regex
    Par morgan47 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2007, 13h57
  3. [RegEx] Problème avec les regex
    Par foffa dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2006, 14h24
  4. [RegEx] Problème avec les regex
    Par dragon noir dans le forum Langage
    Réponses: 3
    Dernier message: 24/07/2006, 11h26
  5. [RegEx] Pb traitement de chaînes avec les regex
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo