[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как вывести категорию?
Lightt
Помогите разобраться о_О в общем есть 3 таблицы

user
id name
1 user1
2 user2

category
id name id_user
1 бла 1
2 бла1 1
3 вар 2
4 вар1 2

link
id name category
1 xxx 1
2 dsds 1
3 sasa 1
4 asda 2
5 sdf 3

Мне нужно вывести link.name первой категории, и в принципе это делается таким запросом -

SELECT *
FROM
link
LEFT JOIN category ON category.id = link.category
WHERE
id_user = "1" and cateory = "1"


Но если id_user = "1" можно заменить id_user="'.$_SESSION['user'].' то как вытащить категорию я не могу понять... подскажите пожалуйста.

Вывожу я все это вот так - так выводится как нужно -


<tr>
<
td>
<?php foreach($all_linkssss AS $link): if($link['category']=="16"): ?>
<A href="<?php echo $link['lik']; ?>"><img src="<?php echo $link['pictures']?>"> <?php echo $link['name']; ?></A><br>
<?php endif; endforeach;?>
</td>
</
tr>


Но вот тут ($link['category']=="16") цифра 16 постоянно меняется это и есть id категории и надо как то вытянуть её из базы зная только id_user="'.$_SESSION['user'].' потому что цифра меняется постоянно...




Спустя 25 минут, 19 секунд (31.08.2011 - 23:42) Лена написал(а):
Не сильно понятно, что на самом деле вам нужно. Вы привели 3 таблицы, может, их нужно связать все три?

SELECT cat.id
FROM
link l
LEFT JOIN category cat ON cat.id = l.category
LEFT JOIN user us ON us.id = cat.id_user
WHERE
cat.id_user = " . $_SESSION['user'];

Спустя 31 минута, 35 секунд (1.09.2011 - 00:14) Lightt написал(а):
Лена

Ну в общем можно и так сказать ))
Я старался объяснить как можно подробней... но если в целом то мне нужно вывести

user1 бла xx
user1 бла dsds
user1 бла sasa

И это выведется этим запросом -

SELECT *
FROM
link
LEFT JOIN category ON category.id = link.category
WHERE
id_user = "1" and cateory = "1"

Но вместо 1 должны быть другие значения, которые для каждого пользователя свои... т.е. вместо первой еденицы я подставлю -
id_user="'.$_SESSION['user'].'
А вот со второй непонятно, потому что у каждого пользователя эта цифра другая, и меняется. Т.е. там должна быть переменная, но как её достать,я не понимаю =(

Спустя 8 часов, 27 секунд (1.09.2011 - 08:14) linker написал(а):
SELECT 
*
FROM
`link`
INNER JOIN
`category`
ON
`category`.`id` = `link`.`category` AND `category`.`id_user` = 1

Спустя 8 часов, 3 минуты, 2 секунды (1.09.2011 - 16:17) Lightt написал(а):
linker

Так выводятся все ссылки =(

Все равно приходится ставить условие, с конкретной цифрой.


SELECT
link.lik,link.name,link.pictures,link.category,category.id
FROM
`link`
INNER JOIN
`category`
ON
`category`.`id` = `link`.`category` AND `category`.`id_user` = 221
where category = 1


Но как мне все таки вытащить эту категорию, чтоб она переменной была?

Спустя 12 минут, 42 секунды (1.09.2011 - 16:30) Lightt написал(а):
Ладно, другой вопрос, я могу вывести нужные мне категории в select, таким зпросом.


$result = mysql_query('select * from category WHERE id_user="221" ');
while ($all_category[] = mysql_fetch_assoc($result)) {}


На форму вот так -


<td>
<
select name="category">
<?php foreach($all_category AS $category): if(isset($category['id'])): ?>
<option name="<?php echo "cat".$category['id']; ?>" value="<?php echo $category['id']; ?>"><?php echo $category['name']; ?></option>
<?php endif; endforeach;?>
<select/>
</
td>


В хтмл отображается вот так -


<select name="category"><option name="cat1" value="1">Музыка</option>
<option
name="cat2" value="2">Программирование</option>
<option
name="cat3" value="3">Развлечения</option>
<option
name="cat4" value="4">Аниме</option>
<option
name="cat5" value="5">Закачка</option>
<select/>



Как мне просто вывести одно из этих слов?

Такие варианты не работают =(

echo $cat1;
echo $_POST['cat1'];

Спустя 4 часа, 2 минуты, 18 секунд (1.09.2011 - 20:32) Lightt написал(а):
Ап))
Неужели никто не знает?

Спустя 3 часа, 44 минуты, 51 секунда (2.09.2011 - 00:17) neadekvat написал(а):
Твой Эл пришел. Но меня ты не убьешь, я гарантирую это. Ой, спойлер.

Так вот. Сформулируй вопрос по-нормальному. Непонятно.

Спустя 4 минуты, 18 секунд (2.09.2011 - 00:22) rooor написал(а):
Цитата (Lightt @ 1.09.2011 - 13:30)
<...>Как мне просто вывести одно из этих слов?<...>

array_rand ? Если случайное слово...

Спустя 7 часов, 32 минуты, 24 секунды (2.09.2011 - 07:54) linker написал(а):
echo $_POST['category'];
а не cat1. При сабмите, значение value выбранного элемента option из комбобокса category уйдёт на сервер. Там это значение должно подставиться в запрос, чтобы получить название категории и вывести её.

А это я исправил свой предыдущий запрос
SELECT 
*
FROM
`link`
LEFT JOIN
`category`
ON
`category`.`id_user` = 1
WHERE
`link`.`category` = `category`.`id`

Спустя 2 часа, 6 минут, 25 секунд (2.09.2011 - 10:00) neadekvat написал(а):
При всем моем уважении к Линкеру, в ON следует указывать параметры связки таблиц, а в WHERE - ограничения на строки.

SELECT 
*
FROM
`link`
LEFT JOIN
`category`
ON
`link`.`category` = `category`.`id`
WHERE
`category`.`id_user` = 1



PS
Это я говорю автору, а Линкера не мне учить.

Спустя 45 минут, 22 секунды (2.09.2011 - 10:46) linker написал(а):
Всё так, но я руководствовался иной логикой. Нам нужно выбрать линки, которые соответствуют юзеру 1, т.е. нам нужно выбрать из категорий по пользователю, а потом по получившимся категориям выбрать соответствующие линки.

Если на на поля `category`.`id_user` и `link`.`category` поставить индексы то выборка будет весьма сладкая по производительности.

Спустя 1 день, 6 часов, 42 минуты, 5 секунд (3.09.2011 - 17:28) Lightt написал(а):
linker
Так вновь выводит все категории... сейчас попробую объяснить точно что мне нужно =)
user posted image
В общем мне требуется чтобы информация выводилась именно так =) Этого я добиваюсь таким кодом -
	
<td>
<?php foreach($all_links AS $link): if(isset($link['id'])): if($link['category']=="1"):?>
<A href="<?php echo $link['lik']; ?>"><img src="<?php echo $link['pictures']?>"> <?php echo $link['name']; ?></A><br>
<?php endif; endif; endforeach;?>
</td>

<
td>
<?php foreach($all_links AS $link): if(isset($link['id'])): if($link['category']=="2"):?>
<A href="<?php echo $link['lik']; ?>"><img src="<?php echo $link['pictures']?>"> <?php echo $link['name']; ?></A><br>
<?php endif; endif; endforeach;?>
</td>

И т.д. все 5 категорий, меняется только это -
if($link['category']=="2")

Сами эти цифры являются id таблицы category.

Категории я вывожу таким запросом -


//вывод всех категорий
$result = mysql_query('select * from category WHERE id_user="'.$_SESSION['id'].'" ');
while ($all_category[] = mysql_fetch_assoc($result)) {}


Ссылки вот так

$result = mysql_query('select * from link ORDER BY id');
while ($all_links[] = mysql_fetch_assoc($result)) {}


В голову приходит только убрать условие
if($link['category']=="2")
и подставить сюда
$result = mysql_query('select * from link ORDER BY id');

Но опять же непонятно откуда брать category, только вручную прописывать...

Спустя 1 день, 15 часов, 23 минуты, 40 секунд (5.09.2011 - 08:52) linker написал(а):
Млин, а какие категории тебе нужны? Ничего не понимаю. Обычно, если нужна одна категория, то берут её из GET - то, что выбрал пользователь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.