2016-10-09 3 views
1

Wie kann ich die Buchung trennen oder ein Foto oder einen Text nicht zusammen in meine Datenbank einfügen, die mysql-Datenbank ist?Wie kann ich mit php ein Foto und einen Text einfügen?

In dieser Codezeile kann ich sowohl ein Bild als auch einen Text zusammenstellen, aber wenn ich nur ein Bild möchte, zeigt es den Fehler im Code.

<?php 
include('includes/database.php'); 
include('session.php'); 

if (!isset($_FILES['image']['tmp_name'])) { 
    echo ""; 
}else{ 
    $file=$_FILES['image']['tmp_name']; 
    $image = $_FILES["image"] ["name"]; 
    $image_name= addslashes($_FILES['image']['name']); 
    $size = $_FILES["image"] ["size"]; 
    $error = $_FILES["image"] ["error"]; 

    if ($error > 0){ 
     die("Error uploading file! Code $error."); 
    }else{ 
     if($size > 10000000){ //conditions for the file 
      die("Format is not allowed or file size is too big!"); 
     }else{ 

      move_uploaded_file($_FILES["image"]["tmp_name"],"upload/" . $_FILES["image"]["name"]);   
      $location="upload/" . $_FILES["image"]["name"]; 
      $user=$_SESSION['id']; 
      $content=$_POST['content']; 
      $time=time(); 

      $update=mysql_query(" INSERT INTO post (user_id,post_image,content,created) 
      VALUES ('$id','$location','$content','$time') ") or die (mySQL_error()); 

     } 
    header('location:home.php'); 
    } 
} 
?> 

Dies ist die Form, die dem obigen Code entspricht.

<div id="right-nav"> 
    <h1>Update Status</h1> 
    <form method="post" action="post.php" enctype="multipart/form-data"> 
     <textarea placeholder="Whats on your mind?" name="content" class="post-text" required></textarea> 
     <input type="file" name="image"> 
     <button class="btn-share" name="Submit" value="Log out">Share</button> 
    </form> 
</div> 

Vielen Dank für zukünftige Antworten.

+0

Also funktioniert der obige Code gut, aber Sie wollen nicht den '$ Inhalt' in der Datenbank speichern? –

+0

Ich möchte es speichern, aber ich möchte wie Facebook speichern oder posten. entweder ist es ein TEXT oder ein FOTO. In meinem Code. es wird nur gepostet, wenn es einen TEXT und ein FOTO gibt. – LecheDeCrema

Antwort

0

Um ein Bild oder einen Text oder beides zu sparen:

<?php 
include('includes/database.php'); 
include('session.php'); 

$user=$_SESSION['id']; 
$time=time(); 

// Content 
if(isset($_POST['content']) && !empty($_POST['content'])){ 
    $content=$_POST['content']; 
}else{ 
    $content=""; 
} 

// Image 
if (isset($_FILES['image']['tmp_name']) && !empty($_FILES['image']['tmp_name'])) { 
    $file=$_FILES['image']['tmp_name']; 
    $image = $_FILES["image"] ["name"]; 
    $image_name= addslashes($_FILES['image']['name']); 
    $size = $_FILES["image"] ["size"]; 
    $error = $_FILES["image"] ["error"]; 

    if ($error > 0){ 
     die("Error uploading file! Code $error."); 
    } 
    if($size > 10000000){ //conditions for the file 
     die("Format is not allowed or file size is too big!"); 
    } 

    move_uploaded_file($_FILES["image"]["tmp_name"],"upload/" . $_FILES["image"]["name"]);   
    $location="upload/" . $_FILES["image"]["name"]; 
}else{ 
    $location=""; 
} 

// Save to database if there is content OR an image 
// Will save both if both are present 

if(!empty($content) || !empty($location)){ 
    $update=mysql_query(" INSERT INTO post (user_id,post_image,content,created) 
    VALUES ('$id','$location','$content','$time') ") or die (mySQL_error()); 

    // Redirect to home 
    header('location:home.php'); 
} 
?> 

In allen Fällen sind die für die SQL-Abfrage benötigten Variablen setted.
Also sollte es keinen Fehler geben.

Wenn es keinen Text UND kein Bild gibt, macht das Skript einfach nichts.

+0

Vielen Dank sir :) – LecheDeCrema

+0

sir btw, können Sie die Grenze der '' verstecken? weil auch ich kein Bild hochladen gibt es eine Grenze -_- – LecheDeCrema

+0

Das heißt, ich nehme an, wenn Sie anzeigen, was in der Datenbank ist ... Ein '' hat immer noch einen Rahmen, weil es in CSS definiert ist. Es gibt mehrere mögliche Ansätze ... [Hier klicken] (http://pastebin.com/vugzv0B1). –

Verwandte Themen