php if语句的问题

时间:2013-12-19 20:20:22

标签: php mysql

好吧所以我对php很新。我正在制作一个列出不同景点的网站,我有一个详细信息页面,其中显示存储在mysql数据库中的每个景点的信息。我正在尝试写一个if语句,这样一个图标就会显示相关景点是否有残疾人设施等等。我在数据库中有一个表的景点,类型,设施和faciliteslink。

在facilitieslink中我有列: AttractionID FacilityID

在工厂表中

我有: FacilityID FalilityName

在景点表中我有: AttractionID 名称 总结等...

这里也是我试图制作的if语句和查询         

$myQuery  = "SELECT Attraction.*, Type.TypeName ";
$myQuery .= "FROM Attraction ";
$myQuery .= "INNER JOIN Type ON Attraction.Type = Type.TypeID ";
$myQuery .= "WHERE AttractionID=" .$_GET['ID'];

//run query
$result = $con->query($myQuery);
if (!$result) die('Query error: ' . mysqli_error($result));
?>
<?php
    $myQuery .= "INNER JOIN Type ON Attraction.AttractionID = facilitieslink.FacilityID    ";
 ?>

<?php
            //display attractions row by row
            while($row = mysqli_fetch_array($result))
            {

    echo '<div class=" sixteen columns" id="attraction-details">';
    echo    '<h3><a href="attractions.php">Attractions/<a href="details.php?ID=' . $row['AttractionID'] . '">' . $row['Name'] . '</a></a></h3>';
    echo    ' <div class="eight columns" id="big-a-image1">';
    echo        ' <img src="'. $row['ImageUrl'] . '"/>';
    echo    ' </div>';
    echo    ' <div class="eight columns" id="big-a-image2">';
    echo        ' <img src="'. $row['ImageUrl2'] . '"/>';
    echo    ' </div>';
    echo    ' <div class="eight columns" id="big-a-image3">';
    echo        ' <img src="'. $row['ImageUrl3'] . '"/>';
    echo    ' </div>';
    echo    ' <div class="eight columns" id="big-a-image4">';
    echo        ' <img src="'. $row['ImageUrl4'] . '"/>';
    echo    ' </div>';
    echo'               <div class="two columns" id="m-thumb1">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl'] . '"/></a>';
    echo'               </div>';
    echo'               <div class="two columns" id="m-thumb2">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl2'] . '"/></a>';
    echo'               </div>';
    echo'               <div class="two columns" id="m-thumb3">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl3'] . '"/></a>';
    echo'               </div>';
    echo'               <div class="two columns" id="m-thumb4">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl4'] . '"/></a>';
    echo'               </div>';
    echo        ' <div class="eight columns" id="a-description">';
    echo'           <h4> Attraction Description </h4>';
    echo            ' <p class="para"> ' . $row['Description'] . ' </p></a>';
    echo        ' </div>';
    echo'               <div class="two columns" id="thumb1">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl'] . '"/></a>';
    echo'               </div>';
    echo'               <div class="two columns" id="thumb2">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl2'] . '"/></a>';
    echo'               </div>';
    echo'               <div class="two columns" id="thumb3">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl3'] . '"/></a>';
    echo'               </div>';
    echo'               <div class="two columns" id="thumb4">';
    echo'                   <a href="#"><img src="'. $row['ImageUrl4'] . '"/></a>';
    echo'               </div>';

// everything else works apart from this    
        $id = $row["AttractionID"];
            if ($row['FacilityID'] == 1){
    echo'   <img src="'. $row['icon'] . '"/>';
            }
            else



    echo'</div>';

    echo'       <div class="eight columns" id="directions">';
    echo'               <h3>Directions</h3>';
    echo'               <p class="para"> ' . $row['Address'] . ' </p>';
    echo'       </div>';
    echo'       <div class="eight columns" id="video">';
    echo'               <h3>Video</h3>';
    echo'                ' . $row['VideoEmbed'] . ' ';
    echo'       </div>';


    echo'               <div class="eight columns" id="contact">';
    echo'                   <h3 id="con"> Contact </h3>';
    echo'                   <p class="para"> ' . $row['Long'] . ' </p>';
    echo'               </div>';                    
    echo'   <div class="eight columns" id="opening-times">';
    echo'       <h3 id="open"> Opening times </h3>';
    echo        ' <p class="para"> ' . $row['OpeningHours'] . ' </p>';
    echo'   </div>';
}


    ?>

2 个答案:

答案 0 :(得分:0)

你应该检查这个查询是否合适,因为我不确定。

代码应该是这样的......假设桌子是“吸引力”

// Define query
$query = "SELECT * FROM  `facilitieslinks` WHERE  `AttractionID` = '".$_GET['ID']."'";

// Create connection
             $con=mysqli_connect("localhost","&&&&&YOURUSERNAME&&&&&","&&&&&YOURPASSWORD&&&&&","&&&&&YOURDATABASE&&&&&");

// Check connection
if (mysqli_connect_errno($con))
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

//Execute the query to the DB
$result = mysqli_query($con,$query);

//Process data
while($row = mysqli_fetch_array($result))
{
    $id = $row['AttractionID'];
    if ($row['FacilityID']==1) 
    {
    echo "<img src=\"".$row['icon'].\"">";
    }
}

// Close the connection 
mysqli_close($con);

答案 1 :(得分:0)

关于你的主要问题:

  

“我会将图标存储在此表中,还是将其中一个存储在其他表中?”

  • 哪张桌子是“这张桌子”?您现在已经提到了3个表(吸引力,设施和类型)
  • 这个图标会显示什么?这个问题的答案可以告诉你,数据属于哪里:类型或吸引力。每个景点都有另一个图标吗?或类型告诉你,你必须选择哪个图标?

您尝试按FacilityID加入类型,另一次加入TypeID。在您的表中是否都是唯一类型?否则,您将获得相同吸引力的多行。由于您的编辑我现在知道您想加入第三个表:设施。你必须写INNER JOIN facilitylink ON Attraction.FacilityId = facilitylink.FacilityID INNER JOIN Facility ON facilityLink.FacilityId = Facility.FacilityId来解决你的连接问题。但请注意,您可能会获得上面提到的多行吸引力。此外,由于内部连接的属性,您将丢失没有设施的吸引力信息。也许您应该将第一个INNER JOIN切换为LEFT JOIN,这将对未知设施产生NULL分配。不要忘记将您需要的信息(Icon,FacilityId)添加到SELECT-Part。我建议您搜索有关如何编写选择语句的更多信息以及Statement部分将产生的影响。

SQL语句的语法搞砸了,因为你在Where-part之后追加(PHP-Operator .=)一个Join-Part。你不执行被操纵的查询,在这种情况下需要操纵吗?更改在Query-Command之前附加Join-Part的位置,并调整Order以获得正确的SELECT-Statement。

您正在向查询(.$_GET['ID'])添加用户生成的输入,但没有正确转义。这是一个非常常见的初学者失败。请查看“SQL注入”主题,并使用“预处理语句”

来防止这种情况

您的$row['icon'] 的内容直接附加直接生成的HTML 。是由用户给出的内容还是您生成/声明它?在第一种情况下,您应该使用htmlspecialchars($row['icon'])

将其转义

你没有正确启动php文件。我认为你削减了一些代码,但以防万一:所有的PHP代码都需要落后于<?php?>将命令解释器停止解释php代码。新的<?php将再次启动解释器。

<p> HTML-Code here
<?php
  echo "PHP-Code here";
  echo "more PHP-Code here";
  echo "much more PHP-Code here";
?> </p><p>some more html code </p><?php echo "and some PHP-Code again";
  echo "but this time until the Ent of the File!";

这也意味着,您的示例中有一些冗余代码:

?>
<?php

希望我指引你朝着正确的方向前进。

编辑:由于您的修改,编辑了上面的一些句子。