2014-01-17 32 views
0

我从网址获取用户标识。 这是我目前所拥有的。我想用$ userid替换它,但我不知道如何。它不工作,我似乎无法找到正确的语法,请有人可以帮忙吗?如何使用目录路径的php变量?

function returnimages($dirname = "Photos/1") 

基本上我试图创建一个使用HTML,PHP和JavaScript的照片幻灯片。在开始将PHP添加到我的代码之前,我做了一些工作。我有HTML和一个外部的JavaScript改变照片,他们淡入和退出循环。我有一个JavaScript的照片数组。现在我正在尝试将PHP添加到我的html中。我希望能够通过url获得userid,然后从中获取照片从特定路径到目录中的userid。然后,我希望能够创建一组这些照片并在我的javascript中使用它们。这里是嵌入在我的HTML我的PHP代码:

<?php 

$user_id = $_GET['userid']; 
print " Hi, $user_id "; 

function returnimages($dirname = "Photos/1") { //will replace 1 with userid once something starts working 
$pattern="(\.jpg$)|(\.png$)|(\.jpeg$)|(\.gif$)"; //valid image extensions 
$files = array(); 
$curimage=0; 
if($handle = opendir($dirname)) { 
while(false !== ($file = readdir($handle))){ 
if(eregi($pattern, $file)){ //if this file is a valid image 
//Output it as a JavaScript array element 
echo 'galleryarray['.$curimage.']="'.$file .'";'; 
$curimage++; 
} 
} 

closedir($handle); 
} 
return($files); 
} 

echo 'var galleryarray=new Array();'; //Define array in JavaScript 
returnimages() //Output the array elements containing the image file names 

?> 

而且我的javascript:

$(文件)。就绪(函数(){

var photodisplay = 
[ 
$("#photo1"), 
$("#photo2"), 
$("#photo3"), 
$("#photo4"), 
$("#photo5"), 
]; 

//photodisplay[0].hide().fadeIn(3000); 

var user = new Array(); 
[1, 2, 3, 4, 5]; 

// List of images for user one 
/*var userphoto = new Array(); 
userphoto[0] = "Photos/1/1.jpg"; 
    userphoto[1] = "Photos/1/2.jpg"; 
     userphoto[2] = "Photos/1/1.jpg"; 
      userphoto[3] = "Photos/1/1.jpg"; 
       userphoto[4] = "Photos/1/1.jpg";*/ 


//preloading photos 
var userphoto = <? echo json_encode($galleryarray); ?>; 
function preloadingPhotos() { 
for (var x=0; x<5; x++) 
{ 
    photodisplay[x].attr("src", "Photos/1" + userphoto[x]); 
    photodisplay[x].hide(); 
    console.log("preloaded photos"); 

} 
displayPhoto(); 
} 

function displayPhoto(){ 

    photodisplay[0].fadeIn(3000); 
    photodisplay[0].delay(3000).fadeOut(3000, function() { //first callback func 
    photodisplay[1].fadeIn(3000); 
    photodisplay[1].delay(3000).fadeOut(3000, function() { //second callback func 
    photodisplay[2].fadeIn(3000); 
    photodisplay[2].delay(3000).fadeOut(3000, function() { //third callback func 
    photodisplay[3].fadeIn(3000); 
    photodisplay[3].delay(3000).fadeOut(3000, function() { // fourth callback func 
    photodisplay[4].fadeIn(3000); 
    photodisplay[4].delay(3000).fadeOut(3000, function() { 
    setTimeout(displayPhoto(), 3000); 
    }); 
    }); 
    }); 
    }); 
    }); 

}// end of function displayPhoto 


window.onload = preloadingPhotos; 

}); //结束准备

我的网址,以获取用户名:

http://example.com/code.php?user_id=1

谢谢您的时间!

回答

1

的问题是,你总是设置目录名称,而不是让调用该函数设置。你可以改变:

function returnimages($dirname = "Photos/1") { 

function returnimages($dirname) { 

,因为否则$dirname总是Photo/1。然后,当您拨打该功能时,请使用:

returnimages('Photos/'.$user_id); 
+0

非常感谢!这工作! :') 谢谢。 – fondillusions

+0

我仍然不明白为什么在函数参数中放置路径不起作用。不一样吗?困惑。但它的作品!你有任何想法如何在JavaScript中调用从PHP数组? :/ – fondillusions

+0

不客气。问题在于你没有在函数参数中放置路径。你基本上是设置变量dirname,而忽略函数被调用时设置的变量。如果你想在JavaScript中放置一个php数组,这取决于你如何编码它。你把php放在一个完全的javascript,html或php页面的javascript中吗? – Anonymous

0

您可以使用点“。”连接PHP。这将连接两个字符串,然后将它们分配给变量$ dirname。例如:

$dirname = "Photos/" . $_GET['ID']; 

变量$目录名可以被放置在功能returnimages,如:

returnimages($dirname); 
+0

谢谢您的回复。我只是做到了这一点,但它仍然不起作用:S 我得到了这个错误:解析错误:语法错误,意外的'。',期待')'在......第17行 我是一个完整的初学者到PHP,并会感谢任何帮助! – fondillusions

+0

有关您工作的更多信息可以帮助我们,网址的外观如何?围绕这个部分的代码是什么让你感到困扰?你已经尝试了什么,结果如何? – Pakspul

+0

我刚刚编辑了我的问题。谢谢!希望它能使我想要实现的更具意义? :抱歉让我感到困惑和模糊。 – fondillusions