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
И это выведется этим запросом -
Но вместо 1 должны быть другие значения, которые для каждого пользователя свои... т.е. вместо первой еденицы я подставлю -
id_user="'.$_SESSION['user'].'
А вот со второй непонятно, потому что у каждого пользователя эта цифра другая, и меняется. Т.е. там должна быть переменная, но как её достать,я не понимаю =(
Ну в общем можно и так сказать ))
Я старался объяснить как можно подробней... но если в целом то мне нужно вывести
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 - ограничения на строки.
PS
Это я говорю автору, а Линкера не мне учить.
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` поставить индексы то выборка будет весьма сладкая по производительности.
Если на на поля `category`.`id_user` и `link`.`category` поставить индексы то выборка будет весьма сладкая по производительности.
Спустя 1 день, 6 часов, 42 минуты, 5 секунд (3.09.2011 - 17:28) Lightt написал(а):
linker
Так вновь выводит все категории... сейчас попробую объяснить точно что мне нужно =)
В общем мне требуется чтобы информация выводилась именно так =) Этого я добиваюсь таким кодом -
И т.д. все 5 категорий, меняется только это -
Сами эти цифры являются id таблицы category.
Категории я вывожу таким запросом -
Ссылки вот так
В голову приходит только убрать условие
Но опять же непонятно откуда брать category, только вручную прописывать...
Так вновь выводит все категории... сейчас попробую объяснить точно что мне нужно =)
В общем мне требуется чтобы информация выводилась именно так =) Этого я добиваюсь таким кодом -
<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 - то, что выбрал пользователь.