PHP div повторяется

#php #html #slider

#php #HTML #слайдер

Вопрос:

Мне было интересно, сможет ли кто-нибудь помочь мне исправить этот сценарий…По сути, он просто вызывает слайд-шоу, если файл представляет собой изображение, проигрыватель vimeo, если у него есть URL-адрес vimeo, и встроенный swf-файл, если это флэш-файл.

 <div id='jessslide'>
    <?php
$photos=file("work.txt");
echo "<div id='slider-wrapper'>";
foreach($photos as $image){
$flag=0;
$item=explode("|",$image);
if($item[0]==$fields[0]){
$photo=trim($item[1]);

// check for Vimeo
if(strpos($photo, "vimeo.com") amp;amp; $flag==0){
echo "<iframe src='$photo?title=0amp;amp;byline=0amp;amp;portrait=0' width='900' height='500'     frameborder='0' webkitAllowFullScreen allowFullScreen></iframe>";
$flag=1;
}
// check for Flash
if(strpos($photo, ".swf") amp;amp; $flag==0){
echo "<object id='myId' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='900'     height='500'><param name='movie' value='$photo' />
            <!--[if !IE]>-->
            <object type='application/x-shockwave-flash' data='images/work/$photo' width='900' height='500'>
            <!--<![endif]-->
            <div>
            <h1>Alternative content</h1>
            <p><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></p>
            </div>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>";
$flag=1;
}
// If it's not Vimeo or Flash, then it must be a photo
if($flag==0){
echo "<div id='slider' class='nivoSlider'><img src='images/work/$photo' alt='' /></div>n";
}
}
}
echo "</div>";
?>
  </div>
 

Все работает нормально, однако в слайд-шоу отображается только 1 изображение. При просмотре сгенерированного исходного кода это то, что отображается для слайд-шоу:

  <div id='jessslide'>
    <div id='slider-wrapper'><div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet1.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet2.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet3.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet4.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet5.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet6.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet7.jpg' alt='' /></div>
</div>
</div>
 

И это то, как должен выглядеть правильный рабочий вывод слайд-шоу:

 <div id='slider-wrapper'>
<div id='slider' class='nivoSlider'>
<img src='images/work/sparklingsweet1.jpg' alt='' />
<img src='images/work/sparklingsweet2.jpg' alt='' />
<img src='images/work/sparklingsweet3.jpg' alt='' />
<img src='images/work/sparklingsweet4.jpg' alt='' />
<img src='images/work/sparklingsweet5.jpg' alt='' />
<img src='images/work/sparklingsweet6.jpg' alt='' />
<img src='images/work/sparklingsweet7.jpg' alt='' />
</div>
</div>
 

Похоже, это проблема с div…Я что-то не так делаю с divs в php. Кто-нибудь хочет быть потрясающим и помочь мне с этой глупой проблемой div? 🙂

* На странице php, которая у меня есть, есть только один div вне php-скрипта, который является «jessslide».

Ответ №1:

 <div id='jessslide'>
    <?php
    $photos=file("work.txt");
    foreach($photos as $image){
        $flag=0;
        $item=explode("|",$image);
        if($item[0]==$fields[0]){
            $photo=trim($item[1]);

            // check for Vimeo
            if(strpos($photo, "vimeo.com") amp;amp; $flag==0):
                echo "<iframe src='$photo?title=0amp;amp;byline=0amp;amp;portrait=0' width='900' height='500'     frameborder='0' webkitAllowFullScreen allowFullScreen></iframe>";
                $flag=1;

            // check for Flash
            elseif(strpos($photo, ".swf") amp;amp; $flag==0):
                echo "<object id='myId' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='900'     height='500'><param name='movie' value='$photo' />
                            <!--[if !IE]>-->
                            <object type='application/x-shockwave-flash' data='images/work/$photo' width='900' height='500'>
                            <!--<![endif]-->
                            <div>
                            <h1>Alternative content</h1>
                            <p><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></p>
                            </div>
                            <!--[if !IE]>-->
                            </object>
                            <!--<![endif]-->
                        </object>";
                $flag=1;

            // If it's not Vimeo or Flash, then it must be a photo
            else :
                $photoarray[] = $photo;
            endif;
        }
    }
    if (isset($photoarray)):
        echo "<div id='slider-wrapper'><div id='slider' class='nivoSlider'>";
        foreach ($photoarray as $photo):
            echo "<img src='images/work/$photo' alt='' />n";
        endforeach;
        echo "</div></div>";
    endif;

    ?>
</div>
 

Комментарии:

1. О черт, оказывается, что проигрыватель vimeo и swf теперь находятся внутри слайдера! D:

2. Спасибо! Но, к сожалению, отредактированный код немного сводит с ума, в нем перечислены все имена файлов, которые у меня есть в файле .txt: P

3. Это немного сложно отлаживать, не глядя на результат, но я внес несколько быстрых изменений. Здесь уже очень поздно, так что никаких гарантий 🙂

4. Вау! Большое вам спасибо за то, что помогли мне!! Это работает отлично! 😀 Ты сделал мой день лучше! Ха-ха 🙂

Ответ №2:

Я не совсем уверен, что вы делаете, но id — это уникальный идентификатор. У вас не может быть нескольких элементов на одной странице с одинаковым идентификатором. Я бы сначала посмотрел туда, чтобы узнать, является ли это источником вашей проблемы. Скорее всего, он делает все, что вы хотите, в самом последнем div с идентификатором «slider», а все остальные просто каким-то образом уничтожаются.