2015-02-20 5 views
-1

У меня есть простой код для загрузки нескольких изображений, которые загружают изображение в папку и сохраняет путь к базе данных. Проблема в том, что у меня есть 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> 
+0

У меня нет знаний о PHP. Но перед тем, как перемещать файлы и обновлять базу данных, если они содержат данные, вы должны проверить свой блок uplaod, а затем выполнить соответствующие операции. –

+0

Спасибо за вашу заботу, но если у вас нет знаний о PHP, то, вероятно, этот вопрос не для вас. Еще раз спасибо. –

+0

Это не синтаксис, я вам говорю. Но логично, если вы обрабатываете пустые поля для загрузки, а затем привязываете к ошибке, как эта строка '$ extension = substr ($ _ FILES ['photo1'] ['name'], strrpos ($ _ FILES ['photo1'] [' name '],'. ')); 'если поле загрузки пуст, функция' substring' будет генерировать исключение. Опять же, что я должен знать. :) –

ответ

0

, так как и принять такое же расширение переменной $ и если третье поле обзора не будет выбрано, после отправки оно будет пустым и оно не будет введено в состояние загрузки, если это условие. Если u будет просматриваться только с третьей кнопки просмотра, то этот файл будет загружен.

+0

Позвольте мне попробовать его с расширением1, extension2 и extension3 –

+0

YUP IT WORKS :) +1 для вас .. –

0

Вы можете использовать несколько атрибутов для загрузки нескольких файлов кинуть кнопку одного обзора, например,

<input type="file" name="img" multiple> 

Вы можете использовать клавишу Ctrl для выбора нескольких изображений

+0

Я хочу пользователя 3 различных кнопки просмотра. Я не хочу использовать 1 кнопку просмотра для загрузки нескольких изображений. –

Смежные вопросы