afficher les images sur plus d'une colonne

Petit nouveau ! | 3 Messages

06 juin 2007, 10:06

Salut,

Ce module permet d'afficher 10 images sur une seulle colonne.

Moi je voudrais qu'il me les affichent sur plusieurs colonnes de 3 images chacunes avec du texte à gauche de chaqu'image..

Je vous passe le code source du module afin que vous puissiez mz venir en aide:

<?php
/**
* @version $Id: mod_ppolaroid.php 07 2005-11-03 19:15:40Z rabencor $
* @package Joomla
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );

global $mosConfig_live_site;

$orientation = $params->get( 'orientation' );

$imagepath = $mosConfig_live_site.$params->get( 'imgfolder' );

$imagewidth = $params->get( 'imgw' );
$imageheight = $params->get( 'imgh' );
$imagespacing = $params->get( 'imgspace' );

$image01 = $params->get( 'img01' );
$image02 = $params->get( 'img02' );
$image03 = $params->get( 'img03' );
$image04 = $params->get( 'img04' );
$image05 = $params->get( 'img05' );
$image06 = $params->get( 'img06' );
$image07 = $params->get( 'img07' );
$image08 = $params->get( 'img08' );
$image09 = $params->get( 'img09' );
$image10 = $params->get( 'img10' );

$links = $params->get( 'links' );

$link01 = $params->get( 'link01' );
$link02 = $params->get( 'link02' );
$link03 = $params->get( 'link03' );
$link04 = $params->get( 'link04' );
$link05 = $params->get( 'link05' );
$link06 = $params->get( 'link06' );
$link07 = $params->get( 'link07' );
$link08 = $params->get( 'link08' );
$link09 = $params->get( 'link09' );
$link10 = $params->get( 'link10' );

$frame = $params->get( 'frameimg' );
$framewidth = $params->get( 'framewidth' );
$framebg = $params->get( 'framebg' );
$frameborder = $params->get( 'frameborder' );
$framebcolor = $params->get( 'framebcolor' );

$container = $params->get( 'container' );
$containerpad = $params->get( 'containerpad' );
$containerbg = $params->get( 'containerbg' );
$containerb = $params->get( 'containerborder' );
$containerbcol = $params->get( 'containerbcolor' );

$imagelist = array($image01, $image02, $image03, $image04, $image05, $image06, $image07, $image08, $image09, $image10);
$linklist = array($link01, $link02, $link03, $link04, $link05, $link06, $link07, $link08, $link09, $link10);

$absimage = $imagepath.$image01;
$imgdim = getimagesize($absimage);

if ($imagewidth=='') { $imagewidth = $imgdim[0]; };

if ($imageheight=='') { $imageheight = $imgdim[1]; };

if(!$container) { $containerpad = 0; $containerbg = 0; $containerb = 'none'; };
if($links) { $tg = '_blank'; } else { $tg = '_self'; };

echo '<div align="center">';
echo '<table><tr>';

if ($orientation) {

echo '<td align="center" valing="middle" style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<table cellpadding="0" cellspacing="'.$framewidth.'">';
for ($i = 0; $i <= 9; $i++) {
if($imagelist[$i]) {
echo '<tr><td style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<a href="http://'.$linklist[$i].'" target="'.$tg.'">';
echo '<img src="'.$imagepath.$imagelist[$i].'" width="'.$imagewidth.'" height="'.$imageheight.'" border=0"/></a> <br/>';
echo '</td></tr>';
};
};
echo '</table>';
echo '</td>';
} else {

echo '<td valing="middle" style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<table cellpadding="0" cellspacing="'.$framewidth.'"><tr>';
for ($i = 0; $i <= 9; $i++) {
if($imagelist[$i]) {
echo '<td style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<a href="http://'.$linklist[$i].'" target="'.$tg.'">';
echo '<img src="'.$imagepath.$imagelist[$i].'" style="margin:'.$imagespacing.'px; width="'.$imagewidth.'" height="'.$imageheight.'" border=0 <br/>"/></a>';
echo '</td>';
};
};
echo '</tr></table>';
echo '</td>';
};

echo '</tr></table>';
echo '</div>';
?>

Merci.

Bauer

www.kwalai.com/kwalai

Eléphant du PHP | 360 Messages

06 juin 2007, 10:43

Salut,

Ce module permet d'afficher 10 images sur une seulle colonne.

Moi je voudrais qu'il me les affichent sur plusieurs colonnes de 3 images chacunes avec du texte à gauche de chaqu'image..

Je vous passe le code source du module afin que vous puissiez mz venir en aide:
...
Merci.

Bauer

www.kwalai.com/kwalai
Déjà tu peux utiliser les balises "PHP" lors de la saisie de ton problème pour améliorer la lisibilité de ton code :

<?php
/**
* @version $Id: mod_ppolaroid.php 07 2005-11-03 19:15:40Z rabencor $
* @package Joomla
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );

global $mosConfig_live_site;

$orientation = $params->get( 'orientation' );

$imagepath = $mosConfig_live_site.$params->get( 'imgfolder' );

$imagewidth = $params->get( 'imgw' );
$imageheight = $params->get( 'imgh' );
$imagespacing = $params->get( 'imgspace' );

$image01 = $params->get( 'img01' );
$image02 = $params->get( 'img02' );
$image03 = $params->get( 'img03' );
$image04 = $params->get( 'img04' );
$image05 = $params->get( 'img05' );
$image06 = $params->get( 'img06' );
$image07 = $params->get( 'img07' );
$image08 = $params->get( 'img08' );
$image09 = $params->get( 'img09' );
$image10 = $params->get( 'img10' );

$links = $params->get( 'links' );

$link01 = $params->get( 'link01' );
$link02 = $params->get( 'link02' );
$link03 = $params->get( 'link03' );
$link04 = $params->get( 'link04' );
$link05 = $params->get( 'link05' );
$link06 = $params->get( 'link06' );
$link07 = $params->get( 'link07' );
$link08 = $params->get( 'link08' );
$link09 = $params->get( 'link09' );
$link10 = $params->get( 'link10' );

$frame = $params->get( 'frameimg' );
$framewidth = $params->get( 'framewidth' );
$framebg = $params->get( 'framebg' );
$frameborder = $params->get( 'frameborder' );
$framebcolor = $params->get( 'framebcolor' );

$container = $params->get( 'container' );
$containerpad = $params->get( 'containerpad' );
$containerbg = $params->get( 'containerbg' );
$containerb = $params->get( 'containerborder' );
$containerbcol = $params->get( 'containerbcolor' );

$imagelist = array($image01, $image02, $image03, $image04, $image05, $image06, $image07, $image08, $image09, $image10);
$linklist = array($link01, $link02, $link03, $link04, $link05, $link06, $link07, $link08, $link09, $link10);

$absimage = $imagepath.$image01;
$imgdim = getimagesize($absimage);

if ($imagewidth=='') { $imagewidth = $imgdim[0]; };

if ($imageheight=='') { $imageheight = $imgdim[1]; };

if(!$container) { $containerpad = 0; $containerbg = 0; $containerb = 'none'; };
if($links) { $tg = '_blank'; } else { $tg = '_self'; };

echo '<div align="center">';
echo '<table><tr>';

if ($orientation) {

echo '<td align="center" valing="middle" style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<table cellpadding="0" cellspacing="'.$framewidth.'">';
for ($i = 0; $i <= 9; $i++) {
if($imagelist[$i]) {
echo '<tr><td style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<a href="http://'.$linklist[$i].'" target="'.$tg.'">';
echo '<img src="'.$imagepath.$imagelist[$i].'" width="'.$imagewidth.'" height="'.$imageheight.'" border=0"/></a> <br/>';
echo '</td></tr>';
};
};
echo '</table>';
echo '</td>';
} else {

echo '<td valing="middle" style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<table cellpadding="0" cellspacing="'.$framewidth.'"><tr>';
for ($i = 0; $i <= 9; $i++) {
if($imagelist[$i]) {
echo '<td style="padding:'.$containerpad.'px; background-color:'.$containerbg.'; border:'.$containerb.'px solid '.$containerbcol.';">';
echo '<a href="http://'.$linklist[$i].'" target="'.$tg.'">';
echo '<img src="'.$imagepath.$imagelist[$i].'" style="margin:'.$imagespacing.'px; width="'.$imagewidth.'" height="'.$imageheight.'" border=0 <br/>"/></a>';
echo '</td>';
};
};
echo '</tr></table>';
echo '</td>';
};

echo '</tr></table>';
echo '</div>';
?>
Et tu désires 3 images par colonne ou par ligne ?
De toute façon il te suffit pour cela d'utiliser les tableaux et un compteur.

- Si c'est par la ligne, tu initialise ton compteur avant la création du tableau, et dès que tu rajoutes une image tu l'incrémente de +1. dès que tu es arrivé à tes 3 images tu termines la ligne de ton tableau et tu en commence une nouvelle puis tu réinitialise ton compteur... et ainsi de suite ...

- Si c'est par colonne, tu devra compter le nombre de photos que tu as, le divisé par 3, en tiré le nombre entier supérieur, puis la même chose que par ligne sauf qu'au lieu de 3 par ligne, ton compteur s'arrêtera à ce nouveau nombre.
Dites ce que je fais, ne faites pas ce que je dis ...

Petit nouveau ! | 3 Messages

06 juin 2007, 10:53

Salut,

C'est bien beau ce que du explique là, m'est je m'y connaît pas en php.

Peut tu m'aider en resolovant ce problème c'est-à-dire ce que je dois écrire et où placer le code.

Merci.

Au fait je veux trois images par colonne et un texte à droite de chaqu'image.


Au plaisir de te lire

Bauer

Eléphanteau du PHP | 30 Messages

06 juin 2007, 10:58

Han Bauer, pas bien !! :shock:

C'est pas bien de se faire macher le travail. Je suis un débutant , tout comme toi, mais essayes quand meme de comprendre ton code, sinon tu n'y arriveras jamais. :D :D

Copier/Coller n'est pas très instructif.
(je dis sa, je ne dis rien .. )

Donne ton code et on verras ^^
Bon courage :lol:
Modifié en dernier par kpn59 le 06 juin 2007, 11:28, modifié 1 fois.

Eléphant du PHP | 360 Messages

06 juin 2007, 11:06

Han Bauer, pas bien !! :shock:
...
(je dis sa, je ne dis rien .. )
Nan mais tu as raison !!!

Je dirais la même chose que dirais les admins ou les modos s'ils étaient là : ce forum n'est pas là pour faire le travail des autres, mais pour t'aider à comprendre tes erreurs, te mettre sur des pistes, ...
Si tu ne connais vraiment rien à PHP, il existe plein de sites pour les débutants t'apprenant pas à pas le PHP.
Ce que tu désires réaliser n'est pas bien complexe !
Essaye et poste ici ton code, et nous t'aiguillerons avec plaisir vers le résultat final !

Bon courage :wink:
Dites ce que je fais, ne faites pas ce que je dis ...

Petit nouveau ! | 3 Messages

06 juin 2007, 11:23

Salut,


Merci bien Snoops, en espérant que vous allez resoudre mon problème, je vais tentez de suivre votre proccédure.

Je vous tiens au courant de l'évolution.

Bauer

Eléphant du PHP | 360 Messages

06 juin 2007, 14:24

Voici une piste à suivre (mêlant PHP et HTML) :

- Tout d'abord je compte le nombre d'image a afficher, je stock ce resultat dans la variable "total_photo"
- Pour connaitre le nombre de photos par ligne, je divise ce chiffre par 3 (puisque je veux 3 photos par colonne), je stock ce resultat dans la variable "nb_photos_ligne"
- J'effectue une requete qui me donne le nom de toutes les photos a afficher
- J'initialise un compteur appelé "cpt" à 1
- J'ouvre un nouveau tableau (<TABLE>)
- J'ouvre une nouvelle ligne (<TR>)
- Pour chaque photo :
* je regarde si le compteur est égal à "nb_photos_ligne"; si oui je ferme la ligne(</TR>)
en cours et j'en ouvre une nouvelle(<TR>)
et je réinitialise "cpt" à 1; sinon j'incrémente "cpt" de 1 ($cpt++; )
* j'ouvre une nouvelle cellule (<TD>)
* j'insère l'image (<IMG SRC=...>)
* je ferme la cellule (</TD>)
* j'ouvre une nouvelle cellule (<TD>)
* j'insère le texte
* je ferme la cellule (</TD>)

- Je fais un compteur pour les cellules restantes dans la dernière ligne appelé "i"
- Je fais une boucle for initialisée à "cpt" et allant jusqu'à "nb_photos_ligne"
* J'ouvre une nouvelle cellule (<TD>)
* J'insère un espace &nbsp;
* Je ferme cette cellule (</TD>)

- Je ferme la ligne (</TR>)
- Je ferme le tableau (</TABLE>)

Alors il y a peut-être quelques trucs à paufiner, ou des erreurs/oublis que j'aurais fait, mais ça te donne un ordre d'idées pour te lancer !
Dites ce que je fais, ne faites pas ce que je dis ...

ViPHP
ViPHP | 5924 Messages

06 juin 2007, 17:13

Je pense que tu n'utilises pas assez les boucles for, qui sont ici très pratique :
nb_lignes=arrondi_supérieur(total_photo/nb_photos_ligne)
pour l allant de 0 à nb_lignes+1 faire

affichage de <tr>
pour i allant de 0 à max(nb_photos_ligne, total_photo-l*nb_photos_ligne) faire
affichage de <td>
affichage des données
affichage de </td>
finpour
affichage de </tr>

finpour
Après, les deux se valent mais je trouve cette solution plus lisible...