|
|
|
| Ситуация такая, есть база данных:
рубрика1 товар1
рубрика2 товар2
рубрика1 товар3
рубрика3 товар4
рубрика4 товар5
рубрика3 товар6
рубрика2 товар7
рубрика1 товар8
|
На странице вывожу список категорий таким запросом:
$zapros = "SELECT DISTINCT rub FROM pen";
|
т.е. выводится такой список рубрик:
рубрика1
рубрика2
рубрика3
рубрика4
|
Вот, теперь собственно нужно сделать, чтобы при нажатии на рубрику1 выводить товары только из рубрики1 а вот как лучше передать данные - не могу сообразить. До этого у меня все время была отдельная таблица с рубриками и их уникальным идентификатором, через него и выводил. Но тут по идее нужно записать значение рубрики в переменную и сравнивать ее со всеми записями в БД и выводить те записи, где значения идентичны. Но, вот как собственно передать это значение? | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 11:36)
| | если я правильно понял, то название рубрики делать ссылкой
<a href='example.php?id=id_рубрики'>рубрика1</a>
|
из базы получить можно
$zapros = "SELECT * FROM pen WHERE id_рубрики = id_рубрики";
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(18.03.2010 в 12:13)
| | В том то и проблема, что нету id_рубрики | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 12:16)
| | передай тогда через get имя рубрики и сравнивай при выводе из базы | |
|
|
|
|
|
|
|
для: Slo_Nik
(18.03.2010 в 12:19)
| | А это не будет поводом для sql-инъекций? я просто подумал, что так делать очень не безопасно + к тому же - рубрики имеют вид: Бренд\Promo\ - т.е. часть текста на русском, часть на английском - поэтому урл - некрасивый выходит, да и поисковые машины думаю на такие урлы будут не очень хорошо смотреть, хотелось бы что-то другое придумать. | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 12:16)
| | >В том то и проблема, что нету id_рубрики
Нужно сделать, чтоб было. | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 11:36)
| | >Ситуация такая, есть база данных:
>рубрика1 товар1
>рубрика2 товар2
>рубрика1 товар3
Может все-таки это таблица? | |
|
|
|
|
|
|
|
для: oliss
(18.03.2010 в 12:47)
| | Да - таблица, думаю это и так было понятно ;) Лучше подскажите по сути вопроса :) | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 12:51)
| | >передай тогда через get имя рубрики и сравнивай при выводе из базы
Это не вариант, так как рубрика состоит и текста как на русском, так и на английском языке - и поэтому урл будет очень не красивый | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 13:48)
| |
// Составляем список категорий
$zapros = "SELECT DISTINCT rub FROM pen";
if($p = mysql_query($zapros))
{
// Так как запрос возвращает несколько строк, применяем цикл
while($gf = mysql_fetch_array($p))
{
$cat_name = $gf['rub'];
$cat_nam = mysql_real_escape_string($cat_name);
print $cat_name;
// добавляем рубрику
$ty = "INSERT INTO pen_cat VALUES (NULL, '$cat_nam')";
if(mysql_query($ty))
{
echo "Рубрики добавлены в БД<br>";
}
}
}
|
Вот.
Дальше в файле вывода рубрик формирую ссылки:
$zapros = "SELECT * FROM pen_cat";
if($p = mysql_query($zapros))
{
// Так как запрос возвращает несколько строк, применяем цикл
while($f = mysql_fetch_array($p))
{
echo "<a href='index.php?id=".$f['id']."'>".$f['name']."</a><br>";
}
}
|
В index.php проверяю на наличие передачи данных:
Но вот собственно как поступать дальше? | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 15:00)
| | сделай как говорил Trianon, да и я тебе в своём ответе писал про id _рубрики.
в таблице с категориями добавь вторичный ключ, который будет равный id _рубрики и при выборке из БД ориентируйся на это значение. так будет проще...
если я правильно понял, то при передачи через get значения id в условии WHERE проверяй id_рубрики к которой принадлежит категория
if($_GET['id']){
$query= "SELECT * FROM `table` WHERE `id` = '".$_GET['id']."'";
}
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(18.03.2010 в 15:30)
| | Можно подробнее?
Сейчас у меня: 2 таблицы - с категориями и товарами.
Таблица категорий:
id name
1 category1
2 category2
3 category3
|
Таблица товаров:
id name category
1 tovar1 category1
2 tovar2 category2
3 tovar3 category1
4 tovar4 category3
5 tovar5 category1
|
Как добавить вторичный ключ?
P.S. то ли я чего-то не понимаю, то ли вы неправильно понимаете что я пишу) | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 15:49)
| | в таблицу с товарами, добавить id_категори, вместо category добавить столбец с именем id_категории
Таблица категорий:
id_category name
1 category1
2 category2
3 category3
|
Таблица товаров:
id name id_category
1 tovar1 3
2 tovar2 1
3 tovar3 1
4 tovar4 2
5 tovar5 2
|
вот тут id_category и есть вторичный ключ.
в таблице с категориями id_category является первичным ключом и устанавливает уникальность записи.
при таком разкладе, при попытке вывести наименование товаров, для первой категории выведет 1 товар для второй и третьей по две позиции товара.
и ни какой путаницы не произойдёт...
естественно, что первичный ключ таблицы категорий id_category должен быть снабжён атрибутом AUTO_INCREMENT
Тогда при переходе по ссылке
echo "<a href='index.php?id=".$f['id_category']."'>".$f['name']."</a><br>";
|
на странице index делаем запрос к базе
if($_GET['id_category']){
$query= "SELECT * FROM `table` WHERE `id_category` = '".$_GET['id']."'";
}
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(18.03.2010 в 16:46)
| | Тогда вопрос такой:
как в таблицу с товарами добавить столбец id_category ? Ведь тут нужно тоже самое сравнение проводить с таблицей категорий по названию категории. Как это реализовать? И собственно нужен ли тогда этот столбец? | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 19:10)
| | >вместо category добавить столбец с именем id_категории
увы, но не могу, так как данные в этой таблице формируются из xml-файла и там записано именно название рубрики, а не ее порядковый номер. Именно из-за этого собственно вся проблема и началась, что нужно преобразовать имеющиеся данные. | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 19:21)
| | >увы, но не могу, так как данные в этой таблице формируются из xml-файла и там записано именно название рубрики, а не ее порядковый номер.
во-первых, с этого и надо было начинать...
во-вторых, ну и что, что отсутствует id категории? как формируются записи в таблице с названиями категорий? | |
|
|
|
|
|
|
|
для: Slo_Nik
(18.03.2010 в 20:22)
| | >как формируются записи в таблице с названиями категорий?
Примерно вот так:
// Парсим файл
$xml = simplexml_load_file($filename);
foreach ($xml->item as $item)
{
$tov_rubr = $item->tov_rubr;
foreach ($tov_rubr as $rubr)
{
$rrr = $tov_rubr->rubr;
}
$rrr = iconv("UTF-8", "windows-1251", $rrr);
$y = "INSERT INTO pen VALUES (NULL,
'$tov_id',
'$tov_name',
'$rrr')";
if(mysql_query($y))
{
echo "Данные добавлены в БД<br>";
}
|
| |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 20:42)
| | таблица с названиями категорий как формируется, а не таблица с товарами? | |
|
|
|
|
|
|
|
для: Dizels
(18.03.2010 в 19:10)
| | >как в таблицу с товарами добавить столбец id_category ?
как и любой другой столбец...
> Ведь тут нужно тоже самое сравнение проводить с таблицей категорий по названию категории.
у каждой категории товара есть свой id, уникальный ключ, неповторяемый...
если удалить категорию из базы, потом занести новую категорию, то id новой категории ни когда не будет равным удалённому id...
при этом, название категории может измениться, прийдётся менять содержимое столбца category в таблице товаров... | |
|
|
|