Помогите соединить php и JavaScript
Доброго времени суток. Занялся изучением javaScript. И вот решил написать следующую штуку:
show/hide для текста который хранится в базе данных. Изначально мы не знаем сколько записей у нас в таблице и все нужно делать через цикл. Таблица базы: Код:
CREATE TABLE `ben` ( "bentitle" - название услуги(собственно по нажатию которой и должен разворачиваться скрытый текст) "benpost" - описание услуги(show/hide текст) config.php: <?php $db_host = 'localhost'; $db_user = 'root'; $db_pasw = 'Angelbk'; $db_name = 'syit2'; // Соединяемся, выбираем базу данных $db_info = mysql_connect($db_host, $db_user, $db_pasw) or die("Could not connect : " . mysql_errno() . " " . mysql_error()); mysql_select_db($db_name, $db_info) or die("Select database not successfull : " . mysql_errno() . " " . mysql_error()); ?> funct.php: <?php require_once("config.php"); //указываем нужную кодировку mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); function gettable($tablename) //функция которая осуществляет чтение записи в таблице выводит ее на экран { //результирующий набор данных хранится в переменной $sql $sql = mysql_query("SELECT * FROM $tablename"); $i = 0; while ($tablerows = mysql_fetch_row($sql)) { //теперь в цикле для каждой полученной строки сделаем вывод //$tablerows[1] соответствует полю "первичный текст" //$tablerows[2] соответствует полю "заголовок услуги" //$tablerows[3] соответствует полю "текст услуги" echo("$tablerows[1]<br>$tablerows[2]<br>$tablerows[3]"); } } ?> inex.php: <?php require_once("funct.php"); gettable(ben); ?> Все выводится сколько бы записей я не делал все нормально. После чего взял вот такой JavaScript java.php: <style> .myViewLinks { display: none; } </style> <script> // Обворачиваем функцию toggle в локальное замыкание: var toggle = function() { // Ссылка на текущий открытый div: var currentDiv = null; // Функция для "раскрытия" элемента: function open(divElement) { // Тут можно добавить эффект "плавного" открытия: divElement.style.display = "block"; currentDiv = divElement; } // Функция для "закрытия" элемента: function close(divElement) { // Тут можно добавить эффект "плавного" закрытия: divElement.style.display = "none"; currentDiv = null; } // Возвращаем функцию, которая будет вызываться по toggle() return function(divID) { // Получаем элемент из DOM var divElement = document.getElementById(divID); // Если такой есть: if (divElement) { // Если уже открыт этот div, то просто закрываем. if (divElement === currentDiv) { close(currentDiv); // Если открыт другой div, то закрываем и открываем текущий: } else if(currentDiv != null) { close(currentDiv); open(divElement); // Иначе - просто открываем: } else open(divElement); } } // Вызываем нашу "обертку", теперь toggle() вызывает функцию, описанную по "return" }(); </script> <a href="javascript://" onClick="toggle('div1');return false;">Блок скрытого текста один</a> <div class="myViewPost" id="div1"> Сдесь содержится текст который показывается и скрывается</div> <br /> <a href="javascript://" onClick="toggle('div2');return false;">Блок скрытого текста два</a> <div class="myViewPost" id="div2"> Сдесь содержится текст который показывается и скрывается </div> Опять таки все нормально работает открывается и закрывается. Попробовал соединить funct.php и java.php получилась следующее: funct_java.php <style> .myViewLinks { display: none; } </style> <script language="JavaScript"> // Обворачиваем функцию toggle в локальное замыкание: var toggle = function() { // Ссылка на текущий(current) открытый div: var currentDiv = null; // Функция для "раскрытия" элемента: function open(divElement) { // Тут можно добавить эффект "плавного" открытия: divElement.style.display = "block"; currentDiv = divElement; } // Функция для "закрытия" элемента: function close(divElement) { // Тут можно добавить эффект "плавного" закрытия: divElement.style.display = "none"; currentDiv = null; } // Возвращаем функцию, которая будет вызываться по toggle() return function(divID) { // Получаем элемент из DOM var divElement = document.getElementById(divID); // Если такой есть: if (divElement) { // Если уже открыт этот div, то просто закрываем. if (divElement === currentDiv) { close(currentDiv); // Если открыт другой div, то закрываем и открываем текущий: } else if(currentDiv != null) { close(currentDiv); open(divElement); // Иначе - просто открываем: } else open(divElement); } } // Вызываем нашу "обертку", теперь toggle() вызывает функцию, описанную по "return" }(); </script> <?php require_once("config.php"); mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); function gettable($tablename) //функция которая осуществляет чтение записи в таблице выводит ее на экран { //результирующий набор данных хранится в переменной $sql $sql = mysql_query("SELECT * FROM $tablename"); $i = 0; while ($tablerows = mysql_fetch_row($sql)) { $i=$i+1; echo(" $tablerows[1] <a href="$i" onClick="toggle('$tablerows[2]');return false;">$tablerows[2]</a> <div class="myViewLinks" id="$tablerows[2]"> <br> $tablerows[3] <br> </div> "); } } ?> соответственно переделываем index.php: <?php require_once("funct_java.php"); gettable(ben); ?> Вместо списка который мне нужно получить я получаю пустую страницу. помогите пожалуйста соединить эти два скрипта. PS. Простите что так много текста просто хотел как можно подробнее описать все. |
1)у вас тут написано много лишнего, и неформатированным образом к тому же.
разбираться в этом ни у кого не возникнет желания. приведите свой код к минимально необходимому нерабочему примеру 2)наврено вам нужен AJAX 3)Изучите основы JS. а потом задавайте вопросы |
Цитата:
Спасибо за помощь)) Насчет лишнего спорить не буду может и много(описание например). Если бы у вас нормально работал тег "СОDE" то и разбираться было бы легче)) Насчет учи JS)) Я именно этим и занимаюсь но на конкретных примерах. Именно так изучил HTML PHP и CSS)) И маленькая просьба. Если не знаете ответа на конкретно поставленный вопрос не постите пожалуйста учи JS, гугл тебе в помощь и тд. Давайте не будем заниматься флудом и уважительно относится к людям которые задают вопросы. |
Цитата:
|
Цитата:
на форцме есть еще как минимум теги "CSS", "PHP", "HTML", "JS" подробнее о форматировании ив связи с отсутсвием форматирования и явной избыточностью кода, ваш пример не предоставляется возможным с ходу разобрать. а тратить свое время на то чтобы разобрать ваш код, если вы не соизволили потратить время на сведение проблемы к минимальному коду, у меня как и у других людей нету желания. локализуйте свою проблему, и дайте форматированный код, тогда возможно кто-то вам поможет |
Цитата:
|
Цитата:
|
вы только к своему четвертому сообщению отредактировали свой изанчальный пост под вменяемые требования.
теперь хоть визуально видно, что у вас творится теперь же внимательно посмотрите свой файл funct_java.php в теле вашего первого сообщения нчиего странного не замечаете в PHP-функции gettable ? вы ж ведь специалист PHP, так фигали такие глупые ошибки в нем делаете? |
Цитата:
Я понимаю что ошибка в while ($tablerows = mysql_fetch_row($sql)) { $i=$i+1; echo(" $tablerows[1] <a href="$i" onClick="toggle('$tablerows[2]');return false;">$tablerows[2]</a> <div class="myViewLinks" id="$tablerows[2]"> <br> $tablerows[3] <br> </div> "); } Теперь вопрос что я неправильно делаю? |
Цитата:
Цитата:
а ошибка у вас из новичковых была цитата на баше(к сожалению так иу мерла в бездне): Цитата:
и экранировать спецсимволы в строках у вас внутри строки неэкранированые двойные кавычки, как результат код не парсится даже верно для отлова таких обидных ошибок не надо отключать вывод ошибок, ькак вы это сделали. ИТОГ: вы нуб в PHP, а когда вам говорят что вы нуб в JS, вы утверждаете что учите его также как PHP, и, мол это хорошая методика обучения как говорил мой друг: "аффтар нуб и апазорился" |
Часовой пояс GMT +3, время: 10:42. |