2017-07-25 5 views
0

Ich versuche, eine Profilseite einzurichten, wo Benutzer ein Profilbild hochladen kann. Das Problem, das ich habe ist, dass, wenn der Status von 1 auf 0 geändert wird, das Bild von einem Standardprofilbild zu einem kleinen schwarzen Kasten mit einem "x" darin wechselt. Alles andere funktioniert gut. Ich dachte, es könnte das CSS sein, aber das ist es nicht. Wenn jemand helfen kann, würde es sehr geschätzt. Vielen Dank.Profilbild zeigt nur schwarze Box mit einem "X" innerhalb

profile.php:

<?php 
    $id= $_GET['id']; 
    $sql = "SELECT * FROM user WHERE id='$id'"; 
    $result = mysqli_query($conn, $sql); 
    if (mysqli_num_rows($result) > 0) { 
     while ($row = mysqli_fetch_assoc($result)) { 
     $sqlImg = "SELECT * FROM profileImg WHERE id='$id'"; 
     $resultImg = mysqli_query($conn, $sqlImg); 
     while ($rowImg = mysqli_fetch_assoc($resultImg)) { 
      echo "<div class='userProfileImage'>"; 
       if ($rowImg['status'] == 0) { 
        echo "<img src='images/profile".$id.".jpg'>"; 
       } else { 
        echo "<img src='images/profile_default.jpg'>"; 
       } 
       echo "<p>".$row['first']."</p>"; 
      echo "</div>"; 
     } 
    } 
}  else { 
      echo "There are no users yet!"; 
     } 

uploadProfile.php:

<?php 
session_start(); 
include '../dbh.php'; 
$id = $_SESSION['id']; 
$userID = $id; 



if (isset($_POST['submit'])) { 
    $file = $_FILES['file']; 

    $fileName = $_FILES['file']['name']; 
    $fileTmpName = $_FILES['file']['tmp_name']; 
    $fileSize = $_FILES['file']['size']; 
    $fileERROR = $_FILES['file']['error']; 
    $fileType = $_FILES['file']['type']; 

    $fileExt = explode('.', $fileName); 
    $fileActualExt = strtolower(end($fileExt)); 

    $allowed = array('jpg', 'jpeg', 'gif', 'png', 'mov', 'mpeg4', 'mp4', 'avi', 'wmv', 'mpegps', 'flv', '3gpp', 'webm'); 

    if (in_array($fileActualExt, $allowed)) { 
     if ($fileERROR === 0) { 
      if ($fileSize < 500000) { 
       $fileNameNew = "profile".$id.".".$fileActualExt; 
       $fileDestination = '../uploads/'.$fileNameNew; 
       $sql = "UPDATE profileImg SET status=0 WHERE id='$id'"; 
       $result = mysqli_query($conn, $sql); 
       move_uploaded_file($fileTmpName, $fileDestination); 
       header("Location: ../profile.php?id=$userID"); 
      } else { 
       echo "Your file is too large"; 
      } 

     } else { 
      echo "There was an error uploading your file"; 
     } 
    } else { 
     echo "You cannot upload files of this type"; 
    } 
} 

?> 
+0

Nun, entweder bedeutet das, dass Sie ein beschädigtes Bild gespeichert haben, oder - wahrscheinlicher - Sie haben den Pfad nicht korrekt ausgegeben. Beginne damit, das letztere zu überprüfen. – CBroe

+0

werden verschiedene Erweiterungen sein? "profile". $ id. ".". $ fileActualExt in speichern und $ id. ". jpsg" in html –

Antwort

2

Dateien werden unter

$fileDestination = '../uploads/'.$fileNameNew; 

und img src zu Uploads als Linie hochgeladen werden
echo "<img src='images/profile".$id.".jpg'>";

Bitte aktualisieren Sie den Code.

Edit: Sie erlauben mehrere Erweiterungen hochgeladen werden und auf profile.php einzelne Erweiterung wird verwendet, um das Bild zu laden.

+1

Ich werde das tun. Vielen Dank. Ich kann nicht glauben, dass ich die Wege verpasst habe. Ich werde die Erweiterungen auch reparieren. Danke noch einmal. –