Avatar billede jammerlab Nybegynder
03. marts 2008 - 14:06 Der er 3 kommentarer og
1 løsning

Slideshow implementer php array i javascript koden

Hej derude... duer ikke så meget til det Javascript så har været ude og finde en kode til et sladeshow... virker fint men kan ikke finde ud af at få implementeret PHP koden som finder mine billeder i mapperne...

Her kommer koden jeg bruger normalt... PHP delen... alle billederne ligger i mit $array[]..

    $dir = "pics folder/$_GET[folder]";
    $array = array();
    $valid_types = array("jpg","JPG","gif","GIF","jpeg","JPEG","bmp","BMP");

    $handle = opendir("$dir");
    while (($file = readdir($handle))!==false) {
        if ($file != "." && $file != "..") {
            if ($handle3 = opendir($dir . "/" . $d)) {
                while (false !== ($fil = readdir($handle3))) {
                    if ($fil != "." && $fil != "..") {
                    $vali = substr($fil, -3);
                    if (in_array($vali,$valid_types)) { $array[] = "$dir/$fil"; }
                    }
                }
               
                $picture = $array[ mt_rand( 0, count( $array ) - 1 ) ];
                $main_picture = explode("/", $picture);
                $size = getimagesize($picture);
                $lsize = lstat($picture);
                $main_kilo = floor($lsize[7]/1024);
                $main_x = $size[0];
                $main_y = $size[1];

            }
        }
    }

SLIDESHOW KODEN
-------------

<html>
<head>
<script language="javascript" type="text/javascript">
<!--
  var i=0;
  var finished=false;
  var paused=false;
  var running=false;
  function loadPics()
  {
      pic0=new Image();
      pic0.src="1.jpg";
      pic1=new Image();
      pic1.src="2.jpg";
      pic2=new Image();
      pic2.src="3.jpg";
      pic3=new Image();
      pic3.src="4.jpg";
      pict=new Array();
      pict[0]=pic0.src;
      pict[1]=pic1.src;
      pict[2]=pic2.src;
      pict[3]=pic3.src;
  }
  function next()
  {
      finished=false;
      if(i<pict.length-1)
      {
        i++;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
      }
      else
      {
        i=0;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
      }
  }
  function prev()
  {
      finished=false;
      if (i>0)
      {
        i--;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
      }
      else
      {
        i=pict.length-1;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
      }
  }

  function startSlide()
  {
      running=true;
      if(navigator.appVersion.indexOf("MSIE") == -1)
      {
        interval = setInterval(FFSlideshow,5000);
      }
      else
      {
        interval = setInterval(slideshow,5000);
      }
      document.getElementById("slideshow").disabled=true;
      document.getElementById('number').innerHTML="Picture "+1*(i+1);
  }
  function slideshow()
  {
      if (i<pict.length-1)
      {
        document.getElementById('pictureContainer').filters[0].Apply();
        document.getElementById("slideshow").disabled=true;
        i++;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
        document.getElementById('pictureContainer').filters[0].Play();
      }
      else if (i==pict.length-1 && finished==false)
      {
        document.getElementById("slideshow").disabled=false;
        document.getElementById('number').innerHTML="End of slideshow";
        finished=true;
        running=false;
        clearInterval(interval);
      }
      else
      {
        document.getElementById('pictureContainer').filters[0].Apply();
        i=0;
        finished=false;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
        document.getElementById('pictureContainer').filters[0].Play();
      }
  }
  function FFSlideshow()
  {
      if (i<pict.length-1)
      {
        document.getElementById("slideshow").disabled=true;
        i++
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
      }
      else if (i==pict.length-1 && finished==false)
      {
        document.getElementById("slideshow").disabled=false;
        document.getElementById('number').innerHTML="End of slideshow";
        finished=true;
        running=false
        clearInterval(interval);
      }
      else
      {
        i=0;
        finished=false;
        document.getElementById('picture').src=pict[i];
        document.getElementById('number').innerHTML="Picture "+1*(i+1);
      }
  }
  function pause()
  {
      if(running==true)
      {
        if(paused==false)
        {
            paused=true;
            document.getElementById("pause").value="resume";
            clearInterval(interval);
            document.getElementById('number').innerHTML="Paused";
        }
        else
        {
            startSlide()
            paused=false;
            document.getElementById("pause").value="pause";
        }
      }
  }
//-->
</script>
</head>
<body onload="loadPics()">
  <center>
      <div id="pictureContainer" style="width:560px; filter:progid:DXImageTransform.Microsoft.Fade(duration=1.0,overlap=1.0)">
        <img id="picture" name="picture" src="1.jpg" /></div><br />
        <input id="prev" type="button" value="prev" onclick="prev()" />
        <input id="next" type="button" value="next" onclick="next()" />
        <input id="slideshow" type="button" value="slideshow" onclick="startSlide()" />
        <input id="pause" type="button" value="pause" onclick="pause()" /><br />
      <div id="number">Picture 1</div>
  </center>
</body>
</html>
Avatar billede jammerlab Nybegynder
03. marts 2008 - 14:11 #1
Altså det går på hvordan jeg for indarbejdet mit $array ind i

  function loadPics()
  {
      pic0=new Image();
      pic0.src="1.jpg";
      pic1=new Image();
      pic1.src="2.jpg";
      pic2=new Image();
      pic2.src="3.jpg";
      pic3=new Image();
      pic3.src="4.jpg";
      pict=new Array();
      pict[0]=pic0.src;
      pict[1]=pic1.src;
      pict[2]=pic2.src;
      pict[3]=pic3.src;
  }

på en eller anden måde... eller lade javascripten gøre det PHP koden gør...
Avatar billede dmdisco Nybegynder
03. marts 2008 - 16:14 #2
du kan bare udskrive værdien fra php til javascriptet så kommer det jo med deri

var JSArray = new Array();
<?php
$array = array('et','to','tre');
foreach ($array as $key => $value) {
  print "JSArray[".$key."] = '".$value."';\n";
}
?>
Avatar billede jammerlab Nybegynder
03. marts 2008 - 16:25 #3
dmdisco> Kan ikke helt følge dig... jeg kan ikke se hvordan jeg kan få lavet det js array og hvor... er helt rundforvirret hehe :P
Avatar billede jammerlab Nybegynder
03. marts 2008 - 18:24 #4
Jeg har den nu... fik en JS guru til at se på den hehe :) han brugte dog ikke din metode dmdisco...

han brugte det her?

  function loadPics()
  {
    pict=<?=json_encode($pictures);?>
  }

men tak for hjælpen alligevel
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester