За последние 24 часа нас посетили 17539 программистов и 1310 роботов. Сейчас ищут 1133 программиста ...

PHP + MySQL или SESSION

Тема в разделе "PHP для новичков", создана пользователем reinkarnator, 25 мар 2010.

  1. reinkarnator

    reinkarnator Активный пользователь

    С нами с:
    16 июл 2009
    Сообщения:
    5
    Симпатии:
    0
    Вопрос таков. Есть некое меню. У этого меню есть порядок. В базе этот порядок выводится столбиком 'ordering'. Так же есть столбик 'parent' в нём показано является ли данный пункт родительским (т.е равным 0),или дочерним (т.е НЕ равным 0). Цель такова: В родительском пункте показывать только порядок родительского,в дочернем и порядок родительского и порядок дочернего! Вот код который я написал

    $sql_now=mysql_query("SELECT ordering FROM jos_menu WHERE parent = '0'");
    $sql_now_array=mysql_fetch_array($sql_now);
    $_SESSION['order'] = $sql_now_array[0];

    echo $_SESSION['order'];

    $sql_nopar=mysql_query("SELECT ordering FROM jos_menu WHERE parent != '0'");
    $sql_nopar_array=mysql_fetch_array($sql_nopar);
    $_SESSION['ord'] = $sql_nopar_array[0];

    echo $_SESSION['ord'];

    В данном случае работает так. Родитель выводится у родителя,дочь у дочери.НО родитель у дочернего не выводится. А как сделать так чтоб это работала. Т.е мне нужно,чтоб не было как бы условия ЕСЛИ парент=0 то выводится это,мне нужно чтоб сессия тупо держала все значения этого вывода в себе,без всяких условий,чтоб я мог бы вывести её в любо месте кода.
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    что-то типа

    если нет родителя, то $array[id этого элемента][name] = имя элемента
    если есть родитель, то $array[id родителя][children][id элемента] = имя элемента

    ?
     
  3. reinkarnator

    reinkarnator Активный пользователь

    С нами с:
    16 июл 2009
    Сообщения:
    5
    Симпатии:
    0
    не совсем. дело в том,что дочка и родитель отличаются только ихним parent-ом.Т.е если parent=0,то это родитель,если parent != 0, то это дочка. Щас приведу более детальный пример

    У меня есть пункт меню скажем "О нас". У этого пункта порядок ("ordering" в базе) скажем "2",этот пункт родитель,у него parent=0(тоже в базе). У этого пункта есть дочерний элемент скажем "Новости" у него порядок скажем "3",этот пункт есть дочка,т.е у него parent != 0. Мне нужно: Чтоб когда я кликал по "О нас" у меня отображалась цифра "2",когда я кликаю по "Новости",выводилось "2","3". Как это реализовать?
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    я привёл возможный вариант хранения информации о родителе и детях в массиве.

    А что мешает, войдя в определённую категорию, вытянуть из базы информацию о id и parent?
     
  5. reinkarnator

    reinkarnator Активный пользователь

    С нами с:
    16 июл 2009
    Сообщения:
    5
    Симпатии:
    0
    Таким путём не получается. Он всё равно выводить на странице родителя,родительский порядок,на странице дочери,только дочерний.

    $sql=mysql_query("SELECT parent FROM jos_menu WHERE menutype = 'mainmenu' AND id = '$Itemid' AND published = '1' ORDER BY 'ordering'");
    $sql_now_par=mysql_fetch_array($sql);
    $_SESSION['par'] = $sql_now_par['parent'];

    $sql_now_up=mysql_query("SELECT ordering FROM jos_menu WHERE menutype = 'mainmenu' AND id = '$Itemid' AND parent != '0' AND published = '1'");
    $sql_now_array_up=mysql_fetch_array($sql_now_up);
    $_SESSION['ord'] = $sql_now_array_up['ordering'];

    $sql_now=mysql_query("SELECT ordering FROM jos_menu WHERE menutype = 'mainmenu' AND id = '$Itemid' AND parent = '0' AND published = '1'");
    $sql_now_array=mysql_fetch_array($sql_now);
    $_SESSION['order'] = $sql_now_array['ordering'];

    $array[0][0]=$_SESSION['ord'];
    $array[0][1]=$_SESSION['order'];


    if ($_SESSION['par']!='0') {
    echo $array[0][0];
    }
    elseif ($_SESSION['par']='0') {
    echo $array[0][0];
    echo $array[0][1];
    }

    Дело в том,что выше описана выборка порядка (ordering) по parent-у. Отсюда он и выводит порядок каждого на своей странице. А как же,тупо,как бы записать данные родителя. чтобы в любом месте я мог его echo-нуть и он дал мне именно эти числа?
    к примеру в ряд в любом месте,на любой странице: 1,2,3,4.

    Я недавно в ПХП. Мне интересно,неужели нет никакой функции для выборки и ХРАНЕНИИ данных однажды,без повторного обращение к базе?

    П.с: Данную процедуру я организовываю на Joomla 1.0.15