我的网站在Joomla 1.5.26中运行,我使用SELECT查询将文件名路径转换为上次修改日期并在页面上打印内容:
$db =& JFactory::getDBO();
$query = "
SELECT `filename`
FROM `#__joomlatable`
WHERE `filename` != '';
";
$db->setQuery($query);
$options = $db->loadAssocList();
foreach ( $options as $o ) {
if (file_exists($o[filename])) {
echo date ("F d Y H:i:s.", filemtime($o[filename]));
$test = date ("F d Y H:i:s.", filemtime($o[filename]));
}
}
如您所见,我在屏幕上打印各种日期,同时将日期分配给值 $ test 。
我的表格还包含一个名为日期的字段,其中包含空值。我想要做的是在表格中的日期字段值中填充%test 的值。
所以在写完第一段代码之后:
$db2 =& JFactory::getDBO();
$query2 = "
UPDATE `#__joomlatable`
SET `date` = '$test'
WHERE `filename` != '';
";
$db2->setQuery($query2);
$options2 = $db2->loadAssocList();
但它的作用是填充所有记录中的日期列,其日期值似乎是第一个查询请求的最后一个日期值。我认为它需要处于循环中,但由于我对PHP / Mysql缺乏经验,我无法想到任何事情。
你能帮帮忙吗?答案 0 :(得分:0)
确实,您需要对结果进行循环并分别更新每个文件记录。
以下是代码的外观:
$db =& JFactory::getDBO();
$query = "
SELECT `filename`
FROM `#__joomlatable`
WHERE `filename` != '';
";
$db->setQuery($query);
$options = $db->loadAssocList();
$fileInfo = array();
//store in fileInfo the modified time for each file
foreach ( $options as $o ) {
if (file_exists($o['filename'])) {
$fileInfo[ $o['filename'] = filetime( $o['filename'] );
}
}
//now for each file we found we store the modified time in the database
foreach( $fileInfo as $filename => $time ){
$query2 = "
UPDATE `#__joomlatable`
SET `date` = '$time'
WHERE `filename` = '$filename';
";
$db2->setQuery($query2);
$options2 = $db2->query();
}