使用当前的代码,效率非常低,令人困惑,而且似乎缺乏性能。
我可以在MySQL查询或PHP中改进,以使这些代码更容易,更少[在所有地方]。
是否有更好的方法来替换我目前正在尝试完成的任务,即从数据库[根据iD]检索信息并显示它们。我的问题主要是基于foreach。
Posts table
+---------------+
|Post_iD |
|message |
|uid_fk |
|tagged_people |
|_iP |
|created |
|uploads |
+---------------+
- > load_messages.php - >
<?php
$lastid = "";
if ($lastid == '')
$lastid = 0;
if ( $_iD ) {
$updatesarray = $Wall->Updates($_iD, $lastid);
$total = $Wall->Total_Updates($_iD);
} else {
$updatesarray = $Wall->Friends_Updates($_iD, $lastid);
$total = $Wall->Total_Friends_Updates($_iD);
}
if ($updatesarray) {
foreach ($updatesarray as $data) {
$post_iD = $data['post_iD'];
$orimessage = $data['message'];
$message = tolink(htmlcode($data['message']));
$time = $data['created'];
$mtime = date("g:i", $time);
$_iUsername = $data['_iUsername'];
$uploads = $data['uploads'];
$msg_uid = $data['uid_fk'];
?>
<ul class="_Om" id="stbody<?php echo $post_iD;?>">
<li>
<div class="_VC">
<div class="stimg">
<img src="<?php echo $Profile_Pic;?>" class='picture' alt='<?php echo $_iUsername;?>'/>
</div>
<div class="">
<b class="timeago">
<?php echo $_iUsername;?> ·
<a href='<?php echo $base_url ?>status/<?php echo $post_iD; ?>'title='<?php echo $time;?>' class="timeposted">
<?php echo $mtime;?>
</a>
</b>
</div>
<div class="body_text">
<?php echo clear($message);?>
</div>
<?php
if ($uploads) {
echo "<div style='margin-top:10px'>";
$s = explode(",", $uploads);
foreach ($s as $a) {
$newdata = $Wall->Get_Upload_Image_Id($a);
if ($newdata)
echo "<a href='uploads/" . $newdata['image_path'] . "' rel='facebox'><img src='uploads/" . $newdata['image_path'] . "' class='imgpreview' /></a>";
}
echo "</div>";
}
?>
<div class="stexpandbox">
<div class="stexpand<?php echo $post_iD;?>">
<?php
if (textlink($orimessage)) {
$link = textlink($orimessage);
echo Expand_URL($link);
}
?>
</div>
</div>
<?php if ($_iD == $msg_uid) { ?>
<a class="stdelete" href="#" id="<?php echo $post_iD;?>" title="Delete Update"></a>
<?php } ?>
</div>
</li>
</ul>
<?php } if ($total > $perpage) { ?>
<div id="more<?php echo $post_iD;?>" class="morebox">
<a href="#" class="more" id="<?php echo $post_iD;?>">More</a>
</div>
<?php } } else echo '<h3 id="noupdates">No Updates!</h3>';?>
数据库查询(Updates,Total_Updates,Friends_Updates,Total_Friends_Updates)
http://pastie.org/private/j66vwnsfyk1fai7zlnrrg
答案 0 :(得分:2)
让我告诉你我的想法。
效率非常低
从头开始重新编码,希望你会发现一些设计缺陷。也许你可以停下来:
$post_iD = $data['post_iD'];
从我所看到的,这些东西在同一个循环中,所以只需使用关联数组。
<强>混淆强>
尝试使用MVC架构模式并为您的代码添加一些注释。 MVC应该有很多帮助,功能可以走很长的路。
而且:
<?php if ($_iD == $msg_uid) { ?>
<a class="stdelete" href="#" id="<?php echo $post_iD;?>" title="Delete Update"></a>
<?php } ?>
是删除的锚点还是不删除?因为它似乎缺少一些文字。除非那个样式的CSS在顶部的同一页面上?从我的观点来看,你所做的与嵌入css没有什么不同。我想
<?php
if ($_iD == $msg_uid) {
echo '<a class="stdelete" href="#" id="'.$post_iD.'" title="Delete Update">Delete</a>';
}
?>
对大多数程序员来说更具可读性。
缺乏表现
提前规划您的系统,编写更好的查询,只选择它需要的内容,如果失败,请确定帖子的重要性。如果你失去了一对,那么它不是世界末日。查看NoSQL数据库。但是从您提交的代码中,它将是缺乏性能而不是MySQL的罪恶方。