Доброго времени суток. Занялся изучением javaScript. И вот решил написать следующую штуку:
show/hide для текста который хранится в базе данных. Изначально мы не знаем сколько записей у нас в таблице и все нужно делать через цикл.
Таблица базы:
1.
2.
3.
4.
5.
6.
7.
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:
1.
2.
3.
4.
5.
6.
7.
8.
<?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:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?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:
1.
2.
3.
4.
<?php
require_once("funct.php");
gettable(ben);
?>
Все выводится сколько бы записей я не делал все нормально.
После чего взял вот такой JavaScript
java.php:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
<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:
1.
2.
3.
<?php
require_once("funct_java.php");
gettable(ben);
?>
Вместо списка который мне нужно получить я получаю пустую страницу. помогите пожалуйста соединить эти два скрипта.
PS. Простите что так много текста просто хотел как можно подробнее описать все.