2016-10-26 10 views
1

ユーザーのプロフィール画像を表示しています。ユーザーが自分自身を更新していない場合、デフォルトのプロフィール画像を投稿するif文を作成しました。これはすべて動作しますが、私が把握できないことは、設定されていないものに対してエラーを出さずにエコーするか、それぞれを呼び出す方法です。ifステートメントの結果を設定する

たとえば、プロファイル画像セットを持っていれば、それは正常に表示されますが、他の変数が定義されていないというエラーが表示されます。

私はコードを変更する必要がありますか?

 $pics = array(); 
     while ($stmt->fetch()) { 
      $pics[] = $profilePic; 
     } 
     if ($profilePic === NULL) { 
      $default_profile_img = '<img class="welcome-pic" src="profile_images/default.jpg">'; 
     } else { 
      $set_profile_img = '<img class="welcome-pic" src=" '.$profilePic.'">'; 
     } 
    } 
?> 
<nav id="nav-panel"> 
    <div id="nav-container"> 
      <div id="welcome"> 
       <?php echo $default_profile_img; 
       echo $set_profile_img; ?> 

EDIT:profilepicが定義されますどのように

$sql = " 
    SELECT * 
    FROM profile_img 
    WHERE user_id = ? 
    ORDER BY id DESC LIMIT 1 
    "; 
if ($stmt = $con->prepare($sql)) { 
     $stmt->bind_param("s", $user_id); 
     $stmt->execute(); 
     if (!$stmt->errno) { 
      // Handle error here 
     } 
     $stmt->bind_result($id, $user_id, $profilePic); 
+1

$ profilePicはどのように定義されますか?なぜ2つの異なるvarsをプロファイル画像に使用し、どちらが定義されているかにかかわらず、両方を出力しますか?両方とも同時に存在することはできないので、1つの変数を持つべきです。あなたはプロフィール写真を持っているか、そうではありません。 '$ pic = 'x' else {$ pic = 'y'} echo $ pic;' –

+0

これを扱う方法はたくさんあります。 1) '$ default_profile_img'の名前を' $ set_profile_img'に変更するだけです。 2)代入の前に両方の変数を空の値で初期化することができます。 3)出力する前に再確認することができます: 'echo isset($ set_profile_img)? $ set_profile_img: ''; ' –

+0

@MarcB私は、$ profilepicが私の質問にどのように定義されるかを付け加えました。 – Paul

答えて

1

ただ追加$ default_profile_img = null;および$ set_profile_img = null;がPHPコードの先頭にあります。

$default_profile_img = null; 
$set_profile_img = null; 
$pics = array(); 
    while ($stmt->fetch()) { 
     $pics[] = $profilePic; 
    } 
    if ($profilePic === NULL) { 
     $default_profile_img = '<img class="welcome-pic" src="profile_images/default.jpg">'; 
    } else { 
     $set_profile_img = '<img class="welcome-pic" src=" '.$profilePic.'">'; 
    } 
} 
?> 
<nav id="nav-panel"> 
<div id="nav-container"> 
     <div id="welcome"> 
      <?php echo $default_profile_img; 
      echo $set_profile_img; ?> 
0

このコードを試してみてください。 2つの異なる変数を使用する必要はありません。このようにして、警告は表示されません。

$pics = array(); 
while ($stmt->fetch()) { 
    $pics[] = $profilePic; 
} 
if (!isset($profilePic) OR $profilePic === NULL) { 
    $profile_img = '<img class="welcome-pic" src="profile_images/default.jpg">'; 
} else { 
    $profile_img = '<img class="welcome-pic" src=" '.$profilePic.'">'; 
} 
} 
?> 
<nav id="nav-panel"> 
    <div id="nav-container"> 
     <div id="welcome"> 
      <?php echo $profile_img; ?> 
1

あなたは、あなたがそれらの両方をエコーし​​ようとすると、それは未定義されないようにif..else文の前に変数を初期化する必要があります。

$profile_img = ""; 
$default_profile_img = ""; 

if (... 
関連する問題