У меня есть простой код для загрузки нескольких изображений, которые загружают изображение в папку и сохраняет путь к базе данных. Проблема в том, что у меня есть 3 кнопки просмотра. Сценарий загружает только файлы и сохраняет путь к базе данных, когда все три кнопки просмотра выбраны с изображениями. Но когда я выбираю только 1 изображение для загрузки, скрипт не работает. В чем дело?Ошибка загрузки нескольких файлов
Вот мой текущий сценарий.
<?php
include'includes/db.php';
if(isset($_POST['submit'])){
$extension = substr($_FILES['photo1']['name'],
strrpos($_FILES['photo1']['name'], '.'));
$extension = substr($_FILES['photo2']['name'],
strrpos($_FILES['photo2']['name'], '.'));
$extension = substr($_FILES['photo3']['name'],
strrpos($_FILES['photo3']['name'], '.'));
$extension = strtolower($extension);
echo $extension;
if($extension == ".jpg" || $extension == ".jpeg" || $extension == ".gif" || $extension == ".png")
{
$img1=$_FILES['photo1']['name'];
$img2=$_FILES['photo2']['name'];
$img3=$_FILES['photo3']['name'];
$size=$_FILES['photo']['size'];
$type=$_FILES['photo']['type'];
$temp1=$_FILES['photo1']['tmp_name'];
$temp2=$_FILES['photo2']['tmp_name'];
$temp3=$_FILES['photo3']['tmp_name'];
$limit_size = 1024000;
$size_in_kb = 1024;
$max_size = $limit_size/$size_in_kb;
if($size > $limit_size)
{
echo "<script>location.replace('test.php?err=File size exceeds $max_size KB')</script>";
}
else
{
move_uploaded_file($temp1,"images/".$img1);
move_uploaded_file($temp2,"images/".$img2);
move_uploaded_file($temp3,"images/".$img3);
$sql2="INSERT INTO ad_images(image1, image2, image3)VALUES('$img1', '$img2', '$img3')";
$res2=mysql_query($sql2);
if($res2){
echo "<script>location.replace('test.php?success=Product added successfuly')</script>";
}else{
echo "<script>location.replace('test.php?vlx=Error. Try Again...')</script>";
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Script Testing</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<p> Upload Image<br />
<input type="file" name="photo1" id="photo"><br />
<input type="file" name="photo2" id="photo"><br />
<input type="file" name="photo3" id="photo"><br />
<input type="submit" name="submit" id="submit" value="Add Product" style="margin-top: 25px; margin-left: 335px;"/>
</p>
</body>
</html>
Я не понимаю, что не так в моем коде, все кажется прекрасным. Пожалуйста помоги.
************ *************** решаемые
я использовал то же переменное расширение. Теперь решено.
Вот мой новый код.
<?php
include'includes/db.php';
if(isset($_POST['submit'])){
$extension1 = substr($_FILES['photo1']['name'],
strrpos($_FILES['photo1']['name'], '.'));
$extension2 = substr($_FILES['photo2']['name'],
strrpos($_FILES['photo2']['name'], '.'));
$extension3 = substr($_FILES['photo3']['name'],
strrpos($_FILES['photo3']['name'], '.'));
$extension1 = strtolower($extension1);
echo $extension1;
$extension2 = strtolower($extension2);
echo $extension2;
$extension3 = strtolower($extension3);
echo $extension3;
if($extension1 == ".jpg" || $extension1 == ".jpeg" || $extension1 == ".gif" || $extension1 == ".png" ||
$extension2 == ".jpg" || $extension2 == ".jpeg" || $extension2 == ".gif" || $extension2 == ".png" ||
$extension3 == ".jpg" || $extension3 == ".jpeg" || $extension3 == ".gif" || $extension3 == ".png")
{
$img1=$_FILES['photo1']['name'];
$img2=$_FILES['photo2']['name'];
$img3=$_FILES['photo3']['name'];
$size=$_FILES['photo']['size'];
$type=$_FILES['photo']['type'];
$temp1=$_FILES['photo1']['tmp_name'];
$temp2=$_FILES['photo2']['tmp_name'];
$temp3=$_FILES['photo3']['tmp_name'];
$limit_size = 1024000;
$size_in_kb = 1024;
$max_size = $limit_size/$size_in_kb;
if($size > $limit_size)
{
echo "<script>location.replace('test.php?err=File size exceeds $max_size KB')</script>";
}
else
{
move_uploaded_file($temp1,"images/".$img1);
move_uploaded_file($temp2,"images/".$img2);
move_uploaded_file($temp3,"images/".$img3);
$sql2="INSERT INTO ad_images(image1, image2, image3)VALUES('$img1', '$img2', '$img3')";
$res2=mysql_query($sql2);
if($res2){
echo "<script>location.replace('test.php?success=Product added successfuly')</script>";
}else{
echo "<script>location.replace('test.php?vlx=Error. Try Again...')</script>";
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Script Testing</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<p> Upload Image<br />
<input type="file" name="photo1" id="photo"><br />
<input type="file" name="photo2" id="photo"><br />
<input type="file" name="photo3" id="photo"><br />
<input type="submit" name="submit" id="submit" value="Add Product" style="margin-top: 25px; margin-left: 335px;"/>
</p>
</body>
</html>
У меня нет знаний о PHP. Но перед тем, как перемещать файлы и обновлять базу данных, если они содержат данные, вы должны проверить свой блок uplaod, а затем выполнить соответствующие операции. –
Спасибо за вашу заботу, но если у вас нет знаний о PHP, то, вероятно, этот вопрос не для вас. Еще раз спасибо. –
Это не синтаксис, я вам говорю. Но логично, если вы обрабатываете пустые поля для загрузки, а затем привязываете к ошибке, как эта строка '$ extension = substr ($ _ FILES ['photo1'] ['name'], strrpos ($ _ FILES ['photo1'] [' name '],'. ')); 'если поле загрузки пуст, функция' substring' будет генерировать исключение. Опять же, что я должен знать. :) –