如何将HTML重写为PHP回声?

时间:2013-12-11 15:54:37

标签: javascript php jquery html ajax

我正在尝试将我的上一篇文章拆分为更多部分。

我正在使用AJAX&数据库。目标是在视图中具有可单击的分区(按钮)。单击此div时,将调用AJAX查询并从我的数据库中检索5部电影并在视图中显示它们。我最挣扎的是如何设置新检索的数组,我在原始分区中使用jquery显示。

我正在尝试关注this w3schools 教程。我正在尝试根据教程中的方式重新修改我的原始样式。但我不知道如何将所有开头标签及其属性写入回声

所以,如果这里的任何人都如此善良,并且可以告诉我如何重写至少其中一些,我会非常感激。所有以评论<!--fix-->开头的行都是我需要重写的行。

编辑------------------------------------------- ---------

问题是我有一个CI视图页面。在该页面上是一个内容分部。我试图用使用xmlhttp请求检索的新内容替换此内容。请求调用与我的数据库建立连接的文件,运行查询,将结果存储在数组中,然后使用while循环回送已经拆分和样式化的结果。下面是jquery请求调用的文件的内容。

<?php
$con = mysqli_connect('localhost','root','root','obs2');
if (!$con)
  {
  die('Could not connect: ' . mysqli_error($con));
  }

mysqli_select_db($con,"obs2");
$sql="SELECT * FROM user WHERE id > 5";

$result = mysqli_query($con,$sql);

echo "<table>";
  while($row = mysqli_fetch_array($result))
  {
        <a style="display:block" href="<?php echo base_url('core/detail/'.$row->id) ?>">
            <div id="suggested" onmouseover="" style="cursor: pointer;">
                <div id="info">
                    <div id="info_center">
                        <p><b><?php echo $row->name ?></b></p>
                    </div>
                </div>

                <div class="mosaic-block fade">
                    <a href="<?php echo base_url('core/detail/'.$row->id) ?>" class="mosaic-overlay">

                    <div class="details">
                        <p><?php echo $row->summary ?></p>
                    </div>
                    </a>

                    <div class="mosaic-backdrop"><img src="http://puu.sh/5DSWj.jpg"></div>
                </div>

                <div id="info">
                    <div id="info_center">
                        <p>Rating: 7.7</p>
                    </div>
                </div>
            </div>
        </a>    

  }
echo "</table>";

?>

因此,根据我在教程中的理解,我需要回显while循环内部的每一行。而我不知道的是如何重写已经存在的所有标签和php回声。我希望这更清楚。

-------------------------------------------- --------

原始代码

<table>
  <?php foreach ($pages->result() as $row): ?>
    <a style="display:block" href="<?php echo base_url('core/detail/'.$row->id) ?>">
      <div id="suggested" onmouseover="" style="cursor: pointer;">
        <div id="info">
          <div id="info_center">
            <p><b><?php echo $row->name ?></b></p>
          </div>
        </div>

        <div class="mosaic-block fade">
          <a href="<?php echo base_url('core/detail/'.$row->id) ?>" class="mosaic-overlay">

            <div class="details">
              <p><?php echo $row->summary ?></p>
            </div>
          </a>

          <div class="mosaic-backdrop"><img src="http://puu.sh/5DSWj.jpg"></div>
        </div>

        <div id="info">
          <div id="info_center">
            <p>Rating: 7.7</p>
          </div>
        </div>
      </div>
    </a>    
  <?php endforeach; ?>
</table>

根据此

echo "<table>";
while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "<td>" . $row['Hometown'] . "</td>";
  echo "<td>" . $row['Job'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

进步

echo "<table>";
while($row = mysqli_fetch_array($result))
{
<!--fix--><a style="display:block" href="<?php echo base_url('core/detail/'.$row->id) ?>">
<!--fix--><div id="suggested" onmouseover="" style="cursor: pointer;">
<!--fix-->  <div id="info">
<!--fix-->    <div id="info_center">
                echo "<p>" . $row['name'] . "</p>";
              echo "</div>";
            echo "</div>";

<!--fix-->  <div class="mosaic-block fade">
<!--fix-->    <a href="<?php echo base_url('core/detail/'.$row->id) ?>" class="mosaic-overlay">

<!--fix-->      <div class="details">
                  echo "<p>" . $row['summary'] . "</p>";
                echo "</div>";
              echo "</a>";

<!--fix-->    <div class="mosaic-backdrop"><img src="http://puu.sh/5DSWj.jpg"></div>
            echo "</div>";

<!--fix-->  <div id="info">
<!--fix-->    <div id="info_center">
<!--fix-->      <p>Rating: 7.7</p>
              echo "</div>";
            echo "</div>";
          echo "</div>";
        echo "</a>";
}
echo "</table>";

2 个答案:

答案 0 :(得分:1)

不要遵循该教程中使用的约定。你不仅不能相信W3schools所说的一切(他们甚至在他们的免责声明中说),但它的可读性更低。特别是当你有一个属性编辑器时,你可以从HTML中的代码突出显示中受益。如果你回复所有的HTML,那将会消失。除此之外,你只是弄乱你的代码,你必须逃避每一个引用。长话短说:不要这样做。 :)

关于html中值的回声,你可以缩短它:

<?php echo base_url('core/detail/'.$row->id) ?>

到此:

<?=base_url('core/detail/'.$row->id) ?>

<?=只是一个简写。我认为它甚至可以在短开始标记(<?)被禁用时起作用,但如果您希望您的代码独立于该设置,则应验证该标记。

此外,虽然我更喜欢{ .. }样式的块,但我认为使用: ... endforeach时与HTML结合使用会更加清晰。所以我也不会改变它。

如果你确实想要改变它,你仍然需要PHP结束标记,你现在已经忘记了。所以:

while($row = mysqli_fetch_array($result)): ?>

变为:

while($row = mysqli_fetch_array($result)) 
{ ?>

当然,如果您愿意,可以将{ ?>{放在与while语句相同的行中。

[编辑] 关于你的评论:PHP标签以外的所有内容都按原样输出。所以代码:

Hello <?php echo 'lovely'; ?> world <?php /* More code without output*/ ?>

结果是短语:

Hello lovely world

正如您所看到的,在PHP标记之外放置大块纯文本/ html通常要容易得多,并且只是简单地打开和关闭PHP标记以回显一些变量内容。

答案 1 :(得分:1)

您的原始代码是正确的方法。 w3schools版本是完全错误的,你应该避免这种情况。

如果您尝试描述不能使用原始代码的内容,那么每个人都可以更好地为您提供帮助。