2016-10-19 9 views
-1

以下のクエリでは、ユーザーのプロフィール画像を選択して出力しようとしています。私の挿入クエリと選択クエリが動作しています(私は信じています)。今、私はイメージをアップロードすることができ、ユーザーのuser_idはデータベースのイメージに関連付けられています。次に、私の選択したクエリで、そのユーザーに関連付けられているイメージを選択しようとしています。select query issueの出力

私のデータベースはシンプルで、その中には次のものしかありません... id, user_id, img

私はここで、問題は私の出力に存在することができると信じて:

<img id="profile-pic" src="<?php echo (!empty($profPic) && $profPic != 0)? $profPic['img'] : "profile_images/default.jpg"; ?>" alt="<?php echo (!empty($profPic) && $profPic != 0)? "Profile Picture" : "No Picture"; ?>" /> 

私はちょうど私が間違っているのかわかりません。私はこれを間違って出力している場合誰も参照してください?今、デフォルトの画像はページの読み込み時に読み込まれますが、ユーザーの画像をアップロードすると表示されますが、ページをリロードすると画像はデフォルトに戻ります。

function getPhoto($con,$dest) 
    { 
     $user_id = (isset($_SESSION['user']) ? $_SESSION['user'] : ""); //added 

     $result = mysqli_query($con,"SELECT * FROM `profile_img` where `user_id` = '$user_id' ORDER BY `id` DESC LIMIT 1"); 

     if($row = mysqli_fetch_array($result)) 
      return $row; 

     return 0; 
    } 


// Make sure all functions above are include here 

// Get the database connection 
$con  = Connection(); 
// Check for post 
if(isset($_POST['create'])) { 
     // Try uploading 
     $upload = UploadFile($_FILES); 
     // If upload fails 
     if(!$upload['success']) 
      echo '<h3>Sorry, an error occurred</h3>'; 
     else { 
       // You could add error handling here based on the results of 
       // each function's success or failure below. 

       // Try to save it 
       $saveToDb = SaveToDb($con,$upload['file']['dest']); 
       // Get the profile from image name 
       $profPic = ($saveToDb)? getPhoto($con,$upload['file']['dest']) : false; ?> 


       <?php 
      } 
    } 
?> 
<img id="profile-pic" src="<?php echo (!empty($profPic) && $profPic != 0)? $profPic['img'] : "profile_images/default.jpg"; ?>" alt="<?php echo (!empty($profPic) && $profPic != 0)? "Profile Picture" : "No Picture"; ?>" /> 
<form action="" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file" class="inputbarfile" onchange="readURL(this);"> 
    <img width="400px" height="300px" id="file" src="#" alt="your image"> 
    <input type="submit" name="create" id="signinButton" value="Upload"> 
</form> 
+0

変更あなたの' getPhotoで戻り値() '画像列の代わりに列全体を返すだけです –

+0

また、$ profPicはデータがデータベースに挿入されているかどうかを確認しています。データをリフレッシュすると、データベースにデータが挿入されないため、デフォルトが表示されます。したがって、データベースからデータを取り出すだけの '$ profPic'に無条件のステートメントを割り当ててください。 –

+0

これを行うと、アップロードされた写真が表示(選択)されなくなります。 – Becky

答えて

1

$profPicを呼び出すと、ページの更新時にデータが挿入されないため、ページの更新時にデータが表示されません。

いやあなただけにそれを変更することができます:あなた以上のあなたの結果で$行[ 'IMG'] ``に$ row` `リターンから

$profPic = getPhoto($con,$dest); 
-1

はあなたのフォームの提出にごgetPhoto()関数を呼び出しているコードを確認し、それは明らかにあなたがそのがif (isset($_POST['create']))に呼び出されていないtrigerページのリフレッシュにfalseになりますれる機能ページを更新するとき。

毎回画像を表示する場合は、毎回画像を表示する$_SESSION['user']でこの機能を呼び出してください。

まだ問題がある場合は教えてください。