2016-04-23 2 views
0

Для части проекта, которую я выполняю, у меня будут пользователи загружать информацию о паре обуви вместе с изображением указанной пары. Форма позволяет им заполнить информацию, такую ​​как бренд, модель, год и размер, а затем загрузить изображение.PHP-форма отправляет все в базу данных, кроме изображения

Когда я проверяю его, и я проверяю базу данных, я получаю всю информацию о обуви, за исключением изображения. Я изучил несколько вопросов, таких как this one о том, как загрузить изображение в базу данных, поэтому я знаю, что мне нужно установить атрибут изображения в таблицу на blob, что я и сделал, и команда SQL выглядит довольно простой. Единственное, что я не хочу загружать, это имя_файла, потому что я не считаю это релевантным или уместным для моего проекта.

Я знаю, что некоторые люди скажут, что не загружают изображение в базу данных, но с точки зрения моего проекта мне немного легче загрузить его в базу данных по сравнению с хранением его в папке, а затем перемещать Это.

Вот мой код для формы ниже.

Shoe.php:

<?php 
session_start(); 

require 'connect.php'; 

if (! isset ($_SESSION ['user']) || ! isset ($_SESSION ['logged_in'])) { 
    header ("Location: login.php"); 
} 

$sql = "SELECT * FROM users WHERE Username = :username"; 
$stmt = $pdo->prepare ($sql); 

// Bind value. 
$stmt->bindValue (':username', $_SESSION ['user']); 

// Execute. 
$stmt->execute(); 

// Fetch row. 
$user = $stmt->fetch (PDO::FETCH_ASSOC); 

$image = addslashes (file_get_contents ($_FILES ['image'] ['tmp_name'])); 

if (isset ($_POST ["post"])) { 

    $brand = ! empty ($_POST ['brand']) ? trim ($_POST ['brand']) : null; 
    $model = ! empty ($_POST ['model']) ? trim ($_POST ['model']) : null; 
    $year = ! empty ($_POST ['year']) ? trim ($_POST ['year']) : null; 
    $size = ! empty ($_POST ['size']) ? trim ($_POST ['size']) : null; 

    $sql = "INSERT INTO shoe (Brand, Model, Year, Size, UserID, Image) VALUES (:brand, :model, :year, :size, :userID, :image)"; 
    $stmt = $pdo->prepare ($sql); 

    // Bind our variables. 
    $stmt->bindValue (':brand', $brand); 
    $stmt->bindValue (':model', $model); 
    $stmt->bindValue (':year', $year); 
    $stmt->bindValue (':size', $size); 
    $stmt->bindValue (':image', $image); 
    $stmt->bindValue (':userID', $user ['UserID']); 

    // Execute the statement and insert the new shoe information. 
    $result = $stmt->execute(); 

} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Post Shoes</title> 
<!-- Bootstrap core CSS --> 
<link href="css/bootstrap.min.css" rel="stylesheet"> 
<!-- Index Custom CSS --> 
<link href="css/profile.css" rel="stylesheet"> 
<!-- Animate.css --> 
<link href="css/animate.css" rel="stylesheet"> 
<!-- Custom styles for this website --> 
<link href="css/custom.css" rel="stylesheet"> 
<link href='https://fonts.googleapis.com/css?family=Fugaz+One' 
    rel='stylesheet' type='text/css'> 
<link href='https://fonts.googleapis.com/css?family=Fjalla+One' 
    rel='stylesheet' type='text/css'> 
</head> 
<body> 
    <nav class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container-fluid"> 
     <div class="navbar-header"> 
      <a href="profile.php" class="navbar-brand animated fadeInLeft"><?php echo $user['firstName'], " ", $user['lastName'];?></a> 
     </div> 
     <div id="navbar" class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav navbar-right animated fadeInRight"> 
       <li><a href="home.php">CLOSET</a></li> 
       <li><a href="shoe.php">POST</a></li> 
       <li><a href="search.php">SEARCH</a></li> 
       <li><a href="settings.php">SETTINGS</a></li> 
       <li><a href="#">HELP</a></li> 
       <li><a class="logout" href="logout.php">LOGOUT</a></li> 
      </ul> 
     </div> 
    </div> 
    </nav> 
    <div class="container"> 
     <div class="col-md-8 col-md-offset-2 profile"> 
      <h1 class="profile-header">Post Shoes</h1> 
      <h3 class="">Post information about the shoes you wish to trade.</h3> 
     </div> 
    </div> 
    <form class="form-horizontal" role="form" method="post" 
     action="shoe.php"> 
     <div class="form-group"> 
      <label for="inputBrand" 
       class="col-md-2 col-md-offset-2 control-label">Brand</label> 
      <div class="col-md-4"> 
       <input type="text" class="form-control" id="inputBrand" name="brand" 
        placeholder="Adidas"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label for="inputModel" 
       class="col-md-2 col-md-offset-2 control-label">Model</label> 
      <div class="col-md-4"> 
       <input type="text" class="form-control" id="inputModel" name="model" 
        placeholder="Superstar II"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label for="inputYear" class="col-md-2 col-md-offset-2 control-label">Year</label> 
      <div class="col-md-4"> 
       <input type="text" class="form-control" id="inputYear" name="year" 
        placeholder="2015"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label for="inputSize" class="col-md-2 col-md-offset-2 control-label">Size</label> 
      <div class="col-md-4"> 
       <input type="text" class="form-control" id="inputSize" name="size" 
        placeholder="13"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label for="uploadImage" 
       class="col-md-2 col-md-offset-2 control-label">Picture</label> 
      <div class="col-md-4"> 
       <input type="file" name="image" id="image"> 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-md-offset-4 col-md-2"> 
       <button type="submit" name="post" class="btn btn-default">Post</button> 
      </div> 
     </div> 
    </form> 
    <div class="container"> 
     <div class="col-md-8 col-md-offset-2"> 
      <h3 id="signUpMessage"></h3> 
     </div> 
    </div> 
</body> 
</html> 

Следует также отметить, что, когда я проверить форму, я получаю это сообщение заранее:

Warning: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\SneakerTrade\shoe.php on line 26 

Что я отсутствует, или не правильно делать Вот? Любая помощь приветствуется.

+0

var_dump ($ изображения) и проверьте результат – IamFaysal

ответ

1

Я также думаю, что вы должны сохранить изображение в файл и связать его с каким-то регистр (для например, сохранение имени файла в db).

Но если вы хотите, чтобы ваш текущий код работал, вероятно, проблема в форме. Добавьте следующий атрибут в виде тега:

enctype="multipart/form-data" 
+0

что сделал трюк. Благодарю вас. –

+0

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

0

лучше, чтобы загрузить изображение на сервер и сохранить его как идентификатор строки ID.jpg

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