[RESOLU]probleme diaporama et boucle while

Petit nouveau ! | 5 Messages

21 janv. 2010, 00:47

Bonjour,
Alors voici un petit problème que je n'arrive pas à résoudre. J' essaie de créer un diaporama qui devrait ressembler à ceci:

Code : Tout sélectionner

<div id="s1" class="pics"> <img alt="image1" src="image1.jpg"/> <img alt="image2" src="image2.jpg"/> <img alt="image3" src="image3.jpg"/> <img alt="image4" src="image4.jpg"/> <img alt="image5"src="image5.jpg"/> </div> <div class="fleches"> <a class="next" id="next1" href="#" style="float: left"><</a> <a class="prev" id="prev1" href="#" style="float: right">></a> </div>
exemple en image:lien


Mais voilà le traitement du php me fait une répétition de la balise en plus des images...je sais bien que c'est dû à "while" mais je ne trouve pas la solution....[decu]
exemple 2 lien

Code : Tout sélectionner

<?php $img = $_GET['dir']; $dossier = 'travaux/'.$img; $rep2 = opendir($dossier); while($fichier=readdir($rep2)) { if (($fichier==".") || ($fichier=="..") || ($img=="")) {echo "";} else if (substr($fichier, 0, 5) == "diapo") { ?> <div id="s1" class="diapo"> <?php echo ' <img alt="'.$fichier.'" src="'.$dossier.'/'.$fichier.'"/>'; ?> </div> <div class="fleches"> <a class="next" id="next1" href="#" style="float: left"><</a> <a class="prev" id="prev1" href="#" style="float: right">></a> </div> <? } else { $fichier= str_replace("-", "'", $fichier); $fichier= str_replace("_", " ", $fichier); echo '<img src="'.$dossier.'/'.stripslashes($fichier).'" />'; } closedir($dossier); } ?>
Voilà merci si quelqu'un a une idée Merci [ravi]
Modifié en dernier par hophopk le 22 janv. 2010, 15:25, modifié 2 fois.

ViPHP
ViPHP | 1136 Messages

21 janv. 2010, 09:56

Salut ,

tel que je peux le lire , ton code génère plutôt ce genre de code html car la balise <div ...> se trouve à l'intérieur de ton while , ce qui provoque fatalement une répétition .
Maintenant , je ne sais pas si c'est la cause de ton probléme :-)
<div id="s1" class="pics">
<img alt="image1" src="image1.jpg"/>
</div> 
<div id="s1" class="pics">  
<img alt="image2" src="image2.jpg"/>
</div> 
<div id="s1" class="pics">  
<img alt="image3" src="image3.jpg"/>
</div> 
<div id="s1" class="pics">  
<img alt="image4" src="image4.jpg"/>
</div> 
<div id="s1" class="pics">  
<imgalt="image5"src="image5.jpg"/>                                 
</div>
Good luck ,
Ch.

Petit nouveau ! | 5 Messages

21 janv. 2010, 14:10

bonjour et merci de ton aide,
alors oui e comprends bien qu'il faut pouvoir au sein de la boucle ne répéter qu'une seule fois la <div id="s1"> et répéter seulement les images trouvées dans le répertoire et commençant par "diapo", mais ça m'échappe :x

EDIT: j'ai remis les liens du premier message à jour
merci

Petit nouveau ! | 5 Messages

21 janv. 2010, 17:19

REbonjour, pour être un peu plus clair, en gros:

Je parcours un dossier pour voir ce qu'il y a dedans,
si fichier . ou .. = n'affiche rien,
si le début du fichier commence par "diapo" = affiche un diaporama,
sinon = affiche les images normalement.

jusque là pas compliqué...mais comme dit précédemment mon diaporama (en javascript) doit être entre les balises <div id="s1"...>"x fois <img src="diapo....." />"</div>
Il faut savoir qu'il peut y avoir à la fois des images normales et un diaporama, je ne veux donc pas de la <div id="s1"> si il n'y a pas de diapos.
Merci en tout cas, je m'en tire les cheveux mais je pense que c'est dû à mes premiers pas :lol:

Petit nouveau ! | 5 Messages

22 janv. 2010, 15:24

voici la solution que j'ai pu obtenir si ça peut aider quelqu'un
:)

Code : Tout sélectionner

<?php $img = $_GET['dir']; $dossier = 'travaux/'.$img; $rep2 = opendir($dossier); $diapoDiv = false; while (false !== ($fichier=readdir($rep2))){ if ($fichier != "." && $fichier !=".." && substr($fichier, 0, 5) != "diapo") { echo '<img src="'.$dossier.'/'.$fichier.'" />'; } else if (substr($fichier, 0, 5) == "diapo") { if( $diapoDiv == false ) { echo '<div id="s1" class="diapo">'; $diapoDiv = true; } echo '<img alt="'.$fichier.'" src="'.$dossier.'/'.$fichier.'"/>'; } } if( $diapoDiv == true ) { echo '</div>'; echo ' <div class="fleches"> <a class="next" id="next1" href="#" style="float: left"><</a> <a class="prev" id="prev1" href="#" style="float: right">></a> </div>'; } closedir($rep2); ?>