好吧所以我对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>';
}
?>
答案 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)
关于你的主要问题:
“我会将图标存储在此表中,还是将其中一个存储在其他表中?”
您尝试按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
希望我指引你朝着正确的方向前进。
编辑:由于您的修改,编辑了上面的一些句子。