2016-05-15 1 views
1

whileループ内のIF STATEMENTに情報を表示する際に問題が発生しています。 while文の中にif文をエコーすることも可能ですか?助けてください!どのようにエコーするかデータベースからの文の場合

このコード

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "databasename"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 

$searchEscaped = $conn->real_escape_string($_GET['username']); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM users WHERE username = '$searchEscaped' "; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo " 
    **if(!empty($row['image2'])) { 
    <a class='example-image-link' href='pictures/".$row['image2']."' data-lightbox='example-set'><img class='example-image'src='pictures/".$row['image2']."' alt='Profile Pic'></a> 
    } 
     ";} 
} else { 
    echo "No users found"; 
} 

$conn->close(); 
?> 

答えて

3

私はあなたが必要条件が満たされた場合、エコーのみにif文の内側にあなたのエコーを移動する必要があると思う:ここ

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "databasename"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 

$searchEscaped = $conn->real_escape_string($_GET['username']); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM users WHERE username = '$searchEscaped' "; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while ($row = $result->fetch_assoc()) { 

     if (!empty($row['image2'])) { 
      echo " 
    <a class='example-image-link' href='pictures/" . $row['image2'] . "' data-lightbox='example-set'><img class='example-image'src='pictures/" . $row['image2'] . "' alt='Profile Pic'></a> 

     "; 
     } 
    } 
} else { 
    echo "No users found"; 
} 

$conn->close(); 
?> 

は次のようになり、関数の一例ですスクリプト全体で使用可能:

function print_image($row_image){ 
     if(!empty($row_image)){ 
      return " 
     <a class='example-image-link' href='pictures/" . $row_image . "' data-lightbox='example-set'><img class='example-image'src='pictures/" . $row_image . "' alt='Profile Pic'></a> 

      "; 
     } 
else{ 
     return ""; 
    } 
    } 

この機能は、あなたの声明文エコー場合、エコーの前に来る場合

echo print_image($row['image2']);

または

echo print_image($row['image3']);

+0

ありがとう!後で同じif文を持つ他のイメージがあるので、文全体をエコーし​​たいと思います。 – kenny

+0

@kennyその場合、最良の解決策は、コードを繰り返さないようにするための関数を作成することだと思います。 – bucketman

+0

@kenny私はさらに助けてくれるいくつかの追加をしました。 – bucketman

3

ザ・:のようなものをスクリプトと行います。

if ($result->num_rows > 0) 
{ 
    // output data of each row 
    while($row = $result->fetch_assoc()) 
    { 
     if(! empty($row['image2'])) 
     { 
      echo '<a class="example-image-link" href="pictures/' . $row['image2'] . '" data-lightbox="example-set"><img class="example-image" src="pictures/' . $row['image2']. '" alt="Profile Pic"></a>'; 
     } 
    } 
} 
関連する問題