PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (6): « 1 2 3 [4] 5 6 »

> Найдено сообщений: 85
metra Отправлено: 15 Марта, 2011 - 14:40:20 • Тема: 2 проблемы • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1177
1. Есть код шаблона Smarty:

CODE (html):
скопировать код в буфер обмена
  1. {if isset($u)}
  2. Вы исполнитель
  3. {else}
  4. Вы не исполнитель
  5. {/if}


Этот шаблон является дочерним (т.е. он выводится дисплеем в переменную посредством ob_start() и т.д. и уже потом ассигнится и выводится родительский шаблон). Проблема в том, что фраза "Вы не исполнитель" выводится и там где нужно и сверху страницы (выше разметки и тегов <html> даже). Не могу понять почему.

2. Перерыл кучу скриптов и статей - ничего не нашел по поводу нотификации прихода новых сообщений и т.д. Т.е. в реальном времени (AJAX/JavaScript естественно) показ есть ли новые сообщения и т.п. При чем вложенность типа сообщений может быть сложной (к примеру есть ответ на заказ, есть комментарий к ответу на заказ и т.п. И так от каждого юзера и т.п.) Помогите пожалуйста.
metra Отправлено: 11 Марта, 2011 - 07:47:15 • Тема: Проблема со Smarty • Форум: Программирование на PHP

Ответов: 2
Просмотров: 262
Решил сразу после написания топика почти) Именно условным оператором.
metra Отправлено: 07 Марта, 2011 - 13:28:54 • Тема: Проблема со Smarty • Форум: Программирование на PHP

Ответов: 2
Просмотров: 262
Надо выводить 2 ассоциативных массива данных, второй из которых является дочерним по отношению к первому. Т.е. для каждого элемента 1 массив будет выводиться 1 экземпляр второго массива.

Как это у меня выглядит:
CODE (html):
скопировать код в буфер обмена
  1. {foreach from=$bids item=bid}
  2. <div id="bid">
  3.         <h2>{$bid.name} {$bid.surname}</h2>
  4.         <p>{$bid.bid}</p>
  5.         <p>{$bid.pub_date}</p>
  6.         <a href="#" onclick="hide_show_1({$bid.id})">Переписка</a>
  7.         <div id="bid_comments{$bid.id}" class="nado1">
  8.                 <form action="add_bid_comment_handler.php" method="POST">
  9.                         <textarea name="comment" style="width: 300px; height: 160px;"></textarea><br>
  10.                         <input type="hidden" name="bid_id" value="{$bid.id}"><br>
  11.                         <input type="hidden" name="offer_id" value="{$bid.offer_id}"><br>
  12.                         <input type="submit" value"Ответить">
  13.                 </form>
  14.                 <div id="bid_comments_comments">
  15.                         {foreach from=$bid_comments item=bid_comment}
  16.                                 <div id="bid_comment">
  17.                                         <span id="green_bold">{$bid_comment.name} {$bid_comment.surname} написал в {$bid_comment.pub_date}</span>
  18.                                         <p>{$bid_comment.comment}</p>
  19.                                 </div>
  20.                         {/foreach}
  21.                 </div>
  22.         </div>
  23. </div>
  24. {/foreach}


В чем проблема: во втором foreach надо выводить определенные элементы только, зависящии от поля строки mysql. Т.е. надо выводить не все подряд, а выборочно. Не знаю как реализовать.
Для справки - первый массив выводит список ответов на проекты, второй список комментариев (переписка) к каждому ответу. Как на фрилансе в общем.
metra Отправлено: 04 Марта, 2011 - 10:58:53 • Тема: Див реагирует только на втором нажатии • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 1077
В итоге в какой уже раз решение проблемы было в том, что я что-то забыл указать))
Я уже пробовал с проверкой на отметку чекбокса, но забыл чекбоксам назначить ID, а выборку из DOM делал как раз по ID)

Спасибо за наводку. Проблема решена.
Решил так:
CODE (javascript):
скопировать код в буфер обмена
  1. function hide_show(id)
  2. {
  3.         if(document.getElementById('prof'+id).checked)
  4.         { document.getElementById('abc'+id).style.display = 'block' }
  5.         else
  6.         { document.getElementById('abc'+id).style.display = 'none' }
  7. }
metra Отправлено: 04 Марта, 2011 - 09:20:46 • Тема: Див реагирует только на втором нажатии • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 1077
Код формы:
CODE (html):
скопировать код в буфер обмена
  1. {foreach from=$all_categories item=cat}
  2.         {assign var="p" value="not"}
  3.         {foreach from=$profs item=prof}
  4.                 {if $cat.id == $prof.category_id}{assign var="p" value=$prof}{/if}
  5.         {/foreach}
  6.         <br><input onclick = "hide_show({$cat.id})" type = "checkbox" name = "prof{$cat.id}" {if $p != 'not'}checked{/if} > {$cat.name}
  7.         <textarea {if $p == 'not'}class = "textarea1_hidden"{else}class = "textarea1"{/if} id = "abc{$cat.id}" name = "prof_description{$cat.id}">{if $p != 'not'}{$p.description}{/if}</textarea>
  8.         {/foreach}


JavaScript:
CODE (javascript):
скопировать код в буфер обмена
  1. function hide_show(id)
  2.         {
  3.                 if(document.getElementById('abc'+id).style.display == 'none')
  4.                 { document.getElementById('abc'+id).style.display = 'block' }
  5.                 else
  6.                 { document.getElementById('abc'+id).style.display = 'none' }
  7.         }


CSS:
CODE (htmlphp):
скопировать код в буфер обмена
  1. .textarea1, .textarea1_hidden { width: 374px; height: 150px; padding: 5px; display: block; }
  2. .textarea1_hidden { display: none; }


Суть проблемы: те checkbox'ы, которые на момент отображения страницы отмечены, работаю правильно в плане сокрытия смежных им textarea, а те, которые не отмечены, работаю так - при нажатии checkbox отмечается, но смежный textarea не показывается и только при повторном нажатии (убираем галочку) он показывается. Что противоречит логике.
metra Отправлено: 22 Февраля, 2011 - 09:13:52 • Тема: Как считать цифры из переменной? • Форум: Программирование на PHP

Ответов: 6
Просмотров: 430
Только регулярные выражения
metra Отправлено: 20 Февраля, 2011 - 17:05:09 • Тема: PHP при установке не видит Apache • Форум: Программирование на PHP

Ответов: 1
Просмотров: 197
http://www[dot]denwer[dot]ru/
metra Отправлено: 20 Февраля, 2011 - 17:02:32 • Тема: Проблемы с записью в базу MySQL • Форум: Программирование на PHP

Ответов: 8
Просмотров: 647
$ip забыли обромить кавычками и точками

у вас '$ip' а надо '".$ip."'
metra Отправлено: 20 Февраля, 2011 - 11:47:34 • Тема: Сложная ситуация • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 34
Структуру БД построил как вы сказали, написал запрос для выборки строк специализаций определенного юзера + описаний.

НО! Еще осталось сделать страницу как в аттаче. И там должны быть уже расставлены чекбоксы и вставлены описания специализаций. Как это сделать пока тоже не понимаю - можно сделать 2 части, в 1 будут только те чекбоксы, которые выбраны вышеописанным запросом, ниже те, которых нет в списке специализаций юзера... Но это 2 запроса и это нелогично с точки зрения даже самой простой оптимизации...
metra Отправлено: 20 Февраля, 2011 - 09:12:17 • Тема: Сложная ситуация • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 34
Т.е. для каждого юзера будет > 1 строки для специальности? Тааак.... Сейчас обмозгую
metra Отправлено: 20 Февраля, 2011 - 08:07:53 • Тема: Сложная ситуация • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 34
В общем есть таблица юзеров, нужно реализовать список специальностей для каждого из юзеров. У специализаций есть свой таблица вида ID | Name. Т.е. как я думал надо где-то сделать в таблице юзеров поле со списком ID'ков специализаций. НО! Надо еще сделать для каждой специализации уникальное описание для каждого юзера свое (он сам его пишет).

В общем система похожая на ту, которая есть на сайте free-lance.ru.
Не могу придумать как это реализовать.

Как должна выглядеть часть сайта, где юзер выбирает специализации и вписывает описания. При нажатии на чекбокс аяксом открывается textarea ниже него (отметил желтым цветом) - в аттаче.

А, и соответственно все это надо будет отображаться для каждого юзера. В виде, при мерно как на аттаче, но естественно без чекбоксов и только те специализации, которые он настроил.
metra Отправлено: 20 Февраля, 2011 - 08:03:03 • Тема: Как вывести данные из БД в smarty ? • Форум: SQL и Архитектура БД

Ответов: 12
Просмотров: 47
Для вывода массива однотипных данных (списка новостей, пользователей, и т.п.) из базы данных:

PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM `table` WHERE pages = '$get'") or die (mysql_error());
  2. $num = mysql_num_rows($result); //получаем количество строк
  3. for($i=0; $i<$num; $i++) //загоняем все строки в массив
  4. {
  5. $rows[$i] = mysql_fetch_array($res, MYSQL_ASSOC);
  6. }
  7.  
  8. $smarty -> assign("news", $rows) //далее display() и т.п.


далее в файле шаблона в определенном месте пишем:

CODE (html):
скопировать код в буфер обмена
  1. {foreach from=$news item=u name=news_cycl}
  2. <h2>{$u.title}</h2>
  3. <p>{$u.text}</p>
  4. {foreach}


Где u - строка, а title, text - поля.
metra Отправлено: 09 Февраля, 2011 - 14:14:12 • Тема: Применение Smarty в не простом случае • Форум: Программирование на PHP

Ответов: 2
Просмотров: 240
Попробую.

Как сделать так, что бы имея файлы header.tpl.php, login_form.tpl.php, news.tpl.php, content.tpl.php, каждый из которых отвечает за вывод определенного типа информации из БД, либо просто вписываемого посредством assign.

И все этим шаблоны являются дочерними к другому шаблону и вставляются как переменные. К примеру содержание главного шаблона:

<div>{$header}</div>
{$login_form}

и т.п.

Как мне написать PHP-файл который будет выводить этот главный шаблон? И написать его так, что бы все переменные, используемые в дочерних шаблонах, я ассигнил в файле главного шаблона (не в tpl, а там где вызываю display).

Если ассигнить $smarty -> fetch ("header.tpl.php") и т.п. Переменные дочерних шаблонов не вставляются. Так как они вставляются только те, которые на момент display() заассигнуты... В общем как то так...
metra Отправлено: 09 Февраля, 2011 - 08:42:37 • Тема: Применение Smarty в не простом случае • Форум: Программирование на PHP

Ответов: 2
Просмотров: 240
Есть CMS.
Хочу, что бы в шаблоне index.tpl.php был такой код

<div>{$header}</div>
<div>{foreach from $news....}</div>

а index.php его обрабатывал так:
1. В {$news} загоняю массив строк (новостей).
2. А в {$header} мне нужно загнать шаблон (header.tpl.php).

Все хорошо - ведь есть же функция fetch, НО в дочернем шаблоне header.tpl.php тоже есть переменные для подстаноки ({$menu} к примеру) и по моему предположению просто надо их так же ассигнировать ($smarty -> assign) в родительском файле (index.php)...

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

Гуглил - нифига, гуглил на форуме - нифига.
Очень критичная проблема.
metra Отправлено: 28 Января, 2011 - 09:20:48 • Тема: Шаблонизатор • Форум: Программирование на PHP

Ответов: 7
Просмотров: 1639
OrmaJever, согласен, разобрался за 30 минут с теорией) приступаю к практике.

Страниц (6): « 1 2 3 [4] 5 6 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB