imbriquer array et while |
Bienvenue invité ( Connexion | Inscription )
imbriquer array et while |
30 Dec 2014, 11:43
Message
#1
|
|
Ceinture jaune+ OSC 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'; ?> <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
|
|
31 Dec 2014, 15:26
Message
#2
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 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 !!) |
|
2 Jan 2015, 18:01
Message
#3
|
|
Ceinture jaune+ OSC 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
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 09:12 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |