Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перезагрузка функции 
V
    Опции темы
kulikoff
Дата 4.2.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



есть код на РНР, который просто вызывает функцию JavaScript с использованием innerHTML и подставляет значения из БД MySQL
собственно, код:
Код

<?php
    echo("<table width='99%' border='0'>");
    $text="select property_group_id, property_group_name from property_group where property_group_subcat_id=$_GET[subcat]";
    $query=mysql_query($text);
        if(mysql_num_rows($query)>0){
            while($temp=mysql_fetch_array($query)) {
                echo("<script>");
                    echo("function show(elem) {");
                        echo("if (document.getElementById('t'+elem.id).className == 'hidden') {");
                            echo("document.getElementById('t'+elem.id).className = 'white';");
                            echo("elem.innerHTML =  '- $temp[property_group_name]';");
                        echo("} else {");
                            echo("document.getElementById('t'+elem.id).className = 'hidden';");
                            echo("elem.innerHTML =  '+ $temp[property_group_name]';");
                        echo("}");
                    echo("}");
                echo("</script>");
                echo("<tr><td><div style='text-align: left;'><span id='r_$temp[property_group_id]' onclick='show(this);'>+ $temp[property_group_name]</span></div></td></tr>");
                echo("<tr id='tr_$temp[property_group_id]' class='hidden'><td colspan=1>");
                    $stext="select * from property where property_group_id=$temp[property_group_id] and property_search=1";
                    $squery=mysql_query($stext);
                    while($stemp=mysql_fetch_array($squery)) {
                        echo("<fieldset width='98%'>");
                            echo("<legend>$stemp[property_name]</legend>");
                        echo("</fieldset>");
                    }
                echo("</td></tr>");
            }
        }
    echo("</table>");
?>

Всё работает отлично, кроме одного "но": строки echo("elem.innerHTML =  '- $temp[property_group_name]';"); и echo("elem.innerHTML =  '+ $temp[property_group_name]';"); получают значение переменной $temp[property_group_name] только один раз, а я ожидал, что, т.к. функция объвявляется внутри цикла while($temp=mysql_fetch_array($query)) { }, то и будет получать значения каждого следующего прохода. 
В итоге я имею такое - при загрузке страницы всё выглядит просто идеально, названия группы свойств выводятся, как положено. Как только стоит мне нажать на "+" или "-" - названия меняются на первое из прохода цикла. Как с этим побороться, подскажите, плиз
PM MAIL WWW ICQ Skype   Вверх
kulikoff
Дата 4.2.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проблема решена. Вдруг кому-то когда пригодится, внес следующие правки:
Код

echo("<table width='99%' border='0'>");
    $text="select property_group_id, property_group_name from property_group where property_group_subcat_id=$_GET[subcat]";
    $query=mysql_query($text);
        if(mysql_num_rows($query)>0){
            while($temp=mysql_fetch_array($query)) {
                echo("<script>");
                    echo("function show$temp[property_group_id](elem) {");
                        echo("if (document.getElementById('t'+elem.id).className == 'hidden') {");
                            echo("document.getElementById('t'+elem.id).className = 'white';");
                            echo("elem.innerHTML =  '- $temp[property_group_name]';");
                        echo("} else {");
                            echo("document.getElementById('t'+elem.id).className = 'hidden';");
                            echo("elem.innerHTML =  '+ $temp[property_group_name]';");
                        echo("}");
                    echo("}");
                echo("</script>");
                echo("<tr><td><div style='text-align: left;'><span id='r_$temp[property_group_id]' onclick='show$temp[property_group_id](this);'>+ $temp[property_group_name]</span></div></td></tr>");
                echo("<tr id='tr_$temp[property_group_id]' class='hidden'><td colspan=1>");
                    $stext="select property_id, property_name from property where property_group_id=$temp[property_group_id] and property_search=1";
                    $squery=mysql_query($stext);
                    while($stemp=mysql_fetch_array($squery)) {
                        echo("<fieldset width='98%'>");
                            echo("<legend>$stemp[property_name]</legend>");
                            $counter=1;
                            echo("<table width='100%'><tr>");
                                $sstext="select property_znach from property_znach where property_id=$stemp[property_id]";
                                $ssquery=mysql_query($sstext);
                                while($sstemp=mysql_fetch_array($ssquery)) {
                                    echo("<td width='33%'><div align='left'><input type='checkbox' name='$stemp[property_id]$sstemp[property_znach]'> $sstemp[property_znach]</div>");
                                    if ($counter%3==0) {
                                        echo("</td></tr><tr>");
                                    } else {
                                        echo("</td>");
                                    }
                                    $counter++;
                                }
                            echo("</table>");
                        echo("</fieldset>");
                    }
                echo("</td></tr>");
            }
        }
    echo("</table>");


Знаю, что не самый лучший стиль программирования, но на первое время сойдет, а дальше буду оптимизировать
PM MAIL WWW ICQ Skype   Вверх
doremidon
Дата 7.2.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 3.3.2008

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



Код

property_group_subcat_id=$_GET[subcat]


Если вставите такой код на работающий сайт == Вас с лёгкостью взломают.. хорошо если уже подстраховались, в противном случае прочтите про SQL - инЪекции smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




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


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

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