1

左側に同じカテゴリのすべての写真を表示し、右側にコメントを表示する写真ギャラリーを作成したいと考えています。画像は、私のデータベースの列mycategory/example001.jpgのテーブルにあるパス (例: ) として保存され ます。コメントは のテーブルに格納されます。jkm_imagefilenamejkm_contentintrotext

2 つのテーブルは関連していません。

最初にすべての画像を取得し、次にすべてのコメントを取得するため、「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」は私が使うべき関数ではないのかもしれません。

助けてくれてどうもありがとう!

4

2 に答える 2

1

テーブルが関連している場合は、ユニオンではなく、テーブル間に内部結合接続を使用する必要があります 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 に twoo リクエストを作成することもできます

<?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; ?>
于 2013-10-18T09:52:11.780 に答える