如何做循环?
我在做一个上传的程序:
我用$srcfile=$photo_file_name;来取到文件名,可以
但现在我想设计一个同时上传10个图片的上传程序.
于是我这样:
for($i=1;$i<=10;$i++)
{
$photo_file=$photo_fle.$i;
$srcfile=$photo_file_name;
}
但我这样做echo不出值来,如何写啊?
本来这样
$srcfile1=$photo_file1_name;
$srcfile2=$photo_file2_name;
$srcfile3=$photo_file3_name;
......
想用循环
表单中是这样的:
<form method="POST" enctype="multipart/form-data" action="upphoto.php">
<input type="file" name="photo_file1" size="60" style="border:1px solid #FFFFFF; ">
<input type="file" name="photo_file2" size="60" style="border:1px solid #FFFFFF; ">
<input type="file" name="photo_file3" size="60" style="border:1px solid #FFFFFF; ">
......
</form>
问题点数:0、回复次数:14Top
1 楼Cain(一苇渡江)回复于 2004-12-01 18:38:52 得分 0
for($i=1;$i<=10;$i++)
{
$tmp = $photo_file.$i;
$photo_file=$$tmp;
$srcfile=$photo_file_name;
}
Top
2 楼__00__(文昵称)回复于 2004-12-01 19:19:15 得分 0
echo $srcfile;//为何还是空的啊.请问"$$tmp"是什么意思?
Top
3 楼Meteorlet(http://smartdict.cn)回复于 2004-12-01 20:30:09 得分 0
for($i=1;$i<=10;$i++)
{
$tmp = "photo_file$i";
$photo_file=$$tmp;
$srcfile=$photo_file_name;
}Top
4 楼wxq4100798(aa)回复于 2004-12-01 20:56:30 得分 0
for($i=1;$i<=10;$i++)
{
$photo_file=$photo_fle.$i;
$srcfile=$photo_file_name;
}
$srcfile=$photo_file_name;这句是什么?$photo_file_name在什么地方初始化的?
改为 $srcfile = $photo_file['name']试试
Top
5 楼xuzuning(唠叨)回复于 2004-12-02 08:23:20 得分 0
我用$srcfile=$photo_file_name;来取到文件名,可以
但现在我想设计一个同时上传10个图片的上传程序.
那么这10个上传的文件名应该是
$srcfile=$photo_file1_name;
$srcfile=$photo_file2_name;
$srcfile=$photo_file3_name;
$srcfile=$photo_file4_name;
...
在循环中写作(设$i为循环变量)
$srcfile=${"photo_file$i_name"};
其他类推
Top
6 楼__00__(文昵称)回复于 2004-12-02 10:36:11 得分 0
xuzuning(唠叨),你这样写也是只有空值啊.
部分原程序:
<?
if(isset($submit))
{
for($i=1;$i<=10;$i++)
{
$srcfile=${"photo_file$i_name"};
//$tmp=$photo_file.$i;
//$photo_file=$$tmp;
//$srcfile=$photo_file_name;
$filebase=basename($srcfile);
}
echo $filebase;
exit;
?>
Top
7 楼__00__(文昵称)回复于 2004-12-02 14:11:46 得分 0
这个问题问了两天了,没有人搞得定么?Top
8 楼winter699()回复于 2004-12-02 14:16:19 得分 0
这是asp的文件(是vbscript语言),你自己改成php试试看
for each formName in upload.objFile '列出所有上传了的文件
formPath=""
set file=upload.file(formName) ''生成一个文件对象
if file.filename<>"" then
if file.fileSize<=0 and file.FileSize>500000 then
response.Write("<script>alert ('对不起,上传的文件大小不符');history.go(-1)</script>")
response.End
else
file.FileName=trim(file.FileName)
Up_File_Ext=right(file.FileName,len(file.FileName)-InStrRev(file.FileName,"."))
new_file_name=now_date_array(0)+"_"+makePassword(10)+"."+Up_File_Ext
'response.write new_file_name&"<br>"
'response.End()
if LCase(Up_File_Ext) = "gif" or LCase(Up_File_Ext)="jpeg" or LCase(Up_File_Ext)="jpg" then
file.SaveAs Server.mappath(formPath&new_file_name) ''保存文件
Info_photo(i)=new_file_name
else
response.Write("<script>alert ('上传的文件类型不对!请重新上传');history.go(-1)</script>")
response.End
end if
i=i+1
end if
end if
next
Top
9 楼__00__(文昵称)回复于 2004-12-02 14:26:42 得分 0
这样改不了,语法都不同,PHP取上传文件是"文件路径_name",但vbscript可以全部作为一个对象.
我现在就是在取上传文件路径取不到.要是单单上传一个可以,以前我是把程序重复写5次(同时上传5个).但这方法确实太笨了,所以现在想用循环写.
是不是没有人这样做过?Top
10 楼__00__(文昵称)回复于 2004-12-02 14:57:12 得分 0
我这样写:
$photo_file=${"photo_file".$i};
$srcfile=$photo_file_name;
$photo_file就等于:
C:\DOCUME~1\amos\LOCALS~1\Temp\php283.tmp,照理应该对.
因为不用循环$photo_file1也等于:
C:\DOCUME~1\amos\LOCALS~1\Temp\php292.tmp
但echo $srcfile;就是空的.不用循环就正常显示:001.jpg
Top
11 楼xuzuning(唠叨)回复于 2004-12-02 15:55:41 得分 0
呵呵!忽视了下划线也是变量名的一部分
这样写
$srcfile=${"photo_file{$i}_name"};
测试代码
<?php
$photo_file1_name = 'test';
$i = 1;
echo $srcfile=${"photo_file{$i}_name"};
?>Top
12 楼wxq4100798(aa)回复于 2004-12-02 17:03:22 得分 0
晕,php什么时侯改成PHP取上传文件是"文件路径_name"啦,才半年不搞就全变样啦?Top
13 楼__00__(文昵称)回复于 2004-12-03 10:47:42 得分 0
最后知道这样才行,所以大家没有分
for($i=0;$i<=18;$i++){
if(@copy($HTTP_POST_FILES['a']['tmp_name'][$i],$HTTP_POST_FILES['a']['name'][$i]))$j++;
}
echo "上传成功 $j 个文件";Top
14 楼wxq4100798(aa)回复于 2004-12-03 11:14:41 得分 0
晕,这不是和我一样嘛,怎么会没分呢,郁闷Top




