当我使用PHP时,一些HTML标签消失了

时间:2015-04-22 01:15:23

标签: php html mysql

我试图从mysql db生成动态内容填充 这是我的PHP代码:

<?php 
    include 'header.php'; 
    error_reporting(1);
    $user = "root";
    $pass = "";
    $dbName = "haimi";
    mysql_connect('localhost', $user, $pass) or
        die("Could not connect: " . mysql_error());
    mysql_select_db($dbName);
    $sql = "SELECT * FROM Projects ";
    $result = mysql_query($sql);
?>

<?php
    while ($line = mysql_fetch_array($result)) {
?>
        <li class="filter" data-filter=".cat<?php echo $line['Category'];?>"><?php echo $line['Category'];?></li>
<?php 
    } 
?>

li显示正确,但以下情况不正确:

<div class="row projects m0">
<?php
    while ($line = mysql_fetch_array($result)) { ?>
        <div class="project mix catHouses">
            <div class="tint"></div>
            <a href="images/projects/".<?php echo $line['ProjectImage1']; ?> data-    
lightbox="project" data-title="Central Hospital (building)">
            <img src="images/projects/".<?php echo 
$line['ProjectImage1']; ?> alt="<?php echo $line['ProjectTitle'];?>"   
class="projectImg"> </a>
            <div class="projectDetails row m0">
                <div class="fleft nameType">
                    <div class="row m0 projectName"><?php echo $line['ProjectTitle'];?></div>
                    <div class="row m0 projectType"><?php echo $line['ProjectType'];?></div>
                </div>
                <div class="fright projectIcons btn-group" role="group">
                    <a href="images/projects/<?php echo $line['ProjectImage1']; ?>" data-lightbox="project" data-title="Central Hospital   (building)" class="btn btn-default">
                    <i class="fa fa-link"></i></a>
                    <a href="#" class="btn btn-default"><i class="fa fa-    search"></i></a>
                </div>
            </div>
        </div>
<?php
    }
?>
</div>  

div中的数据不会出现。

4 个答案:

答案 0 :(得分:1)

您正在拨打一个电话,但尝试两次循环播放。为此,您需要将指针重置为开头:

//Add this after the first loop, but before the second
mysql_data_seek( $result, 0 );

你现在拥有它的方式,它是while($line = mysql_fetch_array($result)),但是第二个循环从未进入,因为它已经到了终点。由于循环结束,它从不显示内容。

重要提示 不推荐使用mysql_ *函数,并在PHP 5.5中删除它们。您应该使用MysqliPDO。他们对mysql注射有更好的保护(见Bobby Tables)。

答案 1 :(得分:1)

这里有一些HTML错误:

<a href="images/projects/".<?php echo $line['ProjectImage1']; ?>

首先,不需要使用.运算符(因为您使用的是HTML,而不是PHP), 您也应该将<?php ?>标记放在href引号内,这是正确的代码:

<a
    href="images/projects/<?php echo $line['ProjectImage1']; ?>"
    data-lightbox="project"
    data-title="Central Hospital (building)"
>
    <img
        src="images/projects/<?php echo $line['ProjectImage1']; ?>"
        alt="<?php echo $line['ProjectTitle']; ?>"   
        class="projectImg"
    >
</a>

答案 2 :(得分:0)

你会像这样快速编写代码;) 怎么样:

while ($line = mysql_fetch_array($result)) {
    $category = $line['Category'];
    echo <<< LOB
<li class="filter" data-filter="$category">$category</li>
LOB;
}

答案 3 :(得分:0)

像@matthew先生所说的那样

我打了一个电话,我试图循环两次。

在while循环之前使用此代码解决了问题:

$result = mysql_query($sql);