Hallow..

Dit gaat even totaal niet over PHP maar over JS (A)

M'n vraag:

Ik heb een laadblak script gevonde op het internet.
Dit scriptje laat een laadbalk zien en begint alle opgegeeven plaatjes te laaden.. Om plaatjes toe te voegen moet je deze regel veranderen:

var imagenames=new Array( '../pics/foto1.jpg' , '../pics/foto2.jpg' , '../pics/foto3.jpg' , '../pics/foto4.jpg' ,  '../pics/foto5.jpg' );

Is er een manier om alle bestande uit de map pics te laten zien ineplaats van dat je ze allemaal moet neer zetten?
met php alle plaatjes uit de map halen en ze hierin echo-en
ja maar een .JS is geen .PHP
Klopt, maar PHP kun je wel binnen JS echoën. Als je dus een script hebt dat alle plaatjes uit een map haalt, kun je die binnen JS weer laten geven.

<script type="text/javascript">
    <?php
        echo 'alert ("Hallo wereld");';
    ?>
</script>

dat is een voorbeeld hoe je PHP in JS kunt gebruiken.
[edit]
foutje weggehaald
[/edit]
ja maar ik gebruik geen <script> </script>

Ik gebruik een .JS bestand.. daar staat de heele code in.

Code van de .JS bestand:

// laadbalk.js
// plaats hier al je afbeeldingen in :
var imagenames=new Array( '../pics/foto1.jpg' , '../pics/foto2.jpg' , '../pics/foto3.jpg' , '../pics/foto4.jpg' ,  '../pics/foto5.jpg' );

var yposition=220;          // laadbalk positie, vanaf bovenkant venster, in pixels
var loadedcolor='blue' ;    // laadbalk kleur ingeladen beelden
var unloadedcolor='yellow'; // laadbalk kleur nog in te laden beelden
var barheight=15;           // laadbalk hoogte in pixels
var barwidth=400;           // laadbalk breedte in pixels  
var bordercolor='black';    // laadbalk randkleur

// hieronder niets wijzigen :
var NS4 = (navigator.appName.indexOf("Netscape")>=0 && parseFloat(navigator.appVersion) >= 4 && parseFloat(navigator.appVersion) < 5)? true : false;
var IE4 = (document.all)? true : false;
var NS6 = (parseFloat(navigator.appVersion) >= 5 && navigator.appName.indexOf("Netscape")>=0 )? true: false;
var imagesdone=false;
var blocksize=barwidth/(imagenames.length);
barheight=Math.max(barheight,25);
var loaded=0, perouter, perdone, images=new Array();
var txt=(NS4)?'<layer name="perouter" bgcolor="'+bordercolor+'" visibility="hide">' : '<div id="perouter" style="position:absolute; visibility:hidden; background-color:'+bordercolor+'">';
txt+='<table cellpadding="0" cellspacing="1" border="0"><tr><td width="'+barwidth+'" height="'+barheight+'" valign="center">';
if(NS4)txt+='<ilayer width="100%" height="100%"><layer width="100%" height="100%" bgcolor="'+unloadedcolor+'" top="0" left="0">';
txt+='<table cellpadding="0" cellspacing="0" border="0"><tr><td valign="center" width="'+barwidth+'" height="'+barheight+'" bgcolor="'+unloadedcolor+'"><center><font color="'+loadedcolor+'" size="2" face="sans-serif">Bezig met het inladen van de afbeeldingen ...</font></center></td></tr></table>';
if(NS4) txt+='</layer>';
txt+=(NS4)? '<layer name="perdone" width="100%" height="'+barheight+'" bgcolor="'+loadedcolor+'" top="0" left="0">' : '<div id="perdone" style="position:absolute; top:1px; left:1px; width:'+barwidth+'px; height:'+barheight+'px; background-color:'+loadedcolor+'; z-index:100">';
txt+='<table cellpadding="0" cellspacing="0" border="0"><tr><td valign="center" width="'+barwidth+'" height="'+barheight+'" bgcolor="'+loadedcolor+'"><center><font color="'+unloadedcolor+'" size="2" face="sans-serif">Bezig met het inladen van de afbeeldingen ...</font></center></td></tr></table>';
txt+=(NS4)? '</layer></ilayer>' : '</div>';
txt+='</td></tr></table>';
txt+=(NS4)?'</layer>' : '</div>';
document.write(txt);
function loadimages(){
if(NS4){
perouter=document.perouter;
perdone=document.perouter.document.layers[0].document.perdone;
}
if(NS6){
perouter=document.getElementById('perouter');
perdone=document.getElementById('perdone');
}
if(IE4){
perouter=document.all.perouter;
perdone=document.all.perdone;
}
cliplayer(perdone,0,0,barheight,0);
window.onresize=setouterpos;
setouterpos();
for(n=0;n<imagenames.length;n++){
images[n]=new Image();
images[n].src=imagenames[n];
setTimeout('checkload('+n+')' ,n*100);
}}
function setouterpos(){
var ww=(IE4)? document.body.clientWidth : window.innerWidth;
var x=(ww-barwidth)/2;
if(NS4){
perouter.moveTo(x,yposition);
perouter.visibility="show";
}
if(IE4||NS6){
perouter.style.left=x+'px';
perouter.style.top=yposition+'px';
perouter.style.visibility="visible";
}}
function dispbars(){
loaded++;
cliplayer(perdone, 0, blocksize*loaded, barheight, 0);
if(loaded>=imagenames.length)setTimeout('hideperouter()', 800);
}
function checkload(index){
(images[index].complete)? dispbars() : setTimeout('checkload('+index+')', 100);
}
function hideperouter(){
(NS4)? perouter.visibility="hide" : perouter.style.visibility="hidden";
imagesdone=true;
}
function cliplayer(layer, ct, cr, cb, cl){
if(NS4){
layer.clip.left=cl;
layer.clip.top=ct;
layer.clip.right=cr;
layer.clip.bottom=cb;
}
if(IE4||NS6)layer.style.clip='rect('+ct+' '+cr+' '+cb+' '+cl+')';
}
window.onload=loadimages;
Ook al gebruik je een .JS bestand, dan zul je nog steeds <script> tags moeten gebruiken om het te includen in je pagina.
Hier is een PHP functie die alle image files uit een map teruggeeft:
<?php
function listImageFiles ($dir) {
if ($handle = opendir($dir)) {
$imgs = array ();

while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (eregi (".jpg|.gif|.png", $file)) {
$imgs[] = $file;
$n++;
}
}
}
sort ($imgs);
reset ($imgs);
closedir($handle);
}
return $imgs;
}
?>
jah maar kijk..

<script src="laadbalk.js"></script>

zo haal je die JS op.. hoe verwerk ik er dan PHP in?
Gewoon zoals altijd. Je kunt zelfs in je JS bestand PHP beginnen met

<?php
en eindigen met
?>

Als je host PHP ondersteunt, wordt het gewoon uitgevoerd als PHP.
ok thx :)

waarom doen je code tags het trouwens niet?

Edit: nu wel :)
Ja dat is de UBB parser op PHPhulp :-)
Hey nog ff een klijn vraagje..

<?php
function listImageFiles ($dir) {
if ($handle = opendir($dir)) {
$imgs = array ();

while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (eregi (".jpg|.gif|.png", $file)) {
$imgs[] = $file;
$n++;
}
}
}
sort ($imgs);
reset ($imgs);
closedir($handle);
}
return $imgs;
}
?>

Hoe zet je elk plaatje hierin? :

var imagenames=new Array( '../pics/foto1.jpg' , '../pics/foto2.jpg' , '../pics/foto3.jpg' , '../pics/foto4.jpg' ,  '../pics/foto5.jpg' );

Reageren