如何将HTML重写为PHP回声


How to rewrite HTML in to PHP echoes?

我正试图将我的上一篇文章分成更多的部分。

我正在使用AJAX&数据库目标是在视图中有一个可点击的分区(按钮)。单击此div时,将调用AJAX查询,并从我的DB中检索5部电影,并将它们显示在视图中。我最头疼的是如何对新检索到的数组进行样式设置,我在原始分区中使用jquery显示该数组。

我正在尝试遵循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>";

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

如果你试图描述原始代码不起作用的地方,每个人都会更好地帮助你。

不要遵循该教程中使用的约定。你不仅不能相信W3schools所说的一切(他们甚至在免责声明中这样说),而且它的可读性较差。特别是当您有一个属性编辑器时,您可以从HTML中的代码高亮显示中受益。如果你回显所有的html,它就会消失。除此之外,你只是把代码弄得一团糟,你必须转义每一句话。长话短说:不要那样做

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

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

到此:

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

<?=只是一个简写。我认为它甚至在短开口标记(<?)被禁用时也能工作,但如果你希望你的代码独立于该设置,你应该验证这一点。

此外,尽管我更喜欢{ .. }风格的块,但我认为与HTML结合使用: ... endforeach会更清晰。所以我也不会改变。

如果您确实想更改它,您仍然需要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

因此,正如您所看到的,将大块的纯文本/html放在PHP标记之外,并且只短暂地打开和关闭PHP标记来回显一些可变内容,通常会容易得多。