X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Конструкция for, php & javascript.
-Eclipse-
-Eclipse-
Topic Starter сообщение 28.5.2012, 0:21; Ответить: -Eclipse-
Сообщение #1


Доброго времени суток, ребзя!
В общем идея такая: имеется бд с некой таблицей, в которой, в свою очередь, хранятся данные ссылок (href, img, src и т.д.). 1 строка таблицы - 1 ссылка. Задача была вывести все ссылки. Ну, естественно, первое что пришло на ум, использовать конструкцию for. На выходе получилось следующее:

[PHP]for ($c=0; $c<mysql_num_rows($q); $c++)
{
$f = mysql_fetch_array($q);
echo "<ul>";
echo "<li><a id=\"$f[поле айди]\"><img src=\"$f[поле с ссылкой на картинку ссылки]\" border=\"0\">$f[поле имя]</a>";
echo "</ul>";
}[/PHP]
На данном этапе все работает.
Теперь возникла необходимость при нажатии на ссылку вызывать модальное jquery окно. Вот код вызова окна:

[JS]function createWindow() {
$.window({
title: \"Название окна",
url: \"ссылка на контент окна\"
});[/JS]
И теперь началось самое интересное: долго я бился над тем, как бы все это обтяпать по - красивее, но после почти полудня размышлений, проб и ошибок, самым кошерным оказался такой вариант:

[PHP]for ($c=0; $c<mysql_num_rows($q); $c++)
{
$f = mysql_fetch_array($q);
echo "
<ul>";
echo "<li><a id=\"$f[id]\" ondblclick=\"createWindow$f[id]();\"><img src=\"$f[img]\" border=\"0\">$f[name]</a>";
echo " <script> function createWindow$f[id]() {
$.window({
title: \"$f[name]\",
url: \"$f[src]\"
});
} </script> </ul> ";
}[/PHP]

НО! При таком раскладе, окна при нажатии на любую ссылку выдают одно и тоже название и контент, а не перебирают строки, как я ожидал. Подскажите пожалуйста, как мне сделать так, что бы все работало нужным образом (переменные окна $f[name] и $f[src] соответствовали той ссылке, по которой кликнули).
Заранее спасибо!
P.S. Я не стал выкладывать сам плагин модального окна дабы не загромождать описание проблемы ... да и думаю он не особо нужен, но если все же понадобится - выложу.
P.P.S. Сори, если вопрос не в том разделе, просто сабж реально на стыке php и js, пусть модератор не серчает :)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 28.5.2012, 0:39; Ответить: alexdrob
Сообщение #2


(-Eclipse- @ 28.5.2012, 03:21) *
for ($c=0; $c<mysql_num_rows($q); $c++)
{
$f = mysql_fetch_array($q);

Это можно заменить одной строкой
[PHP]while($f = mysql_fetch_array($q))
{[/PHP]
mysql_fetch_array - Возвращает массив строк, соответствующих обработанному ряду результата запроса, или FALSE, если рядов больше нет.
То есть, когда рядов не останется, переменной $f будет присвоено false
Цикл while выполняется пока условие истинно. После того как переменной $f будет присвоено что то, можно считать что в условии записана только данная переменная.
То есть сначала выполнится то что справа от равно, потом оно присвоится переменной, а потом если бы слева было ещё равно, то оно бы присвоилось так далее.
Вообщем когда функция вернёт false цикл прекратится...

Например как то так
[PHP]while($f = mysql_fetch_array($q))
{
echo "<ul>";
echo "<li><a id=\"$f[id]\" ondblclick=\"createWindow('$f[name]','$f[src]');\"><img src=\"$f[img]\" border=\"0\">$f[name]</a>";
echo "</ul>";
}
?>
function createWindow(name, link) {
$.window({
title: name,
url: link
});
}
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 28.5.2012, 0:42; Ответить: alexdrob
Сообщение #3


А вы уверены что ul нужно в цикле выводить? может так
[PHP]
echo "<ul>";
while($f = mysql_fetch_array($q))
{
echo "<li><a id=\"$f[id]\" ondblclick=\"createWindow('$f[name]','$f[src]');\"><img src=\"$f[img]\" border=\"0\">$f[name]</a></li>";
}
echo "</ul>";
?>
function createWindow(name, link) {
$.window({
title: name,
url: link
});
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
-Eclipse-
-Eclipse-
Topic Starter сообщение 28.5.2012, 0:51; Ответить: -Eclipse-
Сообщение #4


Вау! Как оперативно :) Спасибо огромное за рабочий код и за подробные разъяснения!

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Profit Pixels - Инхаус Форекс/Крипто CPA Офферы | Лучшие прямые Нутра, Дейтинг, Астологические и Финансовые CPA&CPL офферы!
Премиум инхаус Форекс/Крипто/Трейдинг CPA Офферы.
80 ProfitPixels 24728 23.2.2024, 20:14
автор: ProfitPixels
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3296 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1174 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44777 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1856 26.5.2023, 20:48
автор: Mixatraider


 



RSS Текстовая версия Сейчас: 29.3.2024, 19:30
Дизайн