Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие данных в соседнем столбике 
:(
    Опции темы
Самозванка
Дата 24.7.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Есть две БД CLSGOOD и GRPGOOD. Берем данные из CLSGOOD. И по столбцу CLASSID в левом столбце таблицы строим дерево значений. При нажатии на значение, в правом столбце должно появляться список значений из БД GRPGOOD, которые связаны между собой CLASSID = GOODCLASSID. 

Так вот проблема в том как сделать так, чтобы вывести при нажатии на ссылку в левой колонке, список в правую колонку таблицы. 

Вот мой код:
Код

<script language="JavaScript">
function changeDisplay(id)
{
  var ul = document.getElementById('ul' + id).style;
  var li = document.getElementById('li' + id).style;
  if ( 'none' == ul.display )
  {
    ul.display = 'block';
    li.listStyleImage = 'url("open.gif")';
  }
  else
  {
    ul.display = 'none';
    li.listStyleImage = 'url("closed.gif")';
  }
}
</script>
<?php
echo ("<table width=100% height=100% border=2><tr><td width=50% align=left valign=top>");
$conn = odbc_connect( "BP", "DBA", "SQL" );
$sSQL="SELECT CLASSID, CLASSNAME FROM CLS_GOOD ORDER BY CLASSID ";
$nSQL="SELECT GOODCLASSID, GOODNAME FROM GRPGOODS ORDER BY GOODCLASSID ";
$result=odbc_exec($conn, $sSQL);
$result2=odbc_exec($conn, $nSQL);
$k=0;
for ($i=0; $i<odbc_num_rows($result); $i++)
{
$k++;
$f=odbc_fetch_array($result, $i+1);
$v=odbc_fetch_array($result, $i+2);
$vc=strlen($v[CLASSID]);
$fc=strlen($f[CLASSID]);
$min1=($fc-$vc)/5;
$min2=($vc-$fc)/5;
if ($vc>$fc) {
echo "<li id='li$k')'>\n";
echo ("<a href=\"javascript: changeDisplay('$k'); \">".$f["CLASSNAME"]."</A>"."  \n");
echo ("</li>");
echo ("<UL id='ul$k' style='display: none;'>\n");
}
if ($vc<$fc) {
echo("<li>\n");
echo ("<a href=>".$f["CLASSNAME"]."</A>"."  \n");
echo ("</li>");
for ($j = 0; $j<$min1; $j++) echo("</UL>\n");
}
if ($vc==$fc) {
echo("<li>\n");
echo ("<a href=>".$f["CLASSNAME"]."</A>"."  \n");
echo ("</li>");
}
echo ("</td><td align=left valign=top>");
for ($j=0; $j<odbc_num_rows($result2); $j++)
{
$l=odbc_fetch_array($result2);
if ($f[CLASSID]==$l[GOODCLASSID]) {
echo("<li>\n");
echo ("<a href=>".$l["GOODNAME"]."</A>"."  \n");
echo ("</li>");
}
}
}
odbc_close( $conn );
echo ("</td></tr></table>");
?>

PM MAIL ICQ   Вверх
Leoo
Дата 24.7.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



сдесь лучше всего использовать Ajax, при нажатии на ссылку он быстро сгоняет на сервер и вернет нужные данные


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Самозванка
Дата 24.7.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Leoo,  а вариантов без Ajax совсем нет никаких?
PM MAIL ICQ   Вверх
Leoo
Дата 24.7.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



есть.  Можно сделать два фрейма и передовать между ними данные. Но мне кажеться что с Ajax будет быстрее работать, да и делаеться легче

я так понял у тебя с одной стороны какой то список, а с другой выводяться данные в зависимости от того что выбранно?

Это сообщение отредактировал(а) Leoo - 24.7.2007, 11:39


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Самозванка
Дата 24.7.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Leoo, а можно просто примерчик тогда, как с помощью AJAx сделать обновление второго столбика таблицы при нажатии на ссылку, просто даже не с базами,а так...
PM MAIL ICQ   Вверх
Leoo
Дата 24.7.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



тебе надо почитать технологию Ajax. скачать библиотеку можно тут


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Самозванка
Дата 24.7.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



А можно ли сделать так, что при нажатие на ссылку, будет переходить на этуже страницу, но с переменной хранящейся в этой ссылке и с помощью этой переменной по другому будут грузиться данные в правом столбике?
PM MAIL ICQ   Вверх
Leoo
Дата 24.7.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



можно


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Самозванка
Дата 24.7.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Ну вот в принципе в этом и состоит вопрос, как это сделать, я пробую так:
Код

<script language="JavaScript">
function changeDisplay(id)
{
  var ul = document.getElementById('ul' + id).style;
  var li = document.getElementById('li' + id).style;
  if ( 'none' == ul.display )
  {
    ul.display = 'block';
    li.listStyleImage = 'url("open.gif")';
  }
  else
  {
    ul.display = 'none';
    li.listStyleImage = 'url("closed.gif")';
  }
}
</script>
<?php
echo ("<table width=100% height=100% border=2><tr><td width=50% align=left valign=top>");
$conn = odbc_connect( "BP", "DBA", "SQL" );
$sSQL="SELECT CLASSID, CLASSNAME FROM CLS_GOOD ORDER BY CLASSID ";
$nSQL="SELECT GOODCLASSID, GOODNAME FROM GRPGOODS ORDER BY GOODCLASSID ";
$result=odbc_exec($conn, $sSQL);
$result2=odbc_exec($conn, $nSQL);
//odbc_result_all($result);
//$n=odbc_fetch_row($result,2);
//echo $n;
$k=0;
for ($i=0; $i<odbc_num_rows($result); $i++)
{
$k++;
$f=odbc_fetch_array($result, $i+1);
$v=odbc_fetch_array($result, $i+2);
$vc=strlen($v[CLASSID]);
$fc=strlen($f[CLASSID]);
$min1=($fc-$vc)/5;
$min2=($vc-$fc)/5;
if ($vc>$fc) {
echo "<li id='li$k')'>\n";
echo ("<a href=\"javascript: changeDisplay($k); document.location.href='indextrue.php'; \">".$f["CLASSNAME"]."</A>"."  \n");
echo ("</li>");
echo ("<UL id='ul$k' style='display: none;'>\n");
}
if ($vc<$fc) {
echo("<li>\n");
echo ("<a href=>".$f["CLASSNAME"]."</A>"."  \n");
echo ("</li>");
for ($j = 0; $j<$min1; $j++) echo("</UL>\n");
}
if ($vc==$fc) {
echo("<li>\n");
echo ("<a href=>".$f["CLASSNAME"]."</A>"."  \n");
echo ("</li>");
}

/*$nSQL="SELECT GOODCLASSID, GOODNAME FROM GRPGOODS ORDER BY GOODCLASSID ";
$result2=odbc_exec($conn, $nSQL);
for ($j=0; $j<odbc_num_rows($result2); $j++)
{
$f=odbc_fetch_array($result);
$v=odbc_fetch_array($result2);
if ($f[CLASSID]==$v[GOODCLASSID]) echo "fdfsf";
//echo("<li>\n");
//echo ("<a href=>".$v["GOODNAME"]."</A>"."  \n");
//echo ("</li>");
}*/
}
echo ("</td><td align=left valign=top>");
odbc_close( $conn );
echo ("</td></tr></table>");
?>


Но тут при выборе какой то ссылки, обновляется это страница, но положение (развернуто или нет) дерева не остается таким же.
PM MAIL ICQ   Вверх
Leoo
Дата 24.7.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



я тогда не до конца понимаю, что именно ты хочешь сделать


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Самозванка
Дата 24.7.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Есть таблица с двумя столбиками. В первом столбике отображается дерево видов товаров, первоначально оно в закрытом состоянии. При нажатии на какую либо ссылку из этого дерево, я хочу чтоб страничка обновлялась , дерево раскрывалась( это уже реализовано) и в правом столбике отображался список товаров, который принадлежит к данному виду. Все данные берутся из БД,
Загвоздка у меня сейчас в том, как сделать, чтобы дерево при нажатии сохраняла свое состояние и справа появлялся список товаров, принадлежащей к данному ввиду(ссылка). Вот что то типа такого... Ajax слишком сложно для меня пока, я почитала, но не особо разобралась, хотелось бы сделать это на пхп.
PM MAIL ICQ   Вверх
Leoo
Дата 24.7.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



сейчас ты передаешь параметр по которому идет выборка из БД

можно еще передовать параметр который отвечал бы за состояние дерева


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Самозванка
Дата 24.7.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Leoo, так а как это реализовать? просто дерево как Вы могли заметь у меня строиться в цикле, и как этот параметр приделать к нему?
PM MAIL ICQ   Вверх
SelenIT
Дата 24.7.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Цитата(Самозванка @  24.7.2007,  14:12 Найти цитируемый пост)
дерево как Вы могли заметь у меня строиться в цикле, и как этот параметр приделать к нему? 

Можно на каждом шаге цикла сравнивать ID (или хотя бы порядковый номер, раз уж с этим деревом такая свистопляска) текущей ветви с переданным параметром. Если не совпало - вписывать style='display: none;', если совпало - ничего не вписывать...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Flashdown
Дата 24.7.2007, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 27.5.2006
Где: Москва

Репутация: нет
Всего: нет



вряд ли кому-то понравится использование вашей разработки, где для того чтоб открыть узел дерева надо перезагружать страницу... 
лучше всё таки задуматься над аяксом...
сначала найди реализацию раскрывающегося дерева на JavaScript, изучи основы AJAX, поставь обработчики событий на открытие/закрытие узлов и во время открытия узла подгружай данные из БД
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1040 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.