2016-07-01 3 views
0

Привет, монстры программирования, Добрый день! То, что я хочу сделать, - это когда пользователь нажимает кнопку файла и загружает изображение, которое он будет обновлять, иначе, если пользователь не изменил его, просто повторите это изображение. Но когда пользователь не изменил изображение, im с ошибкой **Warning**: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\studentportal\edit2.php on line 27 Может кто-нибудь мне помочь? if(isset($_FILES['image'])) работает нормально, но else statement нет. Как я могу просто отследить это изображение, если пользователь не изменил его? Я новичок в php и начинаю изучать его, дайте мне идеи.PHP - Невозможно использовать полученные данные

Это является причиной ошибки $newsimages = $row['news_image']; в заявлении else.

else{ 
    $title = $_POST['titles']; 
    $date = $_POST['dates']; 
    $content = $_POST['contents']; 
    $newsimages = $row['news_image']; 
    $sql ="UPDATE news SET news_title ='$title', news_date ='$date', news_content = '$content', news_image ='$newsimages' WHERE news_id = '$newsid'"; 
    mysqli_query($con, $sql); 
    echo "oh it worked again "; 
} 

это весь код PHP

<?php 

include_once('connection.php'); 

$newsid = $_GET['news_id']; 

    if(isset($_POST['esubmit'])){ 
     /* create a prepared statement */ 
     if ($stmt = mysqli_prepare($con, "SELECT * FROM news WHERE news_id = ? LIMIT 1")) { 
      /* bind parameters */ 
      mysqli_stmt_bind_param($stmt, "s", $newsid); 

      /* execute query */ 
      mysqli_stmt_execute($stmt); 

      /* get the result set */ 
      $result = mysqli_stmt_get_result($stmt); 

      /* fetch row from the result set */ 
      $row = mysqli_fetch_array($result); 
     } 
    } 

    if(isset($_POST['update'])){ 

     if(isset($_FILES['image'])){ 
      $file=$_FILES['image']['tmp_name']; 
      $image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
      $image_name= addslashes($_FILES['image']['name']); 
      move_uploaded_file($_FILES["image"]["tmp_name"],"img/" . $_FILES["image"]["name"]); 
      $newsimage="img/" . $_FILES["image"]["name"]; 

      $title = $_POST['titles']; 
      $date = $_POST['dates']; 
      $content = $_POST['contents']; 
      $sql ="UPDATE news SET news_title ='$title', news_date ='$date', news_content = '$content', news_image ='$newsimage' WHERE news_id = '$newsid'"; 
      mysqli_query($con, $sql); 
      echo "oh it worked "; 
     } 
     else{ 
      $title = $_POST['titles']; 
      $date = $_POST['dates']; 
      $content = $_POST['contents']; 
      $newsimages = $row['news_image']; 
      $sql ="UPDATE news SET news_title ='$title', news_date ='$date', news_content = '$content', news_image ='$newsimages' WHERE news_id = '$newsid'"; 
      mysqli_query($con, $sql); 
      echo "oh it worked again "; 
     } 

    } 

?> 
<!DOCTYPE HTML> 
<html> 
<head> 
</head> 
<body> 

<?php 

    if(isset($_POST['esubmit'])){ 
     ?> 

     <form method="post" action ="edit2.php?news_id=<?php echo $row['news_id']; ?>" enctype="multipart/form-data"> 
      Title<input type ="text" name ="titles" value="<?php echo $row['news_title']; ?>"/><br> 
      Date<input type ="text" name="dates" value="<?php echo $row['news_date']; ?>" /><br> 
      Content<textarea name="contents"><?php echo $row['news_content']; ?></textarea> 
      <input class="form-control" id="image" name="image" type="file" accept="image/*" onchange='AlertFilesize();'/> 
      <img id="blah" src="<?php echo $row['news_image']; ?>" alt="your image" style="width:200px; height:140px;"/> 

      <input type="submit" name="update" value="Update" /> 
     </form> 

     <?php 
    } 

?> 

<script src="js/jquery-1.12.4.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 
<script type="text/javascript"> 
    function readURL(input) { 
     if (input.files && input.files[0]) { 
      var reader = new FileReader(); 

      reader.onload = function (e) { 
       $('#blah').attr('src', e.target.result); 
      } 

      reader.readAsDataURL(input.files[0]); 
     } 
    } 

    $("#image").change(function(){ 
     readURL(this); 
    }); 
    </script> 
</body> 
</html> 
+0

Вы не хотите проверять 'isset ($ _ FILES ['image']), потому что по умолчанию при отправке формы он будет установлен. Вы захотите проверить статус значения внутри этого массива '$ _FILES ['image'] ['error']', возможно. – Rasclatt

+0

Также не делайте этого, '' UPDATE news SET news_title = '$ title', news_date = '$ date', news_content = '$ content', news_image = '$ newsimage' WHERE news_id = '$ newsid' "' it подвержен SQL-инъекции. Любые символы, содержащиеся внутри значения '$ _POST', могут испортить ваш оператор sql. Используйте параметры привязки при работе с введенным пользователем вводом. – Rasclatt

+0

Обратите внимание: если у вас есть одинаковые строки как в '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. Имеются только разные/измененные элементы внутри 'if' и' else'. Сохраняет несколько строк. – Rasclatt

ответ

1

Что вы можете сделать, это удалить <img></img> из первой формы и поместить его в отдельную <form> с отдельной кнопки отправки и добавить еще php код для всего обновление изображения only.You будет иметь две формы и два обновления, как

$sql1 ="UPDATE news SET news_title ='$title', news_date ='$date', news_content = '$content' WHERE news_id = '$newsid'"; 
$sql2="update new SET new_image='$newsimages' WHERE new_id='$newsid'"; 

Я надеюсь, что вы undestand.I сделали то же самое для одного из мои веб-сайты. Я думаю, что это лучшее решение. Попробуйте его. За дополнительным запросом вы можете прокомментировать.

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