2013-12-05 4 views
1

Мой сайт работает в Joomla 1.5.26, и я использую запрос SELECT для преобразования пути имени файла к последней измененной дате и распечатки содержимого на странице:Joomla - Обновление поля таблицы с переменной из другого запроса SELECT

Как вы можете видеть, я печатаю различные даты на экране и в то же время назначая даты значению $ test.

В моей таблице также содержится поле с пустыми значениями. То, что я хотел бы сделать, - заполнить значения % test внутри значений поля даты внутри таблицы.

Таким образом, после первой части коды я пишу:

$db2 =& JFactory::getDBO(); 
$query2 = " 
UPDATE `#__joomlatable` 
SET `date` = '$test' 
WHERE `filename` != ''; 
"; 
$db2->setQuery($query2); 
$options2 = $db2->loadAssocList(); 

но что она делает это Наполнение Даты колонки во всех записях с одинаковым значением даты, которая, кажется, последнее значение даты Запрошенного первый запрос. Я думаю, что это должно быть в цикле, но из-за моей неопытности с PHP/Mysql я ничего не могу придумать.

Не могли бы вы помочь?

+0

ваше обновление обновляет все записи, которые имеют имя файла = «»!. Вероятно, вы хотите, чтобы этот запрос запрашивал имя файла, которое вы хотите обновить, и вы, вероятно, получили предыдущий запрос. –

+0

Добро пожаловать в Stack Overflow. Это отличный первый вопрос. +1 – ldrumm

+0

Но я хочу обновить ВСЕ записи, которые не пусты. Моя проблема в том, что он обновляет все записи с одинаковым значением, тогда как он должен иметь обновленные значения, взятые из переменной $ test из предыдущего запроса ... –

ответ

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(); 
} 
Смежные вопросы