PHP - 根据mysql行结果显示不同的图像

时间:2018-04-10 03:22:18

标签: php mysql if-statement

抱歉我的英文。 我学习PHP并尝试创建一个小成员区域,我认为这是一种很好的学习方式。 在我的会员区,一些会员已经过验证"有些不是。

如何使用PHP基于数据stored in Mysql显示不同的图片? 我想要的是显示"Picture1" if "1" is the value stored in a MySQL column and "Picture2" if "2"是值等等......你是"未经证实的成员"所以你看到图片1,经过验证的会员见图2 ...

我知道如何SELECT data using MySQLi但我无法找到接下来要做的事情?

谢谢。

4 个答案:

答案 0 :(得分:2)

有几种方法。如果它总是遵循一个数字系统...使用这个:

$picture = "Picture" . $verified; 
// example: $picture = "Picture1", if $verified = 1

连接的很多方法......

$pic = "Picture$verified.png"; 
$picture = "Picture" . $verified . ".jpeg"; 

这将取决于你如何设置..

switch($verified){
 case 1: 
  $picture = "Picture1";
  break;
 case 2: 
  $picture = "Picture2"; 
  break; 
 case default:
  $picture = "Picture1"; 
  break;
}

另一种方式......

if($verified == 1){ $picture = "Picture1"; } else { $picture = "Picture2"; }

switch语句或if if / else语句的原因是它可以说明已验证等于0,null或其他非1或2值,无论出于何种原因可能存储在数据库中。对于第一个示例,如果$ verified(验证列= 1或2)具有奇数值,则图片#可能实际上不是真实的。

现在,当然这只是为了处理不同的方式。您必须确保它与您的实际图像正确对齐...

$picture = "Picture1"; // would be dynamic to code above
$ext = ".png"; // optional, could be added into the $picture variable above easily too 
$filePath = "/images/user_uploads/"; // make sure path is correct
$filePathName = $filePath . $picture . $ext;
// see? We combine path/pictureName/extension to create an image URL
if(file_exists($filePathName) !== false){ // make sure exists 
 $imageCode = "<img src='$filePathName' alt='Not Found'>"; 
} else {
 // file does not exist! ut oh! 
}

答案 1 :(得分:1)

这取决于您的图像如何映射到数据库中的值,但假设您有一个简单的关系,如:

  • 1/images/1.jpg
  • 2/images/2.jpg

只需从数据库中获取数据并将其映射到变量(在我的示例中为$image),然后将其与echo语句内<img src>语句内的文件路径连接起来。 } attribute:

<img src="<?php echo '/images/' $image . '.jpg'; ?>"/>

这将输出:

<img src="/images/1.jpg"/>
<img src="/images/2.jpg"/>

基于所选图像。

现在您只需根据条件将该变量设置为正确的值:

<?php

if ($authenticated) {
  $image = 1;
}
else {
  $image = 2;
}

?>

<img src="<?php echo '/images/' $image . '.jpg'; ?>"/>

或更简洁的三元:

<?php ($authenticated ? $image = 1 : $image = 2) ?>
<img src="<?php echo '/images/' $image . '.jpg'; ?>"/>

答案 2 :(得分:1)

让我们假设你有一个名为db的数据库和一个带有列名和验证的tb的表。名称是字符串,验证是布尔值。如果用户已经过验证,则还要验证存储1;如果用户已验证,则验证存储为1。

所以,你可以通过迭代语句(使用if else或switch语句)来完成它。

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "db";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$query="SELECT * FROM `tb`";
$sql=$conn->query($query);

if($sql->num_rows>0)
{
while($row=$sql->fetch_assoc())
{
//display name
echo $row['name'];

//check if user is verified or not

//using if else statement
if($row['verify']=="0")
{
echo '<img src="./picture1.jpg">';
}
else
{
echo '<img src="./picture2.jpg">';
}

//using switch case 
switch($row['verify'])
{
case(0):
{
echo '<img src="./picture1.jpg">';
}
case(1);
{
echo '<img src="./picture2.jpg">';
}
}

//remember i have used both methods hence it will show the image twice , i did it just you possible ways , you choose any one from it.(if else or switch case)
}
}

$conn->close();

?>  

答案 3 :(得分:0)

试试这个:

<img src="<?php echo "/pictures/Picture{$number}.jpg"; ?>" />