我想创建一个照片库,在左侧显示来自同一类别的所有图片,右侧显示评论。
图像作为路径(例如:mycategory/example001.jpg
)存储在我的数据库jkm_image
列filename
中。
评论存储在jkm_content
中的introtext
表中。
这两张表没有关联。
我陷入了“foreach”步骤,因为它首先检索了所有图像,然后是所有评论,所以我最终得到类似
的内容an image
an image
an image
...
a comment
a comment
a comment
或
an image, an image, an image
an image, an image, an image
...
a comment, a comment, a comment
a comment, a comment, a comment
但我想:
an image, a comment
an image, a comment
an image, a comment
...
这是php:
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$db = &JFactory::getDBO(); //Your database object is ready
$db2 = &JFactory::getDBO();?>
<div class="backend">
<?php
$query = "SELECT introtext FROM jkm_content WHERE catid=58"; //--------feeds
$db->setQuery( $query );
$feeds= $db->loadObjectList();
foreach ($feeds as $item):
?>
<div class="comment"><?php echo $item->introtext; ?></div>
<?php endforeach; ?>
<?php
$query2 = "SELECT filename FROM jkm_phocagallery WHERE catid=2";// -------pictures
$db2->setQuery( $query2 );
$pictures= $db2->loadObjectList();
foreach ($pictures as $item2):
?>
<div class="image"><img src="/images/phocagallery/<?php echo $item2->filename; ?>" >
</div>
<?php endforeach; ?>
</div>
的CSS:
.backend {
position: absolute;
width: 1000px;
}
.image {
float:left;
width: 600px;
}
.comment {
float:right;
width: 400px;
}
我对php世界很新,我不知道我做得对不对。也许“foreach”不是我应该使用的功能。
非常感谢你的帮助!
答案 0 :(得分:1)
如果表是相关表,则应在表之间使用内部连接连接,而不是Union http://dev.mysql.com/doc/refman/5.0/es/join.html
SELECT filename FROM jkm_image as jkm Inner join introtex as intro on intro.id = jkm. id WHERE catid=2
或者您可以向DataBase发出两个请求
<?php
$query = "SELECT introtex FROM jkm_content WHERE catid=58";
$db->setQuery( $query );
$feed= $db->loadObjectList();
foreach ($feed as $item):
?><div style="float:left; width: 200px;"><?php echo $item->introtex; ?><?php
$query2 = "SELECT filename FROM jkm_image WHERE catid=2";
$db2->setQuery( $query2 );
$feed2= $db2->loadObjectList();
foreach ($feed2 as $item2):
?>
<div style="float:left ; width: 200px;"><img src="/images/phocagallery/<?php echo $item2->filename; ?>" ></div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
答案 1 :(得分:0)
Psudocode:
第1步:$ mylist = query(SELECT id FROM mytable WHERE(您的条件)......)
第2步:
$mypics=array();//an empty box
foreach($idlist as $id){
$thispic=//run your query - I'd use PDO FETCH_ASSOC
array_push($mypics,$thisquery);
}
现在$ mypics是一个完整的框(一个关联数组......)
foreach ($mypics as $pic){
echo $pic['img'];
echo $pic['title'];
}
你需要添加一些语法和图片标签等等,但这是你可以做到的一种方式。
PS:你在这里有3种语言:
<div style="float:left ; width: 200px;"><img src="/images/phocagallery/<?php echo $item->filename; ?>" >