2015-06-28 2 views
2

У меня возникли проблемы с загрузкой изображения из базы данных mysql. Каталог генерируется случайным образом и отлично хранится в базе данных. Когда страница обновляется, img возвращает неработающую ссылку, echos 'not set.', И проверяющий элемент сообщает мне, что $ default_pic не определен. Я не могу понять, что здесь происходит, может ли кто-нибудь помочь?Загрузить чтение PHP-переменная как null

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 
$listingid = $_SESSION['edit_listing']; 
if(isset($_FILES['listingpic'])){ 
    if($_FILES['listingpic']['type']=="image/jpeg"||$_FILES['listingpic']['type']=="image/png"||$_FILES['listingpic']['type']=="image/gif"){ 
     if($_FILES['listingpic']['size']<1048576){ 
      $chars = "abcdefghijklmanopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
      $rand_dir_name = substr (str_shuffle($chars), 0, 15); 
            mkdir("userdata/listingpics/$rand_dir_name/") or die("directory error"); 
      if(file_exists("userdata/listingpics/$rand_dir_name/".$_FILES['listingpic']['name'])){ 
       echo "File already exists."; 
      } 
      else{ 
       move_uploaded_file($_FILES['listingpic']['tmp_name'], "userdata/listingpics/$rand_dir_name/".$_FILES['listingpic']['name']) or die("Failed to move file."); 
       $listing_pic_name = $_FILES['listingpic']['name']; 
       $listing_pic_query = mysql_query("UPDATE properties SET default_pic='$rand_dir_name/$listing_pic_name' WHERE id='$listingid'"); 
       $check_def = mysql_query("SELECT default_pic FROM properties WHERE id='$listing_id'"); //ADDED 
       $def_rows = mysql_fetch_assoc($check_def); //ADDED 
       $def_pic = $def_rows['default_pic']; //ADDED 
       $default_pic = "userdata/listingpics/".$def_pic;//<-PROBLEM 
       header("Location: ../list_property/upload.php?id=".$listingid); 
      } 
     } else echo "File must not exceed 1MB."; 
    } else echo "File must be a JPEG, PNG, or GIF image."; 
} else echo "Not set."; 

?> 
<form action="" method="POST" enctype="multipart/form-data"> 
    <img src="<?php echo $default_pic; ?>" width="50%" height="50%"/><br> 
    <br> 
    <input type="file" name="listingpic" /> 
    <input type="submit" name="uploadpic" value="Upload Picture"> 
</form> 
+0

В начале он не будет установлен, поскольку вы заполняете форму в течение 1-го раза. –

ответ

2

Когда вы обновите страницу после того, как изображение загружено, сценарий обновляется, что означает, что ваш $default_pic получает сброс, так что он пустеет.

Если вы хотите не избавиться от этой ошибки, вы должны написать запрос, который извлекает из базы данных изображение по умолчанию и заполняет переменную.

+0

Я добавил ... $ check_def = mysql_query ("SELECT default_pic FROM properties WHERE id = '$ listing_id'"); $ def_rows = mysql_fetch_assoc ($ check_def); $ def_pic = $ def_rows ['default_pic']; $ default_pic = "userdata/listingpics /".$ def_pic; все еще получаю undefined ошибка –

+0

где вы ее добавляли? также, обновите свой код в своем исходном сообщении –

+0

Вам нужно добавить этот код в конец вашего первого оператора if (означает, что echo «not set») выполняется, потому что, когда ни один файл не загружается, первый оператор if не pass, thats, где вы говорите else {fetch default pic from mysql} –