Есть 2 сайта Джумла на одном домене, и соответственно у них одинаковые названия столбцов таблиц. Есть необходимость вывести новости на титульной странице сайта (она статична). Написал такой запрос, но правильно не работает:
$query = "SELECT a.introtext, b.introtext FROM res_content AS a, cafe_content AS b
WHERE a.catid !=0 AND a.catid !=0";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value) {
print "$col_value";
}
}
catid - это поле, по которому надо исключить выбор новости.
Еще бы сюда сортировку по дате добавить (по столбцу "created").
Огромное спасибо заранее!
Спустя 8 минут, 33 секунды (17.01.2012 - 13:40) Jack_White написал(а):
Lutsk
Цитата (Lutsk @ 17.01.2012 - 10:31) |
WHERE a.catid !=0 AND a.catid !=0"; |
может
WHERE a.catid !=0 AND b.catid !=0;
Цитата (Lutsk @ 17.01.2012 - 10:31) |
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { |
вместо этого лучше использовать
while ($line = mysql_fetch_assoc($result)
Спустя 4 минуты, 46 секунд (17.01.2012 - 13:45) asokol написал(а):
SELECT `introtext`, `created`, FROM `res_content` WHERE `catid`!=0
UNION
SELECT `introtext`, `created` FROM `cafe_content` WHERE `catid`!=0
ORDER BY `created` DESC
Спустя 3 минуты, 6 секунд (17.01.2012 - 13:48) Jack_White написал(а):
вообще используй например left inner join для объединения таблиц...
сортировка ORDER BY (дата) DESC
сортировка ORDER BY (дата) DESC
Спустя 24 минуты, 48 секунд (17.01.2012 - 14:13) Lutsk написал(а):
asokol, - работает, спасибо! Только вот дата выводится, а она там не нужна. Как от нее избавиться?
Спустя 10 минут, 7 секунд (17.01.2012 - 14:23) asokol написал(а):
Это уже не смешно.
Вместо:
Сделать:
Вместо:
foreach ($line as $col_value) {
print "$col_value";
}
Сделать:
print $line['introtext']
Спустя 9 минут, 21 секунда (17.01.2012 - 14:32) Lutsk написал(а):
Цитата (asokol @ 17.01.2012 - 11:23) |
print $line['introtext'] |
точно. Вот туплю... Мозги просто закипели.
Спустя 1 час, 55 минут, 12 секунд (17.01.2012 - 16:27) Lutsk написал(а):
Все равно что-то не то у меня с кодом. Выводит по 2 записи одного поля. Привожу теперешний код:
Запарился уже. :blink:
$query = "SELECT title, created FROM res_content WHERE catid!=0
UNION
SELECT title, created FROM cafe_content WHERE catid!=0
ORDER BY created DESC";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($rows = mysql_fetch_assoc($result)) {
echo "\t<div class='n_block' style='float: left; margin-left:40px;'>\n";
foreach ($rows as $row) {
echo $rows['title'];
}
echo "\t</div>\n";
}
Запарился уже. :blink:
Спустя 18 минут, 6 секунд (17.01.2012 - 16:45) Placido написал(а):
А зачем там foreach ($rows as $row)?
Спустя 16 секунд (17.01.2012 - 16:46) asokol написал(а):
mysql_fetch_assoc возвращает не строки, а одну строку результата.
Спустя 1 час, 22 минуты, 11 секунд (17.01.2012 - 18:08) Lutsk написал(а):
в foreach если echo $row - выводится титл и дата. Если echo $rows['title'] - два титла.
Значит, все-таки запрос по-другому писать надо?
P.S. А может это дело как-то при помощи создания временной таблицы TEMPORARY TABLE сделать можно, если более простые способы не подходят?
Вобщем, нужен совет, вопрос остался открыт...
Значит, все-таки запрос по-другому писать надо?
P.S. А может это дело как-то при помощи создания временной таблицы TEMPORARY TABLE сделать можно, если более простые способы не подходят?
Вобщем, нужен совет, вопрос остался открыт...
Спустя 26 минут, 13 секунд (17.01.2012 - 18:34) Placido написал(а):
Так что нужно вывести? Только тайтлы или и тайтлы, и даты?
Если первое, то
Если второе, то
Если первое, то
while ($row = mysql_fetch_assoc($result)) {
echo $row['title'] . "\r\n";
}
Если второе, то
while ($row = mysql_fetch_assoc($result)) {
echo $row['title'] . "\r\n" . $row['created'] . "\r\n";
}
Спустя 17 минут, 20 секунд (17.01.2012 - 18:51) Lutsk написал(а):
Ура, вышло! Placido, как раз додумался, - но все равно спасибо. В итоге получилось это:
$query = "SELECT title, created FROM res_content WHERE catid !=0
UNION
SELECT title, created FROM cafe_content WHERE catid!=0
ORDER BY created DESC LIMIT 3";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($rows = mysql_fetch_assoc($result)) {
echo "\t<div class='n_block' style='float: left;'>\n";
echo $rows['title'];
echo "\t</div>\n";
}