Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2010, 19:25
Новичок на форуме
Отправить личное сообщение для Berenold Посмотреть профиль Найти все сообщения от Berenold
 
Регистрация: 23.05.2010
Сообщений: 9

Помогите соединить php и JavaScript
Доброго времени суток. Занялся изучением javaScript. И вот решил написать следующую штуку:
show/hide для текста который хранится в базе данных. Изначально мы не знаем сколько записей у нас в таблице и все нужно делать через цикл.
Таблица базы:
Код:
CREATE TABLE `ben` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `post` longtext NOT NULL,
  `bentitle` varchar(255) NOT NULL,
  `benpost` longtext NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;
"post" - просто текст который пишется перед скрываемым,
"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. Простите что так много текста просто хотел как можно подробнее описать все.

Последний раз редактировалось Berenold, 23.05.2010 в 21:32.
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2010, 20:56
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

1)у вас тут написано много лишнего, и неформатированным образом к тому же.
разбираться в этом ни у кого не возникнет желания.
приведите свой код к минимально необходимому нерабочему примеру
2)наврено вам нужен AJAX
3)Изучите основы JS. а потом задавайте вопросы
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2010, 21:13
Новичок на форуме
Отправить личное сообщение для Berenold Посмотреть профиль Найти все сообщения от Berenold
 
Регистрация: 23.05.2010
Сообщений: 9

Сообщение от Gvozd Посмотреть сообщение
1)у вас тут написано много лишнего, и неформатированным образом к тому же.
разбираться в этом ни у кого не возникнет желания.
приведите свой код к минимально необходимому нерабочему примеру
2)наврено вам нужен AJAX
3)Изучите основы JS. а потом задавайте вопросы
Сразу извинюсь за ОФФТОП.
Спасибо за помощь)) Насчет лишнего спорить не буду может и много(описание например). Если бы у вас нормально работал тег "СОDE" то и разбираться было бы легче)) Насчет учи JS)) Я именно этим и занимаюсь но на конкретных примерах. Именно так изучил HTML PHP и CSS)) И маленькая просьба. Если не знаете ответа на конкретно поставленный вопрос не постите пожалуйста учи JS, гугл тебе в помощь и тд. Давайте не будем заниматься флудом и уважительно относится к людям которые задают вопросы.
Ответить с цитированием
  #4 (permalink)  
Старый 23.05.2010, 21:19
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Berenold
И маленькая просьба. Если не знаете ответа на конкретно поставленный вопрос не постите пожалуйста учи JS, гугл тебе в помощь и тд. Давайте не будем заниматься флудом и уважительно относится к людям которые задают вопросы.
http://phpclub.ru/faq/WhyForum
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2010, 21:23
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Berenold
Если бы у вас нормально работал тег "СОDE"
на зеркало неча пенять, коль...
на форцме есть еще как минимум теги "CSS", "PHP", "HTML", "JS"
подробнее о форматировании

ив связи с отсутсвием форматирования и явной избыточностью кода, ваш пример не предоставляется возможным с ходу разобрать.
а тратить свое время на то чтобы разобрать ваш код, если вы не соизволили потратить время на сведение проблемы к минимальному коду, у меня как и у других людей нету желания.

локализуйте свою проблему, и дайте форматированный код, тогда возможно кто-то вам поможет
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2010, 21:28
Новичок на форуме
Отправить личное сообщение для Berenold Посмотреть профиль Найти все сообщения от Berenold
 
Регистрация: 23.05.2010
Сообщений: 9

Сообщение от Octane Посмотреть сообщение
http://phpclub.ru/faq/WhyForum
Ну спасибо)) Я именно этим сейчас и занимаюсь)) Понял я одно, вместо того, что бы дать какие-то дельные советы по решению проблемы на этом форуме "МЕГА"программисты только то и делают что тыкают задающих вопрос лицом то в учи JS, то в правила форума)) Спасибо и на этом))
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2010, 21:38
Новичок на форуме
Отправить личное сообщение для Berenold Посмотреть профиль Найти все сообщения от Berenold
 
Регистрация: 23.05.2010
Сообщений: 9

Сообщение от Gvozd Посмотреть сообщение
на зеркало неча пенять, коль...
на форцме есть еще как минимум теги "CSS", "PHP", "HTML", "JS"
Блин ну вот опять)) Давайте уважать людей которые задают вопрос! А на поговорку преведенную вами могу ответить: "Относись к людям так как ты хочешь, что бы относились к тебе!" Текст исправил! По поводу локализовать проблему... Я по моему в первом своем посте уже так все подробно расписал что просто ппц. Есть скрипт PHP который считывает и выводит данные которые содержатся в таблице "ben". Саму таблицу тоже привел. Есть JS который делает показать/скрыть текст. И то и другое работает по отдельности. Не могу связать теперь все это в кучу. Куда уж конкретнее))
Ответить с цитированием
  #8 (permalink)  
Старый 23.05.2010, 21:51
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вы только к своему четвертому сообщению отредактировали свой изанчальный пост под вменяемые требования.
теперь хоть визуально видно, что у вас творится

теперь же внимательно посмотрите свой файл funct_java.php в теле вашего первого сообщения
нчиего странного не замечаете в PHP-функции gettable ?
вы ж ведь специалист PHP, так фигали такие глупые ошибки в нем делаете?
Ответить с цитированием
  #9 (permalink)  
Старый 23.05.2010, 22:06
Новичок на форуме
Отправить личное сообщение для Berenold Посмотреть профиль Найти все сообщения от Berenold
 
Регистрация: 23.05.2010
Сообщений: 9

Сообщение от Gvozd Посмотреть сообщение
вы ж ведь специалист 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>
        ");
	    }


Теперь вопрос что я неправильно делаю?
Ответить с цитированием
  #10 (permalink)  
Старый 23.05.2010, 22:21
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Berenold
Был бы специалистом Я б вопросы не задавал))
согласно вашей фразе:
Сообщение от Berenold
Именно так изучил HTML PHP и CSS
вы уже знаете хотя бы базово PHP
а ошибка у вас из новичковых
была цитата на баше(к сожалению так иу мерла в бездне):
Цитата:
детей надо с детства учить не разговаривать с незнакомцами, и проверять на переполнение
хотел бы дополнить:
и экранировать спецсимволы в строках
у вас внутри строки неэкранированые двойные кавычки, как результат код не парсится даже верно
для отлова таких обидных ошибок не надо отключать вывод ошибок, ькак вы это сделали.
ИТОГ:
вы нуб в PHP, а когда вам говорят что вы нуб в JS, вы утверждаете что учите его также как PHP, и, мол это хорошая методика обучения
как говорил мой друг: "аффтар нуб и апазорился"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
Помогите, пож, младенцу восстановить работоспобность JavaScript MishkaKosolapij Общие вопросы Javascript 4 16.08.2009 23:02
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23
JAVASCRIPT в цикле PHP Nobls Общие вопросы Javascript 3 04.12.2008 17:51