Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Собрать ссылку из БД
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Собрать ссылку из БД

Страниц (1): [1]
 

1. goga5 - 25 Августа, 2012 - 00:05:48 - перейти к сообщению
Здравствуйте!

имеем таблицу "category" и таблицу с новостями "post"

в таблице "category" имеем: "posi (тут цифры категорий, 1,2,3,4)" и "name (тут названия категории, которые используется в ссылках, video, foto, films, prikoli)", например, к столбику 1 относится video, 2-foto и.т.д. (блин, помоемому я попутал, поймете ли что я пишу Не понял )

в таблице "post" имеем: "story (сама новость)" и "category (цифры от категории от 1 до 4)"

показываем 10 новостей

PHP:
скопировать код в буфер обмена
  1. $result = $db->query("SELECT * FROM post LIMIT 10");
  2. while($novost = $db->get_row($result)) {
  3.  
  4. тут все новости, хочу  собрать ссылки под каждой новостью
  5.  
  6. $ssilka = '<a href="http://site.ru/' . $novost['category'] . '/' . $novost['id'] . $novost['alt_name'] . '.html">Ссылка</a>';
  7. }



всё получается кроме там где "$novost['category']", тут появляются цифры а мне нужна сама категория, питался сделать так

PHP:
скопировать код в буфер обмена
  1. $result = $db->query("SELECT * FROM post LIMIT 10");
  2. while($novost = $db->get_row($result)) {
  3.  
  4. тут все новости, хочу  собрать ссылки под каждой новостью
  5.  
  6. $cat = $db->query("SELECT * FROM category WHERE posi='{$novost[category]}' ");
  7. $cat = $db->get_row($cat);
  8.  
  9. $ssilka = '<a href="http://site.ru/' . $cat['name'] . '/' . $novost['id'] . $novost['alt_name'] . '.html">Ссылка</a>';
  10. }


имена категорий появляются в ссылках но не соответствуют к своей новости, как сравнить цифру с таблицей "category" там где поле "posi" и вывести нужную категорию "name" ? помогите пожалуйста...
2. Viper - 25 Августа, 2012 - 06:24:33 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.*, b.*
  2. FROM `category` AS a
  3. LEFT JOIN `news` AS b ON `b`.`id_news` ON `a`.`id_category`
  4. WHERE ...
  5. GROUP BY `id_news`


как-то так.

PS! На будущее приводите стуктуры таблиц.
3. goga5 - 25 Августа, 2012 - 13:34:00 - перейти к сообщению
Viper пишет:
как-то так.

Спасибо огромное!
4. goga5 - 25 Августа, 2012 - 18:20:08 - перейти к сообщению
Чтото не работает, выдает ошибку, пробовал делать так

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.*, b.*
  2. FROM `category` AS a
  3. LEFT JOIN `news` AS b ON `b`.`id_news` AS a ON `a`.`id_category`
  4. WHERE ...
  5. GROUP BY `id_news`


но и так тоже не работает, посмотрите пожалуйста где ошибка ? ошибка появляется в этой области

Цитата:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON `a`.`posi`
5. Klinch - 25 Августа, 2012 - 20:44:56 - перейти к сообщению
Попробуйте так:

PHP:
скопировать код в буфер обмена
  1. $result = $db->query("SELECT * FROM post LIMIT 10");
  2. while($novost = $db->get_row($result)) {
  3.  
  4. тут все новости, хочу  собрать ссылки под каждой новостью
  5.  
  6. $ssilka = '<a href="http://site.ru/' . $novost[category] . '/' . $novost[id] . $novost[alt_name] . '.html">Ссылка</a>';
  7. }

(Добавление)
Либо попробуйте так:

PHP:
скопировать код в буфер обмена
  1. $result = $db->query("SELECT * FROM post LIMIT 10");
  2. while(mysql_fetch_array($result))
  3. {
  4.  
  5. // тут все новости, хочу  собрать ссылки под каждой новостью
  6.  
  7. $ssilka = '<a href="http://site.ru/' . $novost[category] . '/' . $novost[id] . $novost[alt_name] . '.html">Ссылка</a>';
  8. }


или

PHP:
скопировать код в буфер обмена
  1. $result = $db->query("SELECT * FROM post LIMIT 10");
  2. while(mysql_fetch_array($result))
  3. {
  4.  
  5. // тут все новости, хочу  собрать ссылки под каждой новостью
  6.  
  7. $ssilka = '<a href="http://site.ru/' . $novost['category'] . '/' . $novost['id'] . $novost['alt_name'] . '.html">Ссылка</a>';
  8. }
6. goga5 - 25 Августа, 2012 - 21:09:58 - перейти к сообщению
Klinch пишет:
Попробуйте так:

Нет это не то что нам нужно, так как мы имеем две таблицы "category" и "post", в "post" имеем новости а категории в нем обозначены цифрами, в "category" имеем эти-же цифры и каждая цифра обозначает свою категорию, например в строке где 1 имеем поле video, 2 - foto, 3 - films, 4 - prikoli, нужно состыковать цифры таблиц "category" и "post" и вывести из "category" имя категории.
7. Klinch - 26 Августа, 2012 - 06:16:36 - перейти к сообщению
Так?

PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM post");
  2. while($novost = $db->get_row($result))
  3. {
  4. $res = mysql_query("SELECT name FROM category WHERE posi='{$novost[category]}' ");
  5.  
  6. $ssilka = '<a href="http://site.ru/' . $res . '/' . $novost['id'] . $novost['alt_name'] . '.html">Ссылка</a>';
  7. }
  8.  
  9.  
  10.  
8. goga5 - 26 Августа, 2012 - 20:24:10 - перейти к сообщению
Klinch пишет:
Так?

Огромное спасибо, всё получилось!

 

Powered by ExBB FM 1.0 RC1