osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> imbriquer array et while
equisol
posté 30 Dec 2014, 11:43
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 124
Inscrit : 7-November 07
Lieu : Lyon
Membre no 19668



Bonjour,

J'ai créé un page côté admin dédiée à l'affichage des images qui normalement sont dans la fiche produit. Ce qui m'a amené à devoir créer cette page, c'est que je n'ai pas réussi à remplacer le input files par le module de gestion d'image de kcfinder.
Donc maintenant, je dispose d'une page qui me permet :
-> d'importer des images de mon disque dur
-> de lier les images du serveur aux différentes fiches produits
-> d'afficher les images de chaque fiche par catégorie
-> de supprimer des images

Ce n'est pas aussi fluide que sur la page categories.php, c'est sûr, mais bon.

Voici à quoi ça ressemble : galerie d'images
Un menu déroulant sera à créer pour accéder rapidement à la fiche voulue.

Maintenant j'en arrive au blocage du moment : l'ajout des sort_order afin de gérer l'ordre d'affichage des images.
Voici le code limité à l'affichage du tableau :
Code
    <table border="0" width="100%" cellspacing="0" cellpadding="2">
      <tr><?php echo tep_draw_form('listing', 'gal2.php', '', 'post', 'enctype="multipart/form-data"'); ?>
        <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td class="pageHeading"><?php echo 'Listing d\'images par fiche'; ?>&nbsp;&nbsp;&nbsp;<input type="submit" name="go3" value="Valider" /></td>
            <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><table>
<?php
    $gallery_actors_query = tep_db_query("select distinct p.products_id, pd.products_name, p2c.products_id, cd.categories_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where p2c.categories_id = c.categories_id and c.categories_id = cd.categories_id and c.categories_gallery = '1' and p.products_status = '1' and p.products_id = pd.products_id and p2c.products_id = p.products_id and pd.language_id=" . (int)$languages_id ." and cd.language_id=" . (int)$languages_id ." order by cd.categories_name ASC, pd.products_name ASC");
    while ($gallery_actors = tep_db_fetch_array($gallery_actors_query)) { // on affiche le titre de chaque fiche produit dans sa categorie
?>
                <div style="background-image:url(../multimedias/images/charte/transp2.png); background-repeat: repeat; width:95%;padding-left:10px; padding-right:10px; padding-bottom:7px; padding-top:7px;"><h2>[<?php echo $gallery_actors['categories_name']; ?>] - <?php echo $gallery_actors['products_name']; ?></h2></div>
                
<?php
          $gallery_images_query = tep_db_query("select pei.image, pei.htmlcontent, pei.id, pei.products_id, pei.sort_order from " . TABLE_PRODUCTS_IMAGES . " pei left join " . TABLE_PRODUCTS . " p ON pei.products_id = p.products_id where pei.products_id = " . $gallery_actors['products_id'] . " order by pei.sort_order asc");

            $tableau = array();
            while ($gallery_images = tep_db_fetch_array($gallery_images_query)) { // on affiche la liste d'images par fiche produit
                $tableau[$gallery_images['id']] = $gallery_images['sort_order'];
                    print_r($tableau);
                echo tep_draw_hidden_field('tab', serialize($tableau));
            }
?>
<div class="clearer"></div>
<br /><br />
<?php
    }
?>
        </table></td>
      </form></tr>
    </table>


Les résultats par fiche produit du print_r :
Code
[Les acteurs] - Michèle et Brice

Array ( [139] => 1 [140] => 2 [141] => 3 [142] => 4 )


[Les randonnées] - A la découverte de la Géologie

Array ( [109] => 1 )


[Les randonnées] - Randonnée découverte

Array ( [108] => 1 )


[Les randonnées] - Randonnée sur GR 94

Array ( [145] => 1 )


[Notre village] - Notre village

Array ( [47] => 1 [59] => 2 [60] => 3 [63] => 4 [62] => 5 [64] => 6 [51] => 7 [67] => 8 [50] => 9 [111] => 10 )


Cependant, dans la page de résultats, je n'ai que le tableau de la dernière fiche produit.
Le code :
Code
<div>
<?php
    $tab = unserialize(stripslashes($_POST['tab']));
        foreach ($tab as $key => $value)
        {
            echo $key . ' : ' . $value . '<br />';
        }
?>
</div>


Les résultats :
Code
47 : 1
59 : 2
60 : 3
63 : 4
62 : 5
64 : 6
51 : 7
67 : 8
50 : 9
111 : 10


Auriez-vous une solution pour que toutes les clés/valeurs s'affichent ?

Merci et Big Up !


--------------------
Goo69
Go to the top of the page
 
chti_poupon
posté 31 Dec 2014, 15:26
Message #2


Ceinture noire OSC
Icône de groupe

Groupe : TechDev
Messages : 2744
Inscrit : 9-September 08
Lieu : Douai
Membre no 22915



Bonjour
Sans aller dans le détail, il me semble que:
Code
           while ($gallery_images = tep_db_fetch_array($gallery_images_query)) { // on affiche la liste d'images par fiche produit
                $tableau[$gallery_images['id']] = $gallery_images['sort_order'];
                    print_r($tableau);
            }
                echo tep_draw_hidden_field('tab', serialize($tableau));

enverra dans post non pas le dernier $tableau, mais la totalité

Bons essais !
Chti poupon
PS (et bonne fin d'année !!)
Go to the top of the page
 
equisol
posté 2 Jan 2015, 18:01
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 124
Inscrit : 7-November 07
Lieu : Lyon
Membre no 19668



Bonne année 2015 et BIG UP aux membres d'Oscommerce !

Merci chi_poupon pour ta proposition, mais la réponse en page gal2.php reste la même. Seule l'organisation du tableau diffère, lors du print_r.

Vu que la création de cette page était assez pressée, je suis passé à une autre solution : transformer la page categories.php en gestion d'images et ça fonctionne plutôt bien (sauf pour le champ de recherche, mais ce n'est pas important). Ainsi, les catégories deviennent les produits, et les produits deviennent les images, gérées avec kcfinder. Ce qui fait que pour une fiche produit, on a un listing d'images que l'on gère comme un listing de produits.

Il suffit de modifier :
-> admin/includes/application_top.php
-> admin/includes/functions/general.php
-> admin/categories.php et son fichier langue
-> la base de données

Si ça intéresse quelqu'un, je peux mettre le code en ligne.



--------------------
Goo69
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 23rd November 2017 - 19:24
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)