[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: добавление информации на страницу
as009
Всем привет!
Возник опять вопрос...

Есть таблица в БД где хранится информация о пользователях.
Нужно вывести такой список:

Имя Фамилия (подробно)

При нажатии "(подробно) " под именем и фамилией вывести адрес, телефон и т.д НЕ ПЕРЕГРУЖАЯ СТРАНИЦЫ.

Искал такое в google вроде такое делается с помощью javascript или ajax.
Кто то такое пробовал делать, на чем проще скрипт писать и вообще насколько он большой???
И как выводить этот список в таблице???




Спустя 9 минут, 29 секунд (18.01.2011 - 01:07) ИНСИ написал(а):
Делается это так:

1. Имеем Кнопку "Подробнее"
2. Делаем в js код:
        function showBox(div) {
if(document.getElementById(div).style.display == 'none')
document.getElementById(div).style.display = 'block';
else
document.getElementById(div).style.display = 'none';
}

3. В диве прописываем: id='div_1' onClick="showBox('div_1');"

Спустя 23 минуты, 55 секунд (18.01.2011 - 01:31) as009 написал(а):
Спасибо большое!!!
Я думал это очень сложно.

Расскажите пожалуйста как оно должно работать.
Я должен в отдельный div запихнуть подробную информацию и скрыть её, а при клике показать??

Например у меня есть список:

user1(подробно)
user2 (подробно)

При нажатии "подробно" на user1:
user1
->address phone city
user2

Получается user2 сместился ниже, а на его месте вывелась инф. о user1
Или как-то по другому???

Спустя 54 минуты, 3 секунды (18.01.2011 - 02:25) Crash2007 написал(а):
пробуй ph34r.gif

Спустя 23 минуты, 11 секунд (18.01.2011 - 02:49) ИНСИ написал(а):
Должно быть так:
user1 (<a href="#"  onClick="showBox('div_1');" >подробно</a>)
<div id="div_1" style="display: none;">address phone city</div>


user2 (<a href="#"  onClick="showBox('div_2');" >подробно</a>) 
<div id="div_2" style="display: none;">address phone city div 2</div>


Заметь, у каждого спрятанного дива, должен быть уникальный id

Спустя 21 час, 29 минут, 44 секунды (19.01.2011 - 00:18) as009 написал(а):
Спасибо большое, заработало!!!
Но только для одной записи user1

Дело в том что насколько я понял из кода то для каждого user я должен создавать отдельную ссылку и div.
Список достается из БД количество записей user я не знаю, постоянно меняется,
по этому я не смогу для каждого писать код.
Может можно как-то автоматизировать процесс создания div и ссылок.
Что бы сколько записей user столько и генерировалось ссылок.
Получается нужно заранее узнать сколько записей в БД, а потом в цикле их как то создавать или по другому???

Спустя 14 часов, 16 минут, 44 секунды (19.01.2011 - 14:35) ИНСИ написал(а):
as009 я у себя сейчас проверил и все работает для обоих дивов, вот:
Свернутый текст
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Untitled Document</title>
<script>
function
showBox(div) {
if(document.getElementById(div).style.display == 'none')
document.getElementById(div).style.display = 'block';
else
document.getElementById(div).style.display = 'none';
}
</script>
</head>

<body>

user1 (<a href="#" onClick="showBox('div_1');" >подробно</a>)
<div id="div_1" style="display: none;">address phone city</div>

user2 (<a href="#" onClick="showBox('div_2');" >подробно</a>)
<div id="div_2" style="display: none;">address phone city div 2</div>
</body>
</html>



Цитата
по этому я не смогу для каждого писать код.

и не надо. Я же тебе сказал:
Цитата
Заметь, у каждого спрятанного дива, должен быть уникальный id

Получается, когда ты выводишь данные из БД, то делай вот так:
        echo '
user '
. $id . ' (<a href="#" onClick="showBox(\'div_'.$id.'\');" >подробно</a>)
<div id="div_'
.$id.'" style="display: none;">тут инфа спрятанная</div>
'
;

$id - это уникальный номер пользователя

Спустя 8 часов, 17 минут, 58 секунд (19.01.2011 - 22:53) Guest написал(а):
Все заработало как надо!!!)

И еще у меня есть такой код:

<div id="third">
<center><font
color=#9e9e9e><u><b>Phones<b></u></center><br>
<input
type="text" name="T1" size="15">
<br><br><input
type="text" name="T2" size="15">
<a
href="" onclick="Add()" >add</a>
</div>




function Add()
{
document.write(<form><input type="text">name="phone" size="15"</form> ");
document.write("<br />");
}


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

Спустя 1 час, 11 минут, 42 секунды (20.01.2011 - 00:05) sharki написал(а):
Guest
А кавычки кто будет ставить?

function Add() 
{
document.write('<form><input type="text" name="phone" size="15"></form>');
document.write("<br />");
}


Спустя 39 минут, 9 секунд (20.01.2011 - 00:44) as009 написал(а):
С кавычками заработало, но нет так как ожидал:
вот код:
  <div id="third">
<center><font
color=#9e9e9e><u><b>Phones<b></u></center><br>
<input
type="text" name="T1" size="15">
<br><br><input
type="text" name="T2" size="15">
<a
href="" onclick="Add()">add</a>
</div>

При нажатии на ссылку нужно чтоб поле для записи появлялось под теми полями которые уже есть.
А вместо этого открывается новая страница, появляется поле и страница сразу закрывается....

Спустя 18 часов, 36 минут, 18 секунд (20.01.2011 - 19:20) as009 написал(а):
Подскажите пожалуйста как применить javascript к конкретному div ???

Спустя 19 минут, 8 секунд (20.01.2011 - 19:39) inpost написал(а):
обращайся по ID

Спустя 10 минут, 7 секунд (20.01.2011 - 19:49) Игорь_Vasinsky написал(а):
используй ID - он должен быть уникальным для каждого из элементов

Спустя 8 минут, 7 секунд (20.01.2011 - 19:57) sharki написал(а):
Не вариант.
А если у него целая куча этих дивов и они добавляются динамически, тут надо пользоваться свойством this и проходится циклом по всем элементам объекта.
Жопа короче biggrin.gif

Спустя 3 минуты, 51 секунда (20.01.2011 - 20:01) sharki написал(а):
Примерно таким образом, но правда тут берутся все дивы на странице.

div = document.getElementsByTagName('DIV');
for(var i = 0; i < 2; i++)
div[i].onclick = myFunction;


Ну и потом можно взять дочерний элемент этого объекта
function myFunction() {
alert(this.firstChild.nodeValue);
}


Ну и сделать условие, если данный див имеет класс "блок" (например) то выполнить функцию отображения или чего либо

Спустя 22 минуты, 11 секунд (20.01.2011 - 20:24) ИНСИ написал(а):
Цитата
А если у него целая куча этих дивов и они добавляются динамически, тут надо пользоваться свойством this и проходится циклом

Не согласен. Можно придавать случайное (уникальное) имя для дива. И в функцию передавать id

Спустя 5 минут, 36 секунд (20.01.2011 - 20:29) sharki написал(а):
не ну если с параметрами то да, можно и так.

Спустя 25 минут, 22 секунды (20.01.2011 - 20:54) as009 написал(а):
Не очень понял, я javascript очень плохо знаю.
Вот у меня есть div:

<div id="newDiv">
<input
type="text" name="T1" size="15">
<a
href="javascript:void(0)" onclick="Add()">add</a>
</div>


Можно ли имя этого div передать в скрипт и изменение применить именно к этому div.

Спустя 3 минуты, 12 секунд (20.01.2011 - 20:58) inpost написал(а):
as009
Ответ на вопрос: можно!
Совет: если плохо знаешь, то ты подразумеваешь, что вообще не знаешь! А это повод узнать что-то новенькое!

Спустя 2 часа, 53 минуты, 56 секунд (20.01.2011 - 23:52) as009 написал(а):
inpost спасибо за совет)))

Вот сделал все работает:

function Add() {
var DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone" size="15">';
DIV.innerHTML += X
}

Только осталась проблема как давать имена созданным полям и как их записывать в БД, ведь я не знаю сколько полей может быть 5 или 10 (пользователь сам решает)...

Как такое можно реализовать, может кто то такое делал уже, когда заранее не известно сколько записей и все их надо записать в БД???

Спустя 6 минут, 42 секунды (20.01.2011 - 23:58) inpost написал(а):
name="phone[]"
Тогда в скрипт-обработчик попадёт массив всех существующих инпутов с именем "phone[]".

Спустя 10 часов, 30 минут, 7 секунд (21.01.2011 - 10:28) linker написал(а):
Тему перенес в JavaScript, ибо много явы и хтмл и ничего про PHP.

Спустя 1 день, 7 часов, 21 минута, 57 секунд (22.01.2011 - 17:50) as009 написал(а):
Что-то не получается передавать массивом(
Вот форма где я сохраняю данные в массив phone[]

<script language="JavaScript">
function
Add() {
var DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone[]" size="15">';
DIV.innerHTML += X
}
</script>

<div
id="newDiv">
<input
type="text" name="phone[]" size="15">
<a
href="#" onclick="Add();">add</a>
</div>



Вот скрипт который принимает данные из формы:

$Phone=$_POST['phone'];
foreach($Phone as $value){
echo $value."";}


Если одна запись в массиве то работает, если больше то выдает ошибку...
Что я сделал неправильно, может массив как-то неправильно передал???

Спустя 3 часа, 33 минуты, 37 секунд (22.01.2011 - 21:24) as009 написал(а):
Уже все перепробовал ничего не хочет работать.
Что никто такого не делал???
Передать данные в массив, а потом достать их из него...

Спустя 19 минут, 47 секунд (22.01.2011 - 21:44) sharki написал(а):
Почитай эту тему, в этой теме тоже массивы передавали http://phpforum.ru/index.php?showtopic=371...15&#entry787603

Спустя 3 часа, 11 минут, 37 секунд (23.01.2011 - 00:55) as009 написал(а):
Все дело в javascript
Попробовал несколько полей в самой форме сделать и записать в массив, все работает, а если добавлять поля через javascript, то не работает.

Я что как-то не правильно добавляю поля????
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.