2016-04-23 4 views
0

Für einen Teil eines Projekts, das ich mache, werde ich Benutzer Informationen über ein Paar Schuhe hochladen, zusammen mit einem Bild des genannten Paares. In einem Formular werden Informationen wie Marke, Modell, Jahr und Größe ausgefüllt und anschließend ein Bild hochgeladen.PHP Formular sendet alles an die Datenbank außer Bild

Wenn ich es ausprobiere, und ich überprüfe die Datenbank, bekomme ich alle Informationen über den Schuh mit Ausnahme des Bildes. Ich recherchierte ein paar Fragen wie this one darüber, wie man ein Bild in die Datenbank hochlädt, also weiß ich, dass ich das Bildattribut in der Tabelle auf Blob setzen muss, was ich getan habe, und der SQL-Befehl scheint auch ziemlich einfach zu sein. Das Einzige, was ich nicht hochladen möchte, ist der Bildname, weil ich ihn für mein Projekt nicht relevant oder relevant finde.

Ich weiß, dass einige Leute sagen, kein Bild in die Datenbank zu laden, aber in Bezug auf mein Projekt ist es etwas einfacher für mich, es in die Datenbank zu laden, als es in einem Ordner zu speichern und dann zu verschieben es.

Hier ist mein Code für das Formular unten.

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> 

Es sollte auch beachtet werden, dass, wenn ich das Formular testen, bekomme ich diese Meldung vorher:

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

Was bin ich fehlt oder nicht richtig tun Hier? Jede Hilfe wird geschätzt.

+0

var_dump ($ image) und überprüfen Sie das Ergebnis – IamFaysal

Antwort

1

Ich denke, Speichern auch Sie sollten in einer Datei das Bild speichern und in das Register verknüpfen irgendwie (für Beispiel, Speichern des Dateinamens in der db).

Aber wenn Sie Ihren aktuellen Code arbeiten möchten, ist es wahrscheinlich, dass das Problem in der Form ist. Fügen Sie dem Formular-Tag das folgende Attribut hinzu:

+0

Das hat den Trick. Dankesehr. –

+0

Das wird gesagt, in späteren Entwicklungen, werde ich in die Speicherung in einer Datei und verknüpfen es mit einem Register zu prüfen. –

0

seine besser das Bild auf den Server hochgeladen werden, und als die ID der Reihe ID.jpg

Verwandte Themen