我正试图将我的上一篇文章分成更多的部分。
我正在使用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标记来回显一些可变内容,通常会容易得多。