PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-01-2010 23:17:58

hophop
Membre
Inscription : 20-01-2010
Messages : 7

[Résolu] Problème Diaporama et boucle while

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:

     
<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"/>
<imgalt="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

<?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]

Hors ligne

#2 21-01-2010 07:24:16

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Problème Diaporama et boucle while

Tu incrémentes une variable et tu vérifies sur un modulo.

Par exemple pour l'affichage toutes les 5 instructions :

$i = 0;
while(...) //Boucle autre que sur $i
{
  if( $i%5 == 0 )
    echo"on a atteins 5\n";
  //Reste des instructions qui se font à chaque itération de la boucle quelque soit la valeur de $i
  $i++;
}

Hors ligne

#3 21-01-2010 12:50:46

hophop
Membre
Inscription : 20-01-2010
Messages : 7

Re : [Résolu] Problème Diaporama et boucle while

Merci beaucoup de ton aide,
mais je dois avouer que j'y arrive pas.
Je comprends bien qu'il faut pouvoir au sein de la boucle ne répéter qu'une seule la <div id="s1"> et répéter les images seulement, mais ça m'échappe hmm

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

Dernière modification par hophop (21-01-2010 13:18:20)

Hors ligne

#4 21-01-2010 15:48:12

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Problème Diaporama et boucle while

Si elle n'est à afficher qu'une seule fois pourquoi ne pas la mettre avant la boucle dans ce cas ?

Hors ligne

#5 21-01-2010 16:16:35

hophop
Membre
Inscription : 20-01-2010
Messages : 7

Re : [Résolu] Problème Diaporama et boucle while

bonjour xTG,
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:D

Hors ligne

#6 21-01-2010 18:21:21

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Problème Diaporama et boucle while

Un simple booléen fera donc l'affaire.

...
$diapoDiv = false;
while($fichier=readdir($rep2))
      {
      if (($fichier==".") || ($fichier=="..") || ($img==""))
                                {echo "";}
     
      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.'"/>';
?>
 </div>
...

Hors ligne

#7 22-01-2010 01:15:04

hophop
Membre
Inscription : 20-01-2010
Messages : 7

Re : [Résolu] Problème Diaporama et boucle while

Merci beaucoup xTG ça marche, mais.....:/
il reste le problème des flèches de navigation qui doivent s'inserer juste après:

<div class="fleches">
        <a class="next" id="next1" href="#" style="float: left"><</a>
        <a class="prev" id="prev1" href="#" style="float: right">></a>    
</div>

j'ai essayé pas mal de choses mais en vain..
en tout cas merci, je connaissais ce truc des booléens mais sans savoir l'appliquer!;)

Hors ligne

#8 22-01-2010 07:32:36

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Problème Diaporama et boucle while

A afficher tous les combien d'images ? Si tu as un nombre précis tu utilises un modulo.
Si aucun et que tu le veux à la fin tu mets un if à la fin de ta boucle :

if( $diapoDiv == true ) echo '<div class="fleches>..............';

Hors ligne

#9 22-01-2010 12:57:07

hophop
Membre
Inscription : 20-01-2010
Messages : 7

Re : [Résolu] Problème Diaporama et boucle while

Bonjour et merci xTG encore un pas de fait...
Merci pour tout tes efforts smile

Il y a un dernier qui me chiffonne:/ et je ne trouve toujours pas l'erreur.
Désormais le diaporama marche (pas dans le bon ordre mais ça je devrais pouvoir m'en sortir) mais il intègre une image qui ne commence pas par "diapo" mais par "img". image qu'il n'affiche donc pas normalement.
voici le lien si tu veux voir : lien

<?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);

?>

Dernière modification par hophop (22-01-2010 12:57:45)

Hors ligne

#10 22-01-2010 17:22:09

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Problème Diaporama et boucle while

Si tu regardes bien le code généré ton image dont le nom ne comporte pas "diapo" se trouve en dehors du div contenant le diaporama.
Donc je ne vois pas où est le soucis.
Est-ce qu'il ne faut pas l'afficher ? Dans ce cas la première partie de ton if n'est pas à mettre.

Hors ligne

#11 22-01-2010 18:14:40

hophop
Membre
Inscription : 20-01-2010
Messages : 7

Re : [Résolu] Problème Diaporama et boucle while

non tu as raison tout est OK.
Mais pour cette page il y a DEUX images ne commençant pas par diapo.
Une est bien en dehors du diaporama, et l'autre est dans le diaporama....étrange, non?

Hors ligne

#12 22-01-2010 18:43:30

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Problème Diaporama et boucle while

Non pas du tout. Cela dépend de l'ordre dans lequel ton script liste les fichiers du dossier.

Hors ligne

#13 23-01-2010 11:46:00

hophop
Membre
Inscription : 20-01-2010
Messages : 7

Re : [Résolu] Problème Diaporama et boucle while

Bon bon bon,
je vais essayer régler ça avec un array, mais je peux dire que c'est résolu! smile
Merci beaucoup xTG

Hors ligne

Pied de page des forums