2016-09-03 4 views
1

私はmysqlデータベースからニュース記事を公開するためにPHPを使用しています。記事には、テキスト内にイメージが配置されています。イメージは、それぞれ独自のパスとして変数として格納されます。問題は、私は常に各記事の完全な画像の補完を使用していないと私はそれを書いた方法は、壊れた画像が表示されます。変数が存在しないときにコンテンツを隠す

要するに、特定のIDに対して '$ image_ii'または '$ image_iii'が存在しないと、壊れた画像が表示されないようにするにはどうすればよいですか。

次のように私はそれが出て書かれている方法は次のとおりです。

  <?php  
      include ('connect.php');    

      $friendly_url=$_GET['friendly_url']; 
      $query = "SELECT * FROM entries WHERE friendly_url='$friendly_url'"; 
      $entries = mysql_query($query); 


      while($row = mysql_fetch_array($entries, MYSQL_ASSOC)) 
      { 
       $title = $row['title']; 
       $author = $row['author']; 
       $pub_date = $row['pub_date']; 
       $content_i = $row['content_i']; 
       $content_ii = $row['content_ii']; 
       $content_iii = $row['content_iii']; 
       $content_iv = $row['content_iv']; 
       $image_i = $row['image_i']; 
       $image_ii = $row['image_ii']; 
       $image_iii = $row['image_iii']; 
       $image_caption_i = $row['image_caption_i']; 
       $image_caption_ii = $row['image_caption_ii']; 
       $image_caption_iii = $row['image_caption_iii']; 
       $pre_link = $row['pre_link']; 
       $post_link = $row ['post-link']; 
       $id = $row['id']; 
       $friendly_url = $row['friendly_url']; 
       $american_date = date("F d, Y", strtotime($pub_date)); 
       $friendly_content_i = nl2br($content_i); 
       $friendly_content_ii = nl2br($content_ii); 
       $friendly_content_iii = nl2br($content_iii); 
       $friendly_content_iv = nl2br($content_iv); 



       echo " 
      <div id='post'> 
       <div id='post-title'>$title</div> 
       <div id='post-content' 

       $friendly_content_i   

       <div id='media'> <img src='../$image_i' class='scale-image'> </div> 
       <div id='media-caption'> $image_caption_i </div> 

       $friendly_content_ii 

       <div id='media'> <img src='../$image_ii' class='scale-image'> </div> 
       <div id='media-caption'> $image_caption_ii </div> 

       $friendly_content_iii 

       <div id='media'> <img src='../$image_iii' class='scale-image'> </div> 
       <div id='media-caption'> $image_caption_iii </div> 

       $friendly_content_iv 

      </div> 

       <div id='post-footer'> by $author <br> $american_date </div> 


       </div> 
      </div> "; 

      } mysql_close($connection); ?> 

謝罪これはひどいであれば、それは私の最初の動的なウェブサイトです。

+1

file_exists()関数を使用して画像ファイルが存在するかどうかを確認し、ファイルが存在する場合はimgを表示 – Sasikumar

+0

PHPの非推奨のmysql_ APIの使用をやめてください。私は他の人を知らないが、私は、そのコードを採用している質問に答えるのをやめただけだ。 – Strawberry

+0

ストロベリー、要点。 mysqliへの変換を開始する! –

答えて

0

は、次のスニペット

if (file_exists("../".$image_iii)) { 
    echo "<img src='../$image_iii' class='scale-image'>"; 
} else { 
    echo "<img src='../default-image' class='scale-image'>"; 
} 
+0

ありがとうございました。私は初心者ですので、私は本当にありがとうございます.- –

0

を使用してみてくださいあなたはすでにあなたの問題を解決するに私たちに語った:

「$のimage_ii」または「$のimage_iiiは、」特定のIDのために存在していないと言うならば。

if file_exists()を使用して画像が存在することを確認し、画像が存在しない場合は出力しないでください。

さらに、私はあなたがmysql_queryを使用しているのを見ています - これはの首を切ったと非常に危険です。代わりにmysqliまたはPDO

+0

ダニエルありがとう、私はあなたの意見をいただきありがとうございます。私は超初心者です。私はmysqlが減価償却され、安全でないことを理解しています。これは主に初めてPHPを使用して自分の足を濡らすことです。私はこれを書き直すか、msqliで次のプロジェクトをやり直すかと思います。私が間違っていると私を訂正してください。しかし、理解しているとおり、htaccess pwで保護されたページを介してデータベースに入力しているだけなので、SQLインジェクションの責任を負うことができます。 –

+0

@JordanBiceあなたは正しい - あなたがサイトへのアクセス権を持つ唯一の人であれば、あなたはSQLインジェクションを実行できる唯一の人ですが、間違っているのではなく、そしてそれを正しくすることに慣れなければならない。がんばろう :) – Daniel

0

私が使用して働いていた解決策を見つけることになったを使用する必要があります。

    if (!empty($image_iii)) { echo "<img src='../$image_iii' class='scale-image'>"; } 
            else { echo "";} 

あなたの種類の人々が、私はmysqliのためにオーバー交換する必要について正しいはっきりと、言った...これを見つけましたmigrating code to mysqliのための良いリソースとしてウェブサイト。回答したすべての人のおかげで、全員のコメントが役に立ちました。

関連する問題