Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как лучше передать значение?

Сообщения:  [1-10]   [11-19] 

 
 автор: Slo_Nik   (18.03.2010 в 21:18)   письмо автору
 
   для: Dizels   (18.03.2010 в 20:42)
 

таблица с названиями категорий как формируется, а не таблица с товарами?

  Ответить  
 
 автор: Dizels   (18.03.2010 в 20:42)   письмо автору
 
   для: 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>";
    }

  Ответить  
 
 автор: Slo_Nik   (18.03.2010 в 20:22)   письмо автору
 
   для: Dizels   (18.03.2010 в 19:21)
 

>увы, но не могу, так как данные в этой таблице формируются из xml-файла и там записано именно название рубрики, а не ее порядковый номер.

во-первых, с этого и надо было начинать...

во-вторых, ну и что, что отсутствует id категории? как формируются записи в таблице с названиями категорий?

  Ответить  
 
 автор: Slo_Nik   (18.03.2010 в 20:19)   письмо автору
 
   для: Dizels   (18.03.2010 в 19:10)
 

>как в таблицу с товарами добавить столбец id_category ?
как и любой другой столбец...

> Ведь тут нужно тоже самое сравнение проводить с таблицей категорий по названию категории.

у каждой категории товара есть свой id, уникальный ключ, неповторяемый...
если удалить категорию из базы, потом занести новую категорию, то id новой категории ни когда не будет равным удалённому id...
при этом, название категории может измениться, прийдётся менять содержимое столбца category в таблице товаров...

  Ответить  
 
 автор: Dizels   (18.03.2010 в 19:21)   письмо автору
 
   для: Dizels   (18.03.2010 в 19:10)
 

>вместо category добавить столбец с именем id_категории
увы, но не могу, так как данные в этой таблице формируются из xml-файла и там записано именно название рубрики, а не ее порядковый номер. Именно из-за этого собственно вся проблема и началась, что нужно преобразовать имеющиеся данные.

  Ответить  
 
 автор: Dizels   (18.03.2010 в 19:10)   письмо автору
 
   для: Slo_Nik   (18.03.2010 в 16:46)
 

Тогда вопрос такой:
как в таблицу с товарами добавить столбец id_category ? Ведь тут нужно тоже самое сравнение проводить с таблицей категорий по названию категории. Как это реализовать? И собственно нужен ли тогда этот столбец?

  Ответить  
 
 автор: Slo_Nik   (18.03.2010 в 16:46)   письмо автору
 
   для: 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']."'";
}

  Ответить  
 
 автор: Dizels   (18.03.2010 в 15:49)   письмо автору
 
   для: 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. то ли я чего-то не понимаю, то ли вы неправильно понимаете что я пишу)

  Ответить  
 
 автор: Slo_Nik   (18.03.2010 в 15:30)   письмо автору
 
   для: Dizels   (18.03.2010 в 15:00)
 

сделай как говорил Trianon, да и я тебе в своём ответе писал про id _рубрики.
в таблице с категориями добавь вторичный ключ, который будет равный id _рубрики и при выборке из БД ориентируйся на это значение. так будет проще...
если я правильно понял, то при передачи через get значения id в условии WHERE проверяй id_рубрики к которой принадлежит категория

if($_GET['id']){
$query= "SELECT * FROM `table` WHERE `id` = '".$_GET['id']."'";
}

  Ответить  
 
 автор: Dizels   (18.03.2010 в 15:00)   письмо автору
 
   для: 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 проверяю на наличие передачи данных:
if ($_GET['id'])
    {
}

Но вот собственно как поступать дальше?

  Ответить  

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования