Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 30 Ответов
  • 3067 Просмотров
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
слямзил код на просторах, а он не пашет, хз...
идея такая:
в MySQL в строке три ячейки - id, name, id_parent
надо вывести на страничку элементарщину - сначала значение id_parent, затем все ячейки, содержащие этот id_parent, далее следующий id_parent и его яейки и так перебрать все id_parent .
Спойлер
[свернуть]
« Последнее редактирование: 28.04.2014, 13:02:57 от verstalshik »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Все должно работать, код вроде как правильный
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
а это
Код
$line
это просто объявление новой функции? или встроенная какая?
вроде всегда было
Код
$row
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
а это
Код
$line
это просто объявление новой функции? или встроенная какая?
вроде всегда было
Код
$row
Это переменная, и называть её вы можете как хотите.. хоть $dfhdjfhdj
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Ну так понял надо дерево построить. Забейте в Google запрос "php recursive tree query parent child", или что-то подобное. Много чего есть.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Ну так понял надо дерево построить. Забейте в Google запрос "php recursive tree query parent child", или что-то подобное. Много чего есть.
дык это на квери? я хотел в запросе MySQL все сделать...

аааа мой смалл инглиш))) query = запрос)))) спс!! позырю!!

ну и все-таки не дерево нужно, а отдельными блоками чтоб выводилось, см рис:
« Последнее редактирование: 28.04.2014, 19:15:56 от verstalshik »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Дык такое делается вообще в один запрос
Код: php
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
$data = array();   
while ($line = mysql_fetch_array($result)) {
$data[$line['id_parent']][] = $line;
}

foreach($data as $key => $items){
echo '<div>'.$key.'</div>';
echo '<table>';
foreach($itemsas as $item){
echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td></tr>';
}
echo '</table>';
}
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
вывело
Код
<div>1</div>
<table></table>
<div>2</div>
<table></table>
и усе(((
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
очепятался
заменить
 foreach($itemsas as $item){
на
foreach($items as $item){
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
ух ты! круть! пашет! плюсануть чтоли?)))
а если id_parent равен 0, то как вообще не выводить все что относится к нему, а?
« Последнее редактирование: 28.04.2014, 23:18:03 от verstalshik »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #10 : 28.04.2014, 23:15:19 »
ух ты! круть! пашет! плюсануть чтоли?)))
а если id_parent равен 0, то как вообще не выводить все что относится к нему?
Код: php
while ($line = mysql_fetch_array($result)) {
  if( !empty($line['id_parent']) ){
     $data[$line['id_parent']][] = $line;
  }
}
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #11 : 28.04.2014, 23:18:08 »
а как к id_parent приклеить еще и текстовое поле, из этой же строки, колонку если еще добавить с именем, шоб над табличками текст выводить, а?
а как вложенность увеличить еще, а?
а? а? а?
коллеги, я весь ваш навеки!!))
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #12 : 28.04.2014, 23:24:06 »
а как к id_parent приклеить еще и текстовое поле, из этой же строки, колонку если еще добавить с именем, шоб над табличками текст выводить, а?
а как вложенность увеличить еще, а?
а? а? а?
коллеги, я весь ваш навеки!!))
в смысле увеличить вложенность?) и про текстовое поле не понял
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #13 : 28.04.2014, 23:32:08 »
и про текстовое поле не понял
ну щас в <div> выводится числовое значение из поля id_parent, а еще бы и текст туда чтоб выводился, а текст в соседнем поле будет, например в name_parent
рис приложил
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #14 : 28.04.2014, 23:48:36 »
в смысле увеличить вложенность?)
рисунок про вложенность, т.е. сначала отсеяли по вредным привычкам (id_parent))) затем внутри этих привычек отсеиваем по частоте употребления этих привычек (id_second)))))
нормальных девок все меньше и меньше000)))
рис приложил
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #15 : 29.04.2014, 00:04:31 »
Ну по аналогии с тем кодом только три цикла:
Код: php
$data = array();
while ( $line = mysql_fetch_array( $result ) ) {
if ( !empty( $line['id_parent'] ) ) {
$data[$line['name_parent']][$line['name_second']][] = $line;
}
}

foreach ( $data as $titleParent => $parents ) {
echo '<div>' . $titleParent . '</div>';
echo '<table>';
foreach ( $parents as $titleChildren => $items ) {
echo '<tr><td colspan="2">' . $titleChildren . '</td></tr>';
foreach ( $items as $item ) {
echo '<tr><td>' . $item['id'] . '</td><td>' . $item['name'] . '</td></tr>';
}
}
echo '</table>';
}
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #16 : 29.04.2014, 01:19:23 »
Создать хранимую процедуру MySQL не вариант?
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #17 : 29.04.2014, 08:01:02 »
Создать хранимую процедуру MySQL не вариант?
ваш пример? я еле-еле потихоньку разбираюсь сиречь учусь в том, что выше запостили добрые ребята, а хранимые процедуры??  - все что нагуглил - что не для новичков))) запишу на будущее, спс!
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #18 : 29.04.2014, 09:46:30 »
щас в <div> выводится числовое значение из поля id_parent, а еще бы и текст туда чтоб выводился, а текст из соседнего поля брать, в этой же строке, например из name_parent
рис приложил
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #19 : 29.04.2014, 11:41:02 »
Подождите а зачем цикл в цикле если можно просто ORDER BY parent_id сделать
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #20 : 29.04.2014, 13:35:25 »
Подождите а зачем цикл в цикле если можно просто ORDER BY parent_id сделать
ну наверное это будет ОДНА таблица в итоге! а как делить потом на нужные блоки? надо чтоб было поделено!

а вот еще поясните, что за знак:
Код
=>
??
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #21 : 29.04.2014, 13:39:25 »
"=>" - это знак между ключом и значением элемента массива.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #22 : 29.04.2014, 13:45:16 »
"=>" - это знак между ключом и значением элемента массива.
ну вот!  а как мне передать из ключа в элемент массива, можно в другой элемент, кроме числового значения еще и текстовое, которое в другой ячейке сидит?

вот здесь по подсказке Istaana
Код
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
$data = array();    
while ($line = mysql_fetch_array($result)) {
$data[$line['id_parent']][] = $line;
}
 
foreach($data as $key => $items){
echo '<div>'.$key.'</div>';
echo '<table>';
foreach($items as $item){
echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td></tr>';
}
echo '</table>';
}
если я правильно понял, в ключе $key передается число из id_parent, а вот туда же еще и передать текст из name_parent ?
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #23 : 29.04.2014, 14:23:01 »
$data - многоуровневый массив:
Код: php-brief
$data = array(id_parent_1=>array($item1_1,$item1_2,$item1_3...), id_parent_2=>array($item2_1,$item2_2,$item2_3...), ...)
Каждый $key - 1 id_parent.
Каждый $item - 1 строка результата запроса, которая опять является массивом.
« Последнее редактирование: 29.04.2014, 14:29:46 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #24 : 29.04.2014, 15:06:52 »
ну вроде понятно.
значит в $item нет того что нужно - имени для id_parent ?
как же приклеить имя?
еще одним ключом?
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #25 : 29.04.2014, 16:32:19 »
Код: php-brief
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
$data = array();
$names_by_id=array();
while ($line = mysql_fetch_array($result)) {
$data[$line['id_parent']][] = $line;
$names_by_id[$line['id']]=$line['name'];
}
 
foreach($data as $key => $items){
echo '<div>'.$key.'-'.$names_by_id[$key].'</div>';
echo '<table>';
foreach($items as $item){
echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td></tr>';
}
echo '</table>';
}
Не будь паразитом, сделай что-нибудь самостоятельно!
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #26 : 29.04.2014, 16:36:59 »
А вам не кажется, что при паре миллионов записей эта штука будет жутко тормозить и выносить мозг процессору. Или пагнинацию (limit), надо делать.
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #27 : 29.04.2014, 17:13:06 »
А вам не кажется, что при паре миллионов записей эта штука будет жутко тормозить и выносить мозг процессору. Или пагнинацию (limit), надо делать.
50000 максимум... миллион записей - думаю это коммерческие проекты - там и нанять можно спеца!! а тут школьная тематика..... бюджет...(((

СПС огромное всем, кто помог, ВАШ должник!! если не боитесь криворукой верстки, то обращайтесь))) чутка шутканул...
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #28 : 29.04.2014, 21:03:06 »
Код: php-brief
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
$data = array();
$names_by_id=array();
while ($line = mysql_fetch_array($result)) {
$data[$line['id_parent']][] = $line;
$names_by_id[$line['id']]=$line['name'];
}
 
foreach($data as $key => $items){
echo '<div>'.$key.'-'.$names_by_id[$key].'</div>';
echo '<table>';
foreach($items as $item){
echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td></tr>';
}
echo '</table>';
}


name_parent не нашел, где он там?))) не вставляет имя.
в 6 строчке чтоли? вместо name надо name_parent ?
вот это работает:
Код
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
$data = array();
$names_by_id=array();
while ($line = mysql_fetch_array($result)) {
$data[$line['id_parent']][] = $line;
$names_by_id[$line['id_parent']]=$line['name_parent'];
}
 
foreach($data as $key => $items){
echo '<div>'.$key.'-'.$names_by_id[$key].'</div>';
echo '<table>';
foreach($items as $item){
echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td></tr>';
}
echo '</table>';
}

СУПЕР! СПС!
« Последнее редактирование: 29.04.2014, 21:16:29 от verstalshik »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
*

verstalshik

  • Завсегдатай
  • 1754
  • 95 / 1
Re: MySQL - цикл в цикле - как сделать проще
« Ответ #29 : 29.04.2014, 21:36:41 »
Ну по аналогии с тем кодом только три цикла:
Код: php
$data = array();
while ( $line = mysql_fetch_array( $result ) ) {
if ( !empty( $line['id_parent'] ) ) {
$data[$line['name_parent']][$line['name_second']][] = $line;
}
}

foreach ( $data as $titleParent => $parents ) {
echo '<div>' . $titleParent . '</div>';
echo '<table>';
foreach ( $parents as $titleChildren => $items ) {
echo '<tr><td colspan="2">' . $titleChildren . '</td></tr>';
foreach ( $items as $item ) {
echo '<tr><td>' . $item['id'] . '</td><td>' . $item['name'] . '</td></tr>';
}
}
echo '</table>';
}
это проверил, все четко! СПС! но заметил - теперь не по id_parent будет сортировать, а по name_parent? В базе ORDER BY id_parent.
« Последнее редактирование: 29.04.2014, 21:40:44 от verstalshik »
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужно сделать Jquery Exit Popup

Автор olegtlt

Ответов: 2
Просмотров: 1985
Последний ответ 09.02.2016, 11:51:33
от Stomp
Как сделать пагинацию в Списке всех категорий?

Автор Sergeyy

Ответов: 12
Просмотров: 1667
Последний ответ 30.07.2014, 20:33:10
от Sergeyy
Как добавить новый столбец и сделать сортировку?

Автор artemka

Ответов: 10
Просмотров: 2403
Последний ответ 17.07.2014, 01:04:32
от artemka
Как установленный компонент сделать установочным файлом?

Автор ftorit

Ответов: 0
Просмотров: 962
Последний ответ 31.05.2014, 22:17:57
от ftorit
Заголовок страницы компонента в админке: как сделать?

Автор shurikkan

Ответов: 2
Просмотров: 1096
Последний ответ 03.12.2013, 00:43:17
от shurikkan