1. По дебаггингу (Логические ошибки): Что значит коммент "
/**
* TODO: To clean in release
* TODO: Убрать в релизе
*/ "
Имеется ввиду убрать перед загрузкой на хост?
2.Простите у меня наверное еще проблемы с терминологией(Семантические ошибки):"...Еще очень важно обращать внимание на область видимости переменных. Особенно при процедурном подходе, где большая часть переменных находится в глобальной области видимости. Неправильно расположенные переменные могут очень сильно изменить сценарий."
Имеются ввиду глобальные переменные GET, POST и т.д.? Которые нужно вынимать из глобального массива?
Спустя 6 минут, 2 секунды (22.04.2010 - 19:30) twin написал(а):
* TODO: Убрать в релизеобозначает, что убрать после разработки и отладки. То есть в боевом скрипте.
Цитата |
Имеются ввиду глобальные переменные GET, POST и т.д.? Которые нужно вынимать из глобального массива? |
Ну наверное ты это пропустил. Или я не слишком доходчиво расписал...
Спустя 47 минут, 5 секунд (22.04.2010 - 20:17) Unlikely написал(а):
А ссылки тут на разного рода инфу оставлять можно?
Если да, то вот http://rutracker.org/forum/viewtopic.php?t=2828019
Это для самых начинающих.
Подробно показывается про переменные, классы, функции и всё такое.
Там в принципе всё описано, в каком выпуске, о чём повествование.
Если да, то вот http://rutracker.org/forum/viewtopic.php?t=2828019
Это для самых начинающих.
Подробно показывается про переменные, классы, функции и всё такое.
Там в принципе всё описано, в каком выпуске, о чём повествование.
Спустя 1 час, 9 минут, 21 секунда (22.04.2010 - 21:27) gomer505 написал(а):
Цитата (twin @ 22.04.2010 - 16:30) | ||
<pre class="sh_sourceCode" rel="code">* TODO: Убрать в релизе </pre>обозначает, что убрать после разработки и отладки. То есть в боевом скрипте.
Ну наверное ты это пропустил. Или я не слишком доходчиво расписал... |
Читал раза 3-4 и вот еще раз прочитал. И вроде бы все понятно по функциям, а сопоставить с формулировкой "область видимости" как-то не могу. Значит еще не дошло... Просто есть такое, когда человек владеет знаниями, то когда объясняет, то пропускает моменты "само собой разумеющиеся" для него, но неизвестные тому, кому объясняет. Отсюда и тянется ком непонимания... Простите, я не критикую просто здесь подобная ситуация.
И вот тут я нашел парочку - как мне кажется ошибок- беру на себя такую смелость. Это в разделе Гостевая книга - Формы. Посмотрите пожалуйста. Стараюсь разобраться.
Спустя 5 минут, 4 секунды (22.04.2010 - 21:32) twin написал(а):
Цитата |
И вот тут я нашел парочку - как мне кажется ошибок- беру на себя такую смелость. |
Упс... есть такое((( Ща поправим.
А с областью видимости попробую завтра более подробно, раз не понятно.
Правильные вопросы. Сеньк.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 45 минут, 16 секунд (22.04.2010 - 22:17) gomer505 написал(а):
И еще ошибочка в следующем блоке кода :
Спустя 33 минуты, 40 секунд (22.04.2010 - 22:51) gomer505 написал(а):
Простите не хочу быть назойливым, просто знаю как ошибки наставника заводят в тупик ученика.
В этом месте мне непонятно, потому что в браузере не срабатывает:
"Теперь усложним еще больше. Не просто выведем данные, а изменим содержание страницы в зависимости от."
"То есть:
Если переменная ok не пуста (нажата кнопка), выводим текст сообщения. Если нет, то дефолтную (по умолчанию) надпись."
у меня дефолтная надпись не выводится вообще никак, да и непонятно в каком случае она должна выскочить..."ok не пуста(нажата кнопка)" поле пустое? или дефолтная должна выскочить при обновлении?
С надписью "Напишите что-нибудь" разобрался - если пытаешься что-то вставить через адресную строку... тогда она выскакивает!!! Может быть об этом стоит упомянуть в том месте урока? Чтобы как-то прояснить ситуацию...
И после следующего блока кода:
В этом месте мне непонятно, потому что в браузере не срабатывает:
"Теперь усложним еще больше. Не просто выведем данные, а изменим содержание страницы в зависимости от."
<?php
/**
* The guest book
* Гостевая книга
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
$text = !empty($_POST['text']) ? $_POST['text'] : null;
?>
<form action="" method="post">
<input name="text" type="text" value="<?php echo htmlspecialchars($text) ?>"/><br />
<input name="ok" type="submit" />
</form>
<?php
// Проверим нажата ли кнопка
if(!empty($_POST['ok']))
echo htmlspecialchars($text);
else
echo 'Напишите что-нибудь';
"То есть:
Если переменная ok не пуста (нажата кнопка), выводим текст сообщения. Если нет, то дефолтную (по умолчанию) надпись."
у меня дефолтная надпись не выводится вообще никак, да и непонятно в каком случае она должна выскочить..."ok не пуста(нажата кнопка)" поле пустое? или дефолтная должна выскочить при обновлении?
С надписью "Напишите что-нибудь" разобрался - если пытаешься что-то вставить через адресную строку... тогда она выскакивает!!! Может быть об этом стоит упомянуть в том месте урока? Чтобы как-то прояснить ситуацию...
И после следующего блока кода:
Спустя 1 час, 12 минут, 27 секунд (23.04.2010 - 00:03) twin написал(а):
Спасибо. Как много ляпов можно сделать на трех сантиметрах кода...
Надо руки мне оторвать по самую майку.
А на счет этого
Надо руки мне оторвать по самую майку.
![mad.gif](http://phpforum.ru/html/emoticons/mad.gif)
А на счет этого
Цитата |
если пытаешься что-то вставить через адресную строку... тогда она выскакивает!!! |
Не понял... Вроде как всегда выскакивает, причем здесь адресная строка?
Спустя 2 минуты, 13 секунд (23.04.2010 - 00:05) twin написал(а):
Понял. Идет обновление скрипта без сброса POST данных. Не учел такого казуса... Спасибо, подумаю. ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Вообще я сейчас почему то подумал так. А стоит ли исправлять? Ведь те, кто показывает мне ляпы - их увидел. А значит разобрался. А те, кто тупо копипастит... не представляют никакого интереса как будущие программисты.
Я исправлю конечно и буду рад другим моментам, когда меня натычут носом в ляпы.
Но факт есть факт. Кому то это принесет пользу, раз так дотошно все изучается.
Спасибо еще раз и респектус.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Вообще я сейчас почему то подумал так. А стоит ли исправлять? Ведь те, кто показывает мне ляпы - их увидел. А значит разобрался. А те, кто тупо копипастит... не представляют никакого интереса как будущие программисты.
Я исправлю конечно и буду рад другим моментам, когда меня натычут носом в ляпы.
Но факт есть факт. Кому то это принесет пользу, раз так дотошно все изучается.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спасибо еще раз и респектус.
Спустя 14 минут, 17 секунд (23.04.2010 - 00:20) gomer505 написал(а):
Шаг 4. Сброс POST параметров
Первый блок кода, насколько я понял должен выводить запись в поток и записыват текст в файл после отправки. У меня он записывает такст внесенный в поля, но форма пропадает с экрана в браузере. При незаполненных полях ошибки выдает сверху. Но почему после заполнения пропадает форма после отправки? (В адресной строке появляется знак вопроса) Непонятно...
А вот в такомже моем файле - я сам переставил структуру форма после отправки текста не пропадает. Хотя и файл записывает тоже. И ошибки сверху выдает. Прилагаю код
Не соображу в чем разница пока еще... Но сегодня при таком подходе было интересно поработать. Спасибо Вам за Ваш сайт! Он мне очень нравится...
Первый блок кода, насколько я понял должен выводить запись в поток и записыват текст в файл после отправки. У меня он записывает такст внесенный в поля, но форма пропадает с экрана в браузере. При незаполненных полях ошибки выдает сверху. Но почему после заполнения пропадает форма после отправки? (В адресной строке появляется знак вопроса) Непонятно...
А вот в такомже моем файле - я сам переставил структуру форма после отправки текста не пропадает. Хотя и файл записывает тоже. И ошибки сверху выдает. Прилагаю код
<?php
/**
* The guest book
* Гостевая книга
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;
// Более сложная проверка
if(!empty($_POST['ok']))
{
if(!$text1)
echo 'Текстовое поле не заполнено.';
elseif(!$text2)
echo 'Текстовая область не заполнена.';
else // Записываем информацию в файл, заканчивая символом переноса строки \n
file_put_contents('text.txt', $text2 ."\n", FILE_APPEND);
}
else
{
echo 'Напишите что-нибудь';
}?>
<title>Гостевая</title>
<form action="" method="post">
Логин:<br />
<input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<textarea name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2); ?></textarea><br />
<input name="ok" type="submit" />
</form>
<?php // Проверяем наличие файла и если есть - выводим его содержимое в поток
if(file_exists('text.txt'))
echo nl2br(htmlspecialchars(file_get_contents('text.txt')));
Не соображу в чем разница пока еще... Но сегодня при таком подходе было интересно поработать. Спасибо Вам за Ваш сайт! Он мне очень нравится...
Спустя 10 минут, 32 секунды (23.04.2010 - 00:30) gomer505 написал(а):
Цитата (twin @ 22.04.2010 - 21:05) |
Понял. Идет обновление скрипта без сброса POST данных. Не учел такого казуса... Спасибо, подумаю. ![]() Вообще я сейчас почему то подумал так. А стоит ли исправлять? Ведь те, кто показывает мне ляпы - их увидел. А значит разобрался. А те, кто тупо копипастит... не представляют никакого интереса как будущие программисты. Я исправлю конечно и буду рад другим моментам, когда меня натычут носом в ляпы. Но факт есть факт. Кому то это принесет пользу, раз так дотошно все изучается. ![]() Спасибо еще раз и респектус. |
Возможно Вы и правы, но многие могут просто растеряться и потерять интерес..
Тут палка о двух концах. И потом хочется увидеть правильный результат работы скрипта, а не догадываться что должно получиться. У Вас еще хорошо, что Вы не забываете писать об этом - о результате работы кода в блоке. Это очень важно.
А может просто при новом поступлении сообщений об ошибках, которые мы здесь обговорили давать сюда ссылки...Помоему неплохое решение проблемы?
Как Вам?
Спустя 31 минута, 21 секунда (23.04.2010 - 01:02) twin написал(а):
И это поправил))) Как раз вчера ночью переписывл всю гостевуху. С недосыпу все поиспортил только(((
Хотелось как луче, получилось как всегда.
По поводу обратной связи - таки да, это сейчас и разрабатывается. Если все выйдет как задумано, будет легче.
А по поводу
Хотелось как луче, получилось как всегда.
![mad.gif](http://phpforum.ru/html/emoticons/mad.gif)
По поводу обратной связи - таки да, это сейчас и разрабатывается. Если все выйдет как задумано, будет легче.
А по поводу
Цитата |
многие могут просто растеряться и потерять интерес.. |
факт. То была минута слабости. Конечно все исправлю))
Спустя 6 минут, 22 секунды (23.04.2010 - 01:08) gomer505 написал(а):
Цитата (twin @ 22.04.2010 - 22:02) | ||
И это поправил))) Как раз вчера ночью переписывл всю гостевуху. С недосыпу все поиспортил только((( Хотелось как луче, получилось как всегда. ![]() По поводу обратной связи - таки да, это сейчас и разрабатывается. Если все выйдет как задумано, будет легче. А по поводу
факт. То была минута слабости. Конечно все исправлю)) |
Удачи Вам, сил и вдохновения...
Спустя 18 часов, 26 минут, 12 секунд (23.04.2010 - 19:34) gomer505 написал(а):
Привет, twin. Смотрю уже много исправлено Вашему трудолюбию нужно памятник возвести.
Продолжаем изыскания и грызьбу гранита...
Пытаюсь снова разобраться. Гостевая - Шаг 5. Сериализация.
Первый же блок кода на поверку дал вот это (см. скрин) Неопределены индексы массива. Можно об этом подробнее... Или, если я правильно понял, то о чем говорится дальше о ключах и есть определение этих индексов? Потому, что следующий код ошибок не выдает... Правильно или я ошибаюсь?
Наверное не ошибаюсь потому что нашел ошибку: в первом блоке кода у меня
это 79 линия
А во втором блоке кода урока то же самое только выглядит так:
Если исправить $post на $posts? то полезут такие же ошибки, как и в первом...
Продолжаем изыскания и грызьбу гранита...
Пытаюсь снова разобраться. Гостевая - Шаг 5. Сериализация.
Первый же блок кода на поверку дал вот это (см. скрин) Неопределены индексы массива. Можно об этом подробнее... Или, если я правильно понял, то о чем говорится дальше о ключах и есть определение этих индексов? Потому, что следующий код ошибок не выдает... Правильно или я ошибаюсь?
Наверное не ошибаюсь потому что нашел ошибку: в первом блоке кода у меня
это 79 линия
// Пишем все в переменные, они пригодятся для форматирования вывода
$date = $posts['date'];
$name = htmlspecialchars($posts['name']);
$mess = nl2br(htmlspecialchars($posts['mess']));
А во втором блоке кода урока то же самое только выглядит так:
// Тут уже проходили
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(htmlspecialchars($post['mess']));
Если исправить $post на $posts? то полезут такие же ошибки, как и в первом...
Спустя 15 минут, 6 секунд (23.04.2010 - 19:49) twin написал(а):
Тут просто у тебя остался старый файл text.txt Его нужно удалить перед изменением листинга.
Нужно мне придумать, как уберечь от таких казусов. Спасибо, сам бы не додумался.)
Нужно мне придумать, как уберечь от таких казусов. Спасибо, сам бы не додумался.)
Спустя 13 минут, 13 секунд (23.04.2010 - 20:02) gomer505 написал(а):
Цитата (twin @ 23.04.2010 - 16:49) |
Тут просто у тебя остался старый файл text.txt Его нужно удалить перед изменением листинга. Нужно мне придумать, как уберечь от таких казусов. Спасибо, сам бы не додумался.) |
Не совсем понял... Разве это как-то влияет на выдачу ошибок кода?...
Спустя 3 минуты, 13 секунд (23.04.2010 - 20:06) gomer505 написал(а):
Цитата (twin @ 23.04.2010 - 16:49) |
Тут просто у тебя остался старый файл text.txt Его нужно удалить перед изменением листинга. Нужно мне придумать, как уберечь от таких казусов. Спасибо, сам бы не додумался.) |
Да, после удаления text.txt и обновления страницы то что на скрине пропало, но после заполнения формы и отправки снова появилось. Я имею ввиду в файле с автоинкрементным id.
Спустя 15 минут, 26 секунд (23.04.2010 - 20:21) twin написал(а):
Исправил. Действительно была ошибка
Спустя 1 час, 48 минут, 49 секунд (23.04.2010 - 22:10) gomer505 написал(а):
twin Гостевая. Шаг 2 - Форма. Так и висит
Спустя 2 минуты, 36 секунд (23.04.2010 - 22:13) twin написал(а):
Угу, убрал.
Спустя 37 минут, 12 секунд (23.04.2010 - 22:50) gomer505 написал(а):
Гостевая. Шаг 9 - Панель администрирования.
Тут я так и не понял.... Ввел root в логин, admin в пароль... Повисло "Нету раздавать"... Что это значит? Что с этим делать... неправильные логин и пароль? Наверное надо проспаться уже... плохо доходит. Как в нее зайти?
Тут я так и не понял.... Ввел root в логин, admin в пароль... Повисло "Нету раздавать"... Что это значит? Что с этим делать... неправильные логин и пароль? Наверное надо проспаться уже... плохо доходит. Как в нее зайти?
Спустя 2 часа, 10 минут, 40 секунд (24.04.2010 - 01:00) twin написал(а):
Логин root и пароль root. Или логин admin и пароль admin
Спустя 21 час, 6 минут, 27 секунд (24.04.2010 - 22:07) gomer505 написал(а):
Все... Уже разобрался нужно было просто перезагрузить комп. Спасибо.
После входа попытался удалить одну из записей - выскочило окошко "Подумай", а потом страничка с нотисом. Прилагаю:
В коде это
После входа попытался удалить одну из записей - выскочило окошко "Подумай", а потом страничка с нотисом. Прилагаю:
В коде это
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] .'?page='. $file);
Спустя 37 минут, 22 секунды (24.04.2010 - 22:44) twin написал(а):
Нету такого там... Наверное архив старый у тебя
Спустя 14 минут, 33 секунды (24.04.2010 - 22:59) gomer505 написал(а):
Цитата (twin @ 24.04.2010 - 19:44) |
Нету такого там... Наверное архив старый у тебя |
Не понимаю что значит старый архив. Я только что скопировал блок админки из урока, вставил в Dream запустил в браузере поставил галочку в чекбокс и удалил сообщение - выдало ошибку. Я же не придумал это сам. Простите, наверное я зря отнимаю Ваше время.
Спустя 29 минут, 35 секунд (24.04.2010 - 23:28) twin написал(а):
Ну я серьёзно... Сам только что скачал... В админке такого кода нет
Вот такой есть
Первый был раньше.
Кстати, у мазилы помоему есть идиотская особенность - качать зип из кэша.
Попробуй скопировать админку из листинга, не из архива. Или другим браузером скачай.
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] .'?page='. $file);
Вот такой есть
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
Первый был раньше.
Кстати, у мазилы помоему есть идиотская особенность - качать зип из кэша.
Попробуй скопировать админку из листинга, не из архива. Или другим браузером скачай.
Спустя 9 часов, 9 минут, 35 секунд (25.04.2010 - 08:38) gomer505 написал(а):
Я всегда в Opera работаю и качал из листинга. Не понимаю как так получилось, а исправить и ручками можно - может лучше дойдет. Сейчас работает - спасибо.
Спустя 1 час, 14 минут, 9 секунд (25.04.2010 - 09:52) Nikitian написал(а):
Цитата |
Кстати, у мазилы помоему есть идиотская особенность - качать зип из кэша. |
ФФ качает из кэша, если веб-сервер выдаёт Not Modified, либо другие заголовки о неизменности файла, либо если вообще ничего не выдаёт, а урл не меняется.
Спустя 2 часа, 44 минуты, 15 секунд (25.04.2010 - 12:36) twin написал(а):
Цитата |
если веб-сервер выдаёт Not Modified, либо другие заголовки о неизменности файла, либо если вообще ничего не выдаёт |
Ну значит не выдает. Это не факт, что не нужно качать.
Я просто попадался на этом много раз. Вообще бестолковый бразер, все не как у людей.
Спустя 9 часов, 20 минут, 56 секунд (25.04.2010 - 21:57) gomer505 написал(а):
Структура сайта. Шаг3 - Модуль динамичeского контента.
Заново начал разбирать структуру сайта. Есть вопрос: правильно ли я понимаю следующий код
В переменную $who возвращается аргумент массива $arr_who являющийся случайной величиной функции rand(1,count($arr_who), где count($arr_who)=5 (5 элементов массива).
То есть буквально в данном случае rand(1,5) в скобках от (1 до 5), а значит именно для данного случая буквально вышеупомянутый код можно прочитать таким образом:
Я правильно понимаю? Надеюсь эта детальная разборка поможет разобраться в этом отрывке кода не только мне... вставляю в код у себя на Dreamweaver последнюю строчку, сохраняю, проверяю - работает!!!
Более того - если вместо 5 поставить 0, то в браузере отобразится Привет, Мир!
А Мир первый элемент нашего массива. И теперь при перезагрузке приветствие не меняется.
Разбирая код таким образом с Dreamweaverom под рукой и запущенным Денвером у меня получается намного лучше разобраться в PHP... Да, это не скорый путь, но мне кажется быстрее не получится.
Заново начал разбирать структуру сайта. Есть вопрос: правильно ли я понимаю следующий код
$who = $arr_who[rand(1,count($arr_who))];
В переменную $who возвращается аргумент массива $arr_who являющийся случайной величиной функции rand(1,count($arr_who), где count($arr_who)=5 (5 элементов массива).
То есть буквально в данном случае rand(1,5) в скобках от (1 до 5), а значит именно для данного случая буквально вышеупомянутый код можно прочитать таким образом:
$who = $arr_who[rand(1,5)];
Я правильно понимаю? Надеюсь эта детальная разборка поможет разобраться в этом отрывке кода не только мне... вставляю в код у себя на Dreamweaver последнюю строчку, сохраняю, проверяю - работает!!!
Более того - если вместо 5 поставить 0, то в браузере отобразится Привет, Мир!
А Мир первый элемент нашего массива. И теперь при перезагрузке приветствие не меняется.
Разбирая код таким образом с Dreamweaverom под рукой и запущенным Денвером у меня получается намного лучше разобраться в PHP... Да, это не скорый путь, но мне кажется быстрее не получится.
Спустя 21 минута, 36 секунд (25.04.2010 - 22:19) twin написал(а):
Все верно и довольно основательно...
А можно это использовать? Я хочу подборочку сделать таких вот разборов. Уже накопилось прилично))
А можно это использовать? Я хочу подборочку сделать таких вот разборов. Уже накопилось прилично))
Спустя 23 часа, 31 минута, 35 секунд (26.04.2010 - 21:50) gomer505 написал(а):
Цитата (twin @ 25.04.2010 - 19:19) |
Все верно и довольно основательно... А можно это использовать? Я хочу подборочку сделать таких вот разборов. Уже накопилось прилично)) |
Почту за честь. Могу регулярно делать такие разборки непонятных мне мест, а Вы редактируйте - вдруг я чего неправильно понимаю.
Спустя 21 час, 14 минут, 54 секунды (27.04.2010 - 19:05) gomer505 написал(а):
Ядро. Шаг 1 - Подготовительные работы.
Не уверен правильно ли я выставляю атрибуты 777 для .htaccess
Просто раньше не приходилось. Вот скрин
Не уверен правильно ли я выставляю атрибуты 777 для .htaccess
Просто раньше не приходилось. Вот скрин
Спустя 2 минуты, 44 секунды (27.04.2010 - 19:08) twin написал(а):
Так, стоп. А там где написано, что это нужно делать? Опять я не точно выразился наверно где то...
Спустя 11 минут, 44 секунды (27.04.2010 - 19:20) gomer505 написал(а):
И еще. Не совсем понятно, отправляю скрин. Браузер выставляю Вид - Кодировка - Выбирать автоматически. Запускаю крякозябров нет - есть нормальный текст, то все нормально? Проверяю кодировку, а там Кирилица-автоопределение. Это так должно быть?
Спустя 1 минута, 30 секунд (27.04.2010 - 19:21) twin написал(а):
Если нет кракозяблов, значит нормально))
Спустя 1 минута, 38 секунд (27.04.2010 - 19:23) gomer505 написал(а):
Цитата (twin @ 27.04.2010 - 16:21) |
Если нет кракозяблов, значит нормально)) |
OK
Спустя 2 минуты, 16 секунд (27.04.2010 - 19:25) gomer505 написал(а):
Цитата (twin @ 27.04.2010 - 16:08) |
Так, стоп. А там где написано, что это нужно делать? Опять я не точно выразился наверно где то... |
Отправляю скрин, и там еще выше есть...
Стоп это log должен быть с правами777
Спустя 1 минута, 30 секунд (27.04.2010 - 19:27) twin написал(а):
Ну тут же не написано, что нужно на файл ставить права... Пойду перефразирую, раз неоднозначность.(((
Спустя 4 минуты, 32 секунды (27.04.2010 - 19:31) gomer505 написал(а):
Цитата (twin @ 27.04.2010 - 16:27) |
Ну тут же не написано, что нужно на файл ставить права... Пойду перефразирую, раз неоднозначность.((( |
Да, пожалуйста, здесь нужно более доходчиво - мне, например это впервые делать приходится. Думаю, что не только мне.
И еще я только что пробовал (если я правильно это делаю), то права выставляю, что для каталога log что для .htaccess это все равно распространяется на весь каталог log. Разница только в том куда я стрелкой указал. Только там я полный профан. См. скрин
Спустя 47 минут, 48 секунд (27.04.2010 - 20:19) gomer505 написал(а):
Шаг 2 - Инициализация GET переменных.
У меня есть разбежность в моем коде с Вашим листингом. Ваш листинг
У меня
При Вашем у меня выдает ошибку : неопределена переменная $date... или я что-то пропустил по невнимательности? Старался делать все по порядку...
Простите это моя ошибка уже разобрался...В файле index.php прошлого раздела у меня потерялся кусок кода
Из-за чего и выходила ошибка...А именно в этом файле и определяется переменная $date:
У меня есть разбежность в моем коде с Вашим листингом. Ваш листинг
<!-- skins/tpl/menu.tpl begin -->
Сегодня <?php echo $date ?> года
<ul>
<li><a href="/main">Главная страница</a></li>
<li><a href="/second">Вторая страница</a></li>
</ul>
<!-- skins/tpl/menu.tpl end -->
У меня
<!--skins/tpl/menu.tpl begin-->
<p>Сегодня <?php echo formatDate(date("Y-m-d"), false) ?> года</p>
<ul>
<li><a href="/main">Главная страница</a></li>
<li><a href="/second">Вторая страница</a></li>
</ul>
<!--skins/tpl/menu.tpl end-->
При Вашем у меня выдает ошибку : неопределена переменная $date... или я что-то пропустил по невнимательности? Старался делать все по порядку...
Простите это моя ошибка уже разобрался...В файле index.php прошлого раздела у меня потерялся кусок кода
/**
* We put in order a conclusion
* Приводим в порядок вывод
*/
include './libs/view.php';
Из-за чего и выходила ошибка...А именно в этом файле и определяется переменная $date:
<?php
/**
* Date formatting
* Форматирование даты
*/
$date = formatDate(date("Y-m-d"), false);
Спустя 41 минута, 10 секунд (27.04.2010 - 21:00) gomer505 написал(а):
Отправившись по ссылкам матчасти нашел несколько механических ошибок (без обид, по товарищески) explode()
Спустя 1 час, 9 минут, 48 секунд (27.04.2010 - 22:10) gomer505 написал(а):
Для меня этот раздел остается "ежиком в тумане" - я имею ввиду "трехколесный велосипед" ... автоматизируем инициализацию GET переменных из суперглобального массива $_GET? Простите может я неправильно понял...Пока для меня это еще темный лес.
Спустя 24 минуты, 22 секунды (27.04.2010 - 22:34) gomer505 написал(а):
Ядро. Шаг 3 - Формируем ссылки
Честно говоря, чем дальше в лес, тем сложнее разобраться... Я так и не понял
к какому файлу отнести алгоритм из листинга:
Ну, наверное не все сразу... доходит.
Честно говоря, чем дальше в лес, тем сложнее разобраться... Я так и не понял
к какому файлу отнести алгоритм из листинга:
/**
* Function of formation of GET-parametres
* Функция формирования GET-параметров
*/
function href()
{
global $GET; // Объявляем массив $GET, сформированный ранее, глобальным
$tmp = $GET; //Переписываем переменную, что бы не влиять на глобальный массив
$href = '';
$arg = func_get_args(); // Получаем массив аргументов переданных в функцию href(тут_вот)
if($arg[0] == 'host') // Это для того, что бы сделать ссылку без параметров
return IRB_HOST;
foreach($arg as $var) // Перебираем полученные аргументы
{
$param = explode('=', $var); // Разделяем имя переменной и значение (page=gallery, например)
// Если в массиве $GET ($tmp) есть ключ, полученный выше (в данном случае 'page')
if(array_key_exists($param[0], $tmp))
$tmp[$param[0]] = $param[1]; // То этому ключу присваеваем полученное значение
else
die('The variable <b>'. $param[0] .'</b> is not defined'); // Иначе...
}
foreach($tmp as $var => $val) // Теперь поочередно вставяем значения из $GET ($tmp) в ссылку
if(IRB_REWRITE == 'on')
$href .= '/'. $val; // Если реврайт включен, через слэш
elseif(!empty($val))
$href .= '&'. $var .'='. $val; // Если нет = обычные GET параметры
if(IRB_REWRITE == 'on')
return IRB_HOST . trim($href, '/');
else
return IRB_HOST .'?'. trim($href, '&');
}
Ну, наверное не все сразу... доходит.
Спустя 15 минут, 47 секунд (27.04.2010 - 22:50) twin написал(а):
Это та же функция, что выше. Только расписанная подробнее.
Спустя 1 минута, 40 секунд (27.04.2010 - 22:52) twin написал(а):
Упс, а выше то теперь нету... Мой косяк, щас исправлю.
Спустя 16 часов, 28 минут, 9 секунд (28.04.2010 - 15:20) live Uucyc написал(а):
появилось немного времени и начал разбирать уроки, которые пропустил и возник такой вопрос.
Проблема с куки. Созданные куки располагаются в отдельный папка (наверно, так правильно будет сказать). Например, если куки создаются, когда ты находишься - сайт/новости/просмотр/айди, то и куки создадуться новость/просмотр/айди [название куки]: значение. С любой другой страница уже не доступны они. Пробовал при создании указывать path, но это не помогло...Куда идти?? В какой стороне искать ответ, подскажите, пожалуйста??
Проблема с куки. Созданные куки располагаются в отдельный папка (наверно, так правильно будет сказать). Например, если куки создаются, когда ты находишься - сайт/новости/просмотр/айди, то и куки создадуться новость/просмотр/айди [название куки]: значение. С любой другой страница уже не доступны они. Пробовал при создании указывать path, но это не помогло...Куда идти?? В какой стороне искать ответ, подскажите, пожалуйста??
Спустя 1 час, 4 минуты, 1 секунда (28.04.2010 - 16:24) twin написал(а):
Спустя 2 минуты (28.04.2010 - 16:26) live Uucyc написал(а):
twin, спасибо
Спустя 1 час, 14 минут, 35 секунд (28.04.2010 - 17:41) gomer505 написал(а):
Цитата (twin @ 27.04.2010 - 19:50) |
Это та же функция, что выше. Только расписанная подробнее. |
Простите, так и не понял - какая именно функция... Ну да ладно, не обращайте на меня внимания. Я, наверное только отвлекаю.
Спасибо теперь вижу.
Спустя 41 минута, 45 секунд (28.04.2010 - 18:22) gomer505 написал(а):
Мда... У меня опять полный провал.
Спустя 55 минут, 58 секунд (28.04.2010 - 19:18) gomer505 написал(а):
Начинаю сначала. Шаг1- Подготовительные работы. Можно ли уточнить по скрину. В директории log мы создаем файл error.log? Я так понимаю...
Понял, что не создаем...Но путь к нему есть, значит он будет создан при записи ошибок...
Понял, что не создаем...Но путь к нему есть, значит он будет создан при записи ошибок...
Спустя 47 минут, 14 секунд (28.04.2010 - 20:06) twin написал(а):
Нет. Мы создаем директорию log, а файлы в ней сервер создаст сам, когда будет ошибка. Надо это обозначить. Усек.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 28 минут, 9 секунд (28.04.2010 - 20:34) gomer505 написал(а):
Шаг 2 - Инициализация GET переменных.
Есть непонятное место после слов:
...Массив мы уже проходили. Сейчас нам понадобятся функции explode(), trim(), empty() и цикл foreach()
Вот алгоритм:
Насколько я понял (а это неявно видно из текста) что это вторая часть кода файла variables.php - инициализация переменных GET-параметров...Но тут он немного изменился, добавилась строчка :
Я правильно понял? Значит мы должны снова изменить файл variables.php ? Спрашиваю потому, что в коде архивного (www2) файла variables.php этой строчки нет??? Там все как-то немножко сокращено...
Есть непонятное место после слов:
...Массив мы уже проходили. Сейчас нам понадобятся функции explode(), trim(), empty() и цикл foreach()
Вот алгоритм:
<?php
/**
* Если включен REWRITE (тогда URL будет вида: site.ru/atr1/atr2/atr3) и есть входные параметры, то
*/
if(IRB_REWRITE == 'on' && !empty($_GET['route']))
{
/**
* Обрабатываем значение $_GET['route'], которое содержит в себе atr1/atr2/atr3.
* 1. Удаляем '/' в начале и конце строки функцией trim()
* 2. Разделяем полученную строку функцией explode() по символу '/'
* 3. Записываем полученные значения во временный массив $param
*/
$route = trim($_GET['route'], '/');
$param = explode('/', $route);
$i = 0;
/**
* Проходим по массиву $GET каждому его элементу присваиваем соответствующие эл-ты массива $param.
* Если таковые имеются. А если нет - оставляем дефолтные.
*/
foreach($GET as $var => $val)
{
if(!empty($param[$i]))
$GET[$var] = $param[$i];
++$i;
}
}
/**
* Иначе (если реврайт не включен, но параметры передаются)
*/
elseif(count($_GET))
{
/**
* Для каждого элемента массива $GET присваеваем соответствуещее внешнее значение $_GET (аргументы в URL-е)
*/
foreach($GET as $var => $val)
if(!empty($_GET[$var]))
$GET[$var] = $_GET[$var];
}
Насколько я понял (а это неявно видно из текста) что это вторая часть кода файла variables.php - инициализация переменных GET-параметров...Но тут он немного изменился, добавилась строчка :
$route = trim($_GET['route'], '/');
Я правильно понял? Значит мы должны снова изменить файл variables.php ? Спрашиваю потому, что в коде архивного (www2) файла variables.php этой строчки нет??? Там все как-то немножко сокращено...
$param = explode('/', trim($_GET['route'], '/'));То есть $route как таковой нет.
Спустя 23 минуты, 51 секунда (28.04.2010 - 20:58) twin написал(а):
Цитата |
Значит мы должны снова изменить файл variables.php ? |
Если делаешь все по уроку, то файл должен уже быть и в нем такая строка:
$GET['page'] = !empty($_GET['route']) ? $_GET['route'] : 'main';
по этому и меняем. Пишем функцию.
Цитата |
Там все как-то немножко сокращено... |
Это просто я в листинге разбил на две строки, чтобы было понятнее.
Спустя 1 минута, 53 секунды (28.04.2010 - 20:59) gomer505 написал(а):
Шаг 3 - Формируем ссылки.
Это, я так догадываюсь, мы делаем изменения в config.php ?
Это, я так догадываюсь, мы делаем изменения в config.php ?
Спустя 5 минут, 59 секунд (28.04.2010 - 21:05) twin написал(а):
угу
Спустя 3 минуты, 50 секунд (28.04.2010 - 21:09) gomer505 написал(а):
Цитата (twin @ 28.04.2010 - 17:58) | ||||
Если делаешь все по уроку, то файл должен уже быть и в нем такая строка: $GET['page'] = !empty($_GET['route']) ? $_GET['route'] : 'main'; по этому и меняем. Пишем функцию.
Это просто я в листинге разбил на две строки, чтобы было понятнее. |
Вот теперь для меня понемногу все становится на свои места...Просто там не помешали бы дополнительные пояснения, как на меня. Но возможно я и не прав.
Спустя 11 минут, 1 секунда (28.04.2010 - 21:20) gomer505 написал(а):
Вот еще место: ...а что делать с кодом в главном индексе чуть выше?
Там где мы до этого вызывали менюшку includ-ом ?
Он остается? Или его удалить?
Из следующего архива (www3) вижу что удаляем.
ob_start();
/**
* Подключаем меню
* Includes the menu
*/
include './skins/tpl/menu.tpl';
Там где мы до этого вызывали менюшку includ-ом ?
Он остается? Или его удалить?
Из следующего архива (www3) вижу что удаляем.
Спустя 16 минут, 21 секунда (28.04.2010 - 21:37) gomer505 написал(а):
Наконец что-то получилось. Уж и не надеялся. Правда не уверен правильно ли... Было бы неплохо увидеть правильное отображение результата. И еще не совсем все понятно - озарение еще не снизошло.
Все таки не получилось. Правильное отображение увидел загрузив www3 архив. Спасибо.
Все таки не получилось. Правильное отображение увидел загрузив www3 архив. Спасибо.
Спустя 1 час, 24 минуты, 52 секунды (28.04.2010 - 23:01) gomer505 написал(а):
Цитата (Unlikely @ 22.04.2010 - 17:17) |
А ссылки тут на разного рода инфу оставлять можно? Если да, то вот http://rutracker.org/forum/viewtopic.php?t=2828019 Это для самых начинающих. Подробно показывается про переменные, классы, функции и всё такое. Там в принципе всё описано, в каком выпуске, о чём повествование. |
Наверное интересно, только пока не могу скачать у меня пакет ограниченный, а там 1.12 Gb. Но за ссылку спасибо.
Спустя 8 часов, 31 минута, 57 секунд (29.04.2010 - 07:33) gomer505 написал(а):
Шаг 4 - Паттерн MVC. Модель.
Разве не нужно определить пользователя базы данных после создания базы и таблицы?...
Разве не нужно определить пользователя базы данных после создания базы и таблицы?...
Спустя 3 часа, 21 минута, 4 секунды (29.04.2010 - 10:54) twin написал(а):
Вообще то нужно в боевых условиях. Об этом отдельная тема будет. А Денвер настроен так, что там не нужно ничего. Пользователь root может работать без пароля.
Спустя 10 часов, 26 минут, 47 секунд (29.04.2010 - 21:21) gomer505 написал(а):
Шаг 4 - Паттерн MVC. Модель.
Простите если я Вас чуток достал... Делал все по уроку, скопировав архив www3 (что бы было без ошибок) - в итоге после загрузки в браузере получил кучу нотисов. Скрипт прилагаю.
Тут у меня была ошибка - я ее исправил. Теперь скрин имеет такой же вид как и следующий. У меня там домены параллельные - для запуска двух архивов в браузере.
Простите если я Вас чуток достал... Делал все по уроку, скопировав архив www3 (что бы было без ошибок) - в итоге после загрузки в браузере получил кучу нотисов. Скрипт прилагаю.
Тут у меня была ошибка - я ее исправил. Теперь скрин имеет такой же вид как и следующий. У меня там домены параллельные - для запуска двух архивов в браузере.
Спустя 3 минуты, 2 секунды (29.04.2010 - 21:24) gomer505 написал(а):
Шаг 4 - Паттерн MVC. Модель.
Дальше копирую то, что на "блюдечке" - архив www4. Интересно же посмотреть, что должно получиться - опять облом... Скрипт прилагаю:
У меня вопрос - что бы это могло значить? Неопределен столбец count в поле list . Это что ошибка в таблице? Там что-то не так?
Похоже я начинаю понимать что происходит...Меняю запрос в файле controller.php на
Это в архиве www4. Только не могу сообразить когда там изменился файл
В уроках этого не было - проверял. Ваше упущение? Или моя ошибка?
Теперь у меня все в порядке вроде бы. Есть красота.
Дальше копирую то, что на "блюдечке" - архив www4. Интересно же посмотреть, что должно получиться - опять облом... Скрипт прилагаю:
У меня вопрос - что бы это могло значить? Неопределен столбец count в поле list . Это что ошибка в таблице? Там что-то не так?
Похоже я начинаю понимать что происходит...Меняю запрос в файле controller.php на
$res = mysqlQuery("SELECT *
FROM `". IRB_DBPREFIX ."test`");
Это в архиве www4. Только не могу сообразить когда там изменился файл
<!-- ./skins/tpl/main/show.tpl begin -->
<h2>Главная страница</h2>
<!-- ./skins/tpl/main/show.tpl end -->
В уроках этого не было - проверял. Ваше упущение? Или моя ошибка?
Теперь у меня все в порядке вроде бы. Есть красота.
Спустя 39 минут, 57 секунд (29.04.2010 - 22:04) twin написал(а):
Это образец работы дебаггера
Там же написано - делаем специально ошибку в запросе, что бы посмотреть, как работает вывод ошибок мускула на экран.)))
Все там правильно.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Там же написано - делаем специально ошибку в запросе, что бы посмотреть, как работает вывод ошибок мускула на экран.)))
Все там правильно.
Спустя 11 минут, 19 секунд (29.04.2010 - 22:16) gomer505 написал(а):
Цитата (twin @ 29.04.2010 - 19:04) |
Это образец работы дебаггера ![]() Там же написано - делаем специально ошибку в запросе, что бы посмотреть, как работает вывод ошибок мускула на экран.))) Все там правильно. |
Простите это я упустил, сейчас найду... Но похоже я с этим справился! Хоть и с горем пополам.
Спустя 31 минута, 28 секунд (29.04.2010 - 22:47) Sakura написал(а):
twin
Ваш почтовый класс не пропускает моё мыло sakura@umc.dp.ua
Ваш почтовый класс не пропускает моё мыло sakura@umc.dp.ua
Спустя 2 минуты, 26 секунд (29.04.2010 - 22:49) Guest написал(а):
вот дура, я пробел не увидела( Извините
Спустя 1 час, 3 минуты, 55 секунд (29.04.2010 - 23:53) gomer505 написал(а):
Шаг 5 - Паттерн MVC. Вид.
А на самом деле эта функция в архиве www5 находится в файле libs/view.php
А на самом деле эта функция в архиве www5 находится в файле libs/view.php
Спустя 18 минут, 26 секунд (30.04.2010 - 00:12) gomer505 написал(а):
Не работает ровненько - хоть тресни! Архив www5 работает, а то что делаю по уроку никак. Уже два раза переделал внимательнейшим образом- никак! И файлы отличаются от листинга. Например second/controller.php в архиве www5
a в уроке
Замечаете разницу? Второй код выдает ошибку:
"Fatal error: Call to undefined function gettpl() in U:\home\my-site.ua\www\modules\second\controller.php on line 38"
Но www5 работает , а листинговый нет. Пытаюсь исправить последний, как там (в www5)все равно ошибку выдает:
"Fatal error: Call to undefined function mysqlquery() in U:\home\my-site.ua\www\modules\second\controller.php on line 23"
Не понимаю...
<?php
/**
* Controller
* Контроллер
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}
///////////////////////////////////////////////////////////
$res = mysqlQuery("SELECT *
FROM `". IRB_DBPREFIX ."test`"
);
$rows = '';
$i = 0;
if(mysql_num_rows($res) > 0)
{
$tpl = getTpl('second/price_rows');
while($row = htmlChars(mysql_fetch_assoc($res)))
{
++$i;
$row['num'] = $i;
$rows .= parseTpl($tpl, $row);
}
}
a в уроке
<?php
/**
* Controller
* Контроллер
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}
///////////////////////////////////////////////////////////
/**
* We connect a file of the MySQL functions
* Подключаем файл функций MySQL
*/
include_once IRB_ROOT .'libs/mysql.php';
$res = mysqlQuery("SELECT *
FROM `". IRB_DBPREFIX ."test`"
);
$rows = '';
$i = 0;
if(mysql_num_rows($res) > 0)
{
$tpl = getTpl('second/price_rows');
while($row = htmlChars(mysql_fetch_assoc($res)))
{
++$i;
$row['num'] = $i;
$rows .= parseTpl($tpl, $row);
}
}
Замечаете разницу? Второй код выдает ошибку:
"Fatal error: Call to undefined function gettpl() in U:\home\my-site.ua\www\modules\second\controller.php on line 38"
Но www5 работает , а листинговый нет. Пытаюсь исправить последний, как там (в www5)все равно ошибку выдает:
"Fatal error: Call to undefined function mysqlquery() in U:\home\my-site.ua\www\modules\second\controller.php on line 23"
Не понимаю...
Спустя 8 часов, 2 минуты, 12 секунд (30.04.2010 - 08:14) gomer505 написал(а):
Конечно же я терпеливо жду Вашей реакции на мои вопросы, понимая реально, как я Вас отвлекаю от этого титанического труда - объяснить таким как, опять же, я - основы PHP программирования.
Но вместе с тем продолжаю двигаться вперед, если Вы не против.
Шаг 6 - Обработка POST данных.
Перед структурой файлов есть такое предложение:"...И так, в корне создаем папку admin, а в ней повторяем структуру: главный индекс и модули. И добавим еще один - для установки мета-данных. Остальные контроллеры пока пустые."
...А ниже после листинга admin/index.php такие строки: "Основные отличия от главного индекса сайта.
1. Так как админка у нас не в корне, значит нужно изменить пути. Чтобы не мудрствовать лукаво, установим их константой IRB_ROOT, то есть сделаем абсолютными."
Мне показалось, что есть некое противоречие? Сначала "в корне создаем" , а дальше выясняется, что "админка у нас не в корне"...
Лично я запутался.
И еще нельзя ли хотя бы небольшой в скобочках намек на коммент строки приведенной ниже:
"3. Изменился переключатель модулей. Нам тут нужны свои - админские."
""
Но вместе с тем продолжаю двигаться вперед, если Вы не против.
Шаг 6 - Обработка POST данных.
Перед структурой файлов есть такое предложение:"...И так, в корне создаем папку admin, а в ней повторяем структуру: главный индекс и модули. И добавим еще один - для установки мета-данных. Остальные контроллеры пока пустые."
...А ниже после листинга admin/index.php такие строки: "Основные отличия от главного индекса сайта.
1. Так как админка у нас не в корне, значит нужно изменить пути. Чтобы не мудрствовать лукаво, установим их константой IRB_ROOT, то есть сделаем абсолютными."
Мне показалось, что есть некое противоречие? Сначала "в корне создаем" , а дальше выясняется, что "админка у нас не в корне"...
Лично я запутался.
И еще нельзя ли хотя бы небольшой в скобочках намек на коммент строки приведенной ниже:
"3. Изменился переключатель модулей. Нам тут нужны свои - админские."
""
Спустя 43 минуты, 37 секунд (30.04.2010 - 08:58) Michael написал(а):
Цитата (gomer505 @ 29.04.2010 - 23:12) |
"Fatal error: Call to undefined function mysqlquery() in U:\home\my-site.ua\www\modules\second\controller.php on line 23" Не понимаю... |
gomer505, вообще правило большого пальца для программирования в общем - умение читать и анализировать ошибки. Без этого никуда.
Ну вот пишет - вызвана неопределенная функция. Что тут непонятного?
![blink.gif](http://phpforum.ru/html/emoticons/blink.gif)
Общий совет - может сначала синтаксис и основные приемы подучить(например как с базой данных работать, с файлами и т.д.), а потом уже переходить к более сложным урокам HOWTO.
Спустя 41 минута, 15 секунд (30.04.2010 - 09:39) twin написал(а):
Привет. Не успеваю я за тобой)))
Архивы подправил. А вообще я подозреваю, что у тебя опять что то старое. Потому что second/controller.php в архивах давно нет, есть second/read_controller.php
Ошибки
Архивы подправил. А вообще я подозреваю, что у тебя опять что то старое. Потому что second/controller.php в архивах давно нет, есть second/read_controller.php
Ошибки
Цитата |
"Fatal error: Call to undefined function gettpl() in U:\home\my-site.ua\www\modules\second\controller.php on line 38" "Fatal error: Call to undefined function mysqlquery() in U:\home\my-site.ua\www\modules\second\controller.php on line 23" |
говорят о том, что где то потерялось подключение файлов. Скрипт не видит функций getTpl() и mysqlQuery(), а значит не подключены файлы libs/view.php и libs/mysql.php
Цитата |
Мне показалось, что есть некое противоречие? |
Да, есть такое. Вернее было))) Вот так теперь:
Цитата |
1. Так как индекс админки у нас не в корне, |
Спустя 2 минуты, 39 секунд (30.04.2010 - 09:42) twin написал(а):
Michael
Цитата |
что имеется функция mysql_query(). Т.е. опечатка закралась. |
нет там опечатки. Это обертка просто.
Спустя 30 минут, 11 секунд (30.04.2010 - 10:12) Michael написал(а):
Цитата (twin @ 30.04.2010 - 08:42) | ||
Michael
нет там опечатки. Это обертка просто. |
Ага, понятно. А у него почему то в ошибке mysqlquery - q - с маленькой.
Спустя 22 минуты, 58 секунд (30.04.2010 - 10:35) twin написал(а):
В синтаксисе php названия функций регистронезависимые. Это значит, что интерпретатор, прежде чем принять функцию к исполнению, преобразует названия в нижний регистр. Соответственно и в тексте ошибки выдает то, с чем не смог справиться, а не то, что написано в файле.
Спустя 3 часа, 7 минут (30.04.2010 - 13:42) gomer505 написал(а):
Цитата (twin @ 30.04.2010 - 06:39) | ||||||
Привет. Не успеваю я за тобой))) Архивы подправил. А вообще я подозреваю, что у тебя опять что то старое. Потому что second/controller.php в архивах давно нет, есть second/read_controller.php Ошибки
говорят о том, что где то потерялось подключение файлов. Скрипт не видит функций getTpl() и mysqlQuery(), а значит не подключены файлы libs/view.php и libs/mysql.php
Да, есть такое. Вернее было))) Вот так теперь:
|
Я понимаю, что скрипт не видит эти функции... Иначе бы я не брался за изучение таких вещей. Вопрос почему он их не видит? Я же делаю все последовательно и внимательно по уроку, значит если в уроке все правильно и я ничего не потерял в других файлах - значит должно работать?
Спустя 6 минут, 43 секунды (30.04.2010 - 13:48) gomer505 написал(а):
Цитата (Michael @ 30.04.2010 - 05:58) | ||
gomer505, вообще правило большого пальца для программирования в общем - умение читать и анализировать ошибки. Без этого никуда. Ну вот пишет - вызвана неопределенная функция. Что тут непонятного? ![]() Общий совет - может сначала синтаксис и основные приемы подучить(например как с базой данных работать, с файлами и т.д.), а потом уже переходить к более сложным урокам HOWTO. |
Согласен, по php я прошел только Е.Попова и не один раз. Понимаю что он здесь не авторитет. Почитываю справочники и др. литературу.Но я же не спрашиваю что это в конкретном данном случае за функция... С этим я сам разберусь как-то. И с синтаксисом и с др. основами. Я спрашиваю почему мне скрипт выдал ошибку при том, что я все поключил и сделал по уроку последовательно. Значит или я где-то ошибся (что более вероятно) или неточность в самом уроке. Да простит мне эти слова гуру twin.
Спустя 54 минуты, 36 секунд (30.04.2010 - 14:43) baston написал(а):
Николай, в уроке "Гостевая книга" в шаге 2 вы пишите:
Цитата |
Теперь усложним задачу. При отправке данных запись в поле исчезает. А что, если что-то не так? Бедный юзер должен всё заново переписывать? Будем вежливы и вернем ему форму с данными. Для этого немного изменим ход событий. Сначала примем переменную, потом выведем форму. |
и приводите пример для текстовых полей формы.
А как быть, если данные были выбраны пользователем из select-а? Такое выражение (применительно к полю выбора select) уже не сработает:
$text = !empty($_POST['select']) ? $_POST['select'] : null;
Как можно сохранить выбранное значение из списка?
И еще вопрос по header. Вы добавляете один хедер в начале скрипта (передача кодировки), а второй в условие ниже (при проверке данных). Так из-за этого выводится ошибка. Один раз мы же уже отправили заголовок, а больше нельзя... Тут как быть, чтобы очистить данные на форме?
Спасибо.
Спустя 2 часа, 19 минут, 57 секунд (30.04.2010 - 17:03) twin написал(а):
gomer505
Цитата |
Вопрос почему он их не видит? |
где-то что-то не подключил.
baston
Для селекта нужно функцию использовать. И для чекбоксов похожую, и для галочек.
function reSelect($id, $return)
{
return ($id == $return)?'selected="selected"':NULL;
}
Тогда в селекте пишем
<select name="text">
<option value="1" <?php echo reSelect(1, $text); ?> >1</option>
<option value="2" <?php echo reSelect(2, $text); ?> >2</option>
</select>
Заголовков может быть посланол сколько угодно, соответственно и функцию можно вызвать хоть сто раз. Ошибка не в этом. Скорее всего у тебя BOM присутствует
Спустя 2 часа, 40 минут, 22 секунды (30.04.2010 - 19:43) baston написал(а):
Понял, спасибо. Разберусь с бомом.
Спустя 53 минуты, 7 секунд (30.04.2010 - 20:36) baston написал(а):
Цитата (twin @ 30.04.2010 - 17:03) |
Заголовков может быть посланол сколько угодно, соответственно и функцию можно вызвать хоть сто раз. Ошибка не в этом. Скорее всего у тебя BOM присутствует |
Увы, сейчас специально просмотрел в Notepad++: кодировка в UTF-8 без BOM.
Вот мой код:
<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
//Подключаемся к серверу и БД
include "config.php";
//Инициализируем переменные для текстовых полей формы
$cat_product = !empty($_POST['cat_product']) ? $_POST['cat_product'] : NULL;
$name_product = !empty($_POST['name_product']) ? $_POST['name_product'] : NULL;
$cal = !empty($_POST['cal']) ? $_POST['cal'] : NULL;
$protein = !empty($_POST['protein']) ? $_POST['protein'] : NULL;
$carbon = !empty($_POST['carbon']) ? $_POST['carbon'] : NULL;
$fat = !empty($_POST['fat']) ? $_POST['fat'] : NULL;
//Формируем запрос к БД
$query = "SELECT * FROM `product_cat`";
//Отправляем запрос
$res = mysql_query($query);
//Проверяем успешность запроса
if(!$res) exit("Ошибка запроса: ".mysql_error());
//Проверяем наличие записей
if(mysql_num_rows($res)>0)
{
?>
<html>
<head>
<title>Добавление нового продукта в БД</title>
</head>
<body>
<table width=90% align="center">
<tr>
<td align="right"><a href="index.php">Выход</a></td>
</tr>
</table>
<form name="addproduct" action="" method="post">
<table border=0 align="center" valign="middle" cellpadding=5>
<caption align="center"><h2>Добавить продукт:</h2></caption>
<tr>
<td align="center" colspan=2><a href="">Посмотреть, какие продукты уже добавлены</a></td>
</tr>
<tr>
<td align="right"><font color="red">*</font> Категория продукта: </td>
<td><select name="cat_product">
<option selected disabled>Выберите категорию продукта</option>
<?php // В цикле выводим опции селекта
while($prod_cat = mysql_fetch_array($res)) { ?>
<option value="<?php echo $prod_cat['id_product_cat'] ?>"><?php echo $prod_cat['name_product_cat'] ?></option>
<?php }} ?>
</select></td>
</tr>
<tr>
<td align="right"><font color="red">*</font> Наименование продукта: </td>
<td><input type=text name="name_product" size=50 value="<?php echo $name_product ?>"></td>
</tr>
<tr>
<td align="right"><font color="red">*</font> Калорий на 100 гр: </td>
<td><input type="text" name="cal" size=6 maxlength=6 value="<?php echo $cal ?>"></td>
</tr>
<tr>
<td align="right">Белок, гр: </td>
<td><input type="text" name="protein" size=6 maxlength=6 value="<?php echo $protein ?>"></td>
</tr>
<tr>
<td align="right">Углеводы, гр: </td>
<td><input type="text" name="carbon" size=6 maxlength=6 value="<?php echo $carbon ?>"></td>
</tr>
<tr>
<td align="right">Жир, гр: </td>
<td><input type="text" name="fat" size=6 maxlength=6 value="<?php echo $fat ?>"></td>
</tr>
<tr>
<td align="center" colspan=2><input type="submit" name="add_product" value=Добавить></td>
</tr>
</table>
</form>
<?php
//Проверяем введенные данные
//Если кнопка нажата, а поля формы пусты
if(!empty($_POST['add_product']))
{
if(!$cat_product)
{
echo "Не выбрана категория продукта";
}
elseif(!$name_product)
{
echo "Не введено наименование продукта";
}
elseif(!$cal)
{
echo "Не введена калорийность продукта";
}
else
{
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
// Останавливаем скрипт (все равно браузер уже ушел)
exit();
}
}
?>
</body>
</html>
Спустя 2 часа, 56 минут, 53 секунды (30.04.2010 - 23:33) twin написал(а):
Да. B0M может и не быть...
Но какое отношение имеет этот код к моим урокам?
Но какое отношение имеет этот код к моим урокам?
Спустя 9 часов, 4 минуты, 16 секунд (1.05.2010 - 08:38) baston написал(а):
Исключительно по заголовкам. Но вы правы, Николай, постараюсь разобраться сам.
Спасибо.
Спасибо.
Спустя 29 минут, 1 секунда (1.05.2010 - 09:07) twin написал(а):
Я не про то, что сам. Просто не в этой теме
А по сути - ну нельзя хидер ниже вывода, это же притча воязыцах.
Я же там сто раз написал об этом. Потому и структуру меняли. Вот это
и вниз. А хидер сверху...
И с праздником.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
А по сути - ну нельзя хидер ниже вывода, это же притча воязыцах.
Я же там сто раз написал об этом. Потому и структуру меняли. Вот это
echo "Не выбрана категория продукта";все в переменные
$error = "Не выбрана категория продукта";
и вниз. А хидер сверху...
<?phpтак работать не будет конечно, но принцип должен быть понятен. Дальше сам уже.
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
//Проверяем введенные данные
//Если кнопка нажата, а поля формы пусты
if(!empty($_POST['add_product']))
{
if(!$cat_product)
{
$error = "Не выбрана категория продукта";
}
elseif(!$name_product)
{
$error = "Не введено наименование продукта";
}
elseif(!$cal)
{
$error = "Не введена калорийность продукта";
}
else
{
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
// Останавливаем скрипт (все равно браузер уже ушел)
exit();
}
//Подключаемся к серверу и БД
include "config.php";
//Инициализируем переменные для текстовых полей формы
$cat_product = !empty($_POST['cat_product']) ? $_POST['cat_product'] : NULL;
$name_product = !empty($_POST['name_product']) ? $_POST['name_product'] : NULL;
$cal = !empty($_POST['cal']) ? $_POST['cal'] : NULL;
$protein = !empty($_POST['protein']) ? $_POST['protein'] : NULL;
$carbon = !empty($_POST['carbon']) ? $_POST['carbon'] : NULL;
$fat = !empty($_POST['fat']) ? $_POST['fat'] : NULL;
//Формируем запрос к БД
$query = "SELECT * FROM `product_cat`";
//Отправляем запрос
$res = mysql_query($query);
//Проверяем успешность запроса
if(!$res) exit("Ошибка запроса: ".mysql_error());
//Проверяем наличие записей
if(mysql_num_rows($res)>0)
{
}
?>
<html>
<head>
<title>Добавление нового продукта в БД</title>
</head>
<body>
<?php echo $error ?>
<table width=90% align="center">
<tr>
<td align="right"><a href="index.php">Выход</a></td>
</tr>
</table>
<form name="addproduct" action="" method="post">
<table border=0 align="center" valign="middle" cellpadding=5>
<caption align="center"><h2>Добавить продукт:</h2></caption>
<tr>
<td align="center" colspan=2><a href="">Посмотреть, какие продукты уже добавлены</a></td>
</tr>
<tr>
<td align="right"><font color="red">*</font> Категория продукта: </td>
<td><select name="cat_product">
<option selected disabled>Выберите категорию продукта</option>
<?php // В цикле выводим опции селекта
while($prod_cat = mysql_fetch_array($res)) { ?>
<option value="<?php echo $prod_cat['id_product_cat'] ?>"><?php echo $prod_cat['name_product_cat'] ?></option>
<?php }} ?>
</select></td>
</tr>
<tr>
<td align="right"><font color="red">*</font> Наименование продукта: </td>
<td><input type=text name="name_product" size=50 value="<?php echo $name_product ?>"></td>
</tr>
<tr>
<td align="right"><font color="red">*</font> Калорий на 100 гр: </td>
<td><input type="text" name="cal" size=6 maxlength=6 value="<?php echo $cal ?>"></td>
</tr>
<tr>
<td align="right">Белок, гр: </td>
<td><input type="text" name="protein" size=6 maxlength=6 value="<?php echo $protein ?>"></td>
</tr>
<tr>
<td align="right">Углеводы, гр: </td>
<td><input type="text" name="carbon" size=6 maxlength=6 value="<?php echo $carbon ?>"></td>
</tr>
<tr>
<td align="right">Жир, гр: </td>
<td><input type="text" name="fat" size=6 maxlength=6 value="<?php echo $fat ?>"></td>
</tr>
<tr>
<td align="center" colspan=2><input type="submit" name="add_product" value=Добавить></td>
</tr>
</table>
</form>
</body>
</html>
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
И с праздником.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 8 минут, 12 секунд (1.05.2010 - 09:15) baston написал(а):
Спасибо! Принцип понял и еще когда спрашивал и упоминал про хедеры, имел в виду запрет на отправку заголовков после вывода. Сейчас более плотно почитаю про заголовки.
И вас поздравляю с первомаем!
И вас поздравляю с первомаем!
![user posted image](http://pharm-forum.ru/smiles/april/muziek.gif)
Спустя 15 дней, 12 часов, 38 минут, 26 секунд (16.05.2010 - 21:53) gomer505 написал(а):
Всем привет! Надеюсь Вы от меня немного отдохнули. Продолжим?
Снова штудирую Гостевую. Шаг 4 Сброс POST параметров. Ну хоть убейте не могу сам разобраться в строчке: "...нельзя отправлять заголовок раньше вывода..." Что подразумевается под словом "вывод"? Заголовок то я понимаю вот этот:
А вывод? Код отображения? Т.е. форма и сообщения , которые идут за ней? Тогда у нас все заголовки идут впереди вывода...
Что-то я заплутал.
Снова штудирую Гостевую. Шаг 4 Сброс POST параметров. Ну хоть убейте не могу сам разобраться в строчке: "...нельзя отправлять заголовок раньше вывода..." Что подразумевается под словом "вывод"? Заголовок то я понимаю вот этот:
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
А вывод? Код отображения? Т.е. форма и сообщения , которые идут за ней? Тогда у нас все заголовки идут впереди вывода...
Что-то я заплутал.
Спустя 1 час, 37 минут, 2 секунды (16.05.2010 - 23:30) twin написал(а):
Вот смотри. Представь себе машину и заправку. Заправка - это сервер. Машина - браузер.
Ты приехал на заправку (соединился с сервером), и хочешь залить 98-го бензина. Вот сначала заправщик (хидер) должен выбрать нужный шланг (отправить заголовок), а потом только польётся бензин (поток информации).
Если мы сначала попытаемся включить колонку (отправить браузеру какой-нибудь текст или даже пробел), то бензин польётся куда угодно, только не в бак.
По этому сначала нужно отправить все заголовки, а потом только остальной вывод. То есть до того, как отработают все хидеры ни в коем случае нельзя пытаться что-то отправить браузеру. То есть в поток.
Ты приехал на заправку (соединился с сервером), и хочешь залить 98-го бензина. Вот сначала заправщик (хидер) должен выбрать нужный шланг (отправить заголовок), а потом только польётся бензин (поток информации).
Если мы сначала попытаемся включить колонку (отправить браузеру какой-нибудь текст или даже пробел), то бензин польётся куда угодно, только не в бак.
По этому сначала нужно отправить все заголовки, а потом только остальной вывод. То есть до того, как отработают все хидеры ни в коем случае нельзя пытаться что-то отправить браузеру. То есть в поток.
Спустя 20 часов, 21 минута, 12 секунд (17.05.2010 - 19:51) gomer505 написал(а):
Цитата (twin @ 16.05.2010 - 20:30) |
Вот смотри. Представь себе машину и заправку. Заправка - это сервер. Машина - браузер. Ты приехал на заправку (соединился с сервером), и хочешь залить 98-го бензина. Вот сначала заправщик (хидер) должен выбрать нужный шланг (отправить заголовок), а потом только польётся бензин (поток информации). Если мы сначала попытаемся включить колонку (отправить браузеру какой-нибудь текст или даже пробел), то бензин польётся куда угодно, только не в бак. По этому сначала нужно отправить все заголовки, а потом только остальной вывод. То есть до того, как отработают все хидеры ни в коем случае нельзя пытаться что-то отправить браузеру. То есть в поток. |
Это я понял - поэтому меня и смутила фраза :"Вспомните, нельзя отправлять заголовок раньше вывода, по этому меняем структуру." Шаг 4
Сброс POST параметров... Поэтому я и заплутал...
Спустя 23 часа, 45 минут, 28 секунд (18.05.2010 - 19:37) Carton написал(а):
Доброго времени суток.
Во первых хотел сказать спасибо за уроки. Очень интересное чтиво.
во вторых возник вопрос
Гостевая книга->шаг2 (форма)
тут из массива _POST мы хотим получить значение ячейки text1
но почему в апострофах а не в ковычках?
как я понял из предъидущих тем, апострофы это текст, ковычки "ни рыба, ни мясо".
или же ковычки в подобных случаях стоит применять только когда используется переменная в которой сохранено имя параметра, передаваемого в скрипт?
я просто пока не могу до конца усвоить где и когда втыкать апострофы а когда ковычки
Во первых хотел сказать спасибо за уроки. Очень интересное чтиво.
во вторых возник вопрос
Гостевая книга->шаг2 (форма)
$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
тут из массива _POST мы хотим получить значение ячейки text1
но почему в апострофах а не в ковычках?
как я понял из предъидущих тем, апострофы это текст, ковычки "ни рыба, ни мясо".
или же ковычки в подобных случаях стоит применять только когда используется переменная в которой сохранено имя параметра, передаваемого в скрипт?
я просто пока не могу до конца усвоить где и когда втыкать апострофы а когда ковычки
Спустя 36 минут, 56 секунд (18.05.2010 - 20:14) twin написал(а):
Большой разницы в них нет. На мой взгляд просто апострофы читабельнее. Ну и быстрее, потому что интерпретатор не ищет в них переменные.
Кроме того, в апострофах удобнее писать валидный html
ну и большинство общепринятых стилей требуют по возможности использовать их.
Кроме того, в апострофах удобнее писать валидный html
// Вот
echo '<a href="/?page=1">Ссылка</a>';
// или вот
echo "<a href=\""/?page=1\">Ссылка</a>";
ну и большинство общепринятых стилей требуют по возможности использовать их.
Спустя 17 минут, 11 секунд (18.05.2010 - 20:31) Carton написал(а):
Кстати вопрос еще возник
а зачем в конце ставить / ?
<input name="text" type="text" /><br />
<input name="ok" type="submit" />
а зачем в конце ставить / ?
Спустя 6 минут, 56 секунд (18.05.2010 - 20:38) twin написал(а):
Это стандарт XHTML. Все теги длжны быть закрыты. И одиночные тоже. даже
<br />
Спустя 3 минуты, 16 секунд (18.05.2010 - 20:41) Carton написал(а):
Цитата (twin @ 18.05.2010 - 17:38) |
Это стандарт XHTML. Все теги длжны быть закрыты. И одиночные тоже. даже<br /> |
Спасибо, об XHTML раньше не слышал
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
Спустя 1 день, 3 часа, 4 минуты, 41 секунда (19.05.2010 - 23:46) gomer505 написал(а):
Огромное спасибо за облегченную версию "Ядра" думаю мне это очень поможет. Возник вопрос которому раньше не придавал значения. По поводу ликвидации магических кавычек: Шаг 1 Подготовительные работы. Там по ссылке переходим убиваем магические кавычки
и дальше :"...А еще лучше сделать это в скрипте, что бы он не зависел от внешних настроек. Делается это так:" и код
Вопрос: где именно вставлять этот код? В файлах с формами передающими GET и POST переметры? Если можно в кратце расскажите, пожалуйста.
и дальше :"...А еще лучше сделать это в скрипте, что бы он не зависел от внешних настроек. Делается это так:" и код
<?php
/**
* We kill magic inverted commas
* Убиваем магические кавычки
*/
function stripslashesDeep($data)
{
if(is_array($data))
$data = array_map("stripslashesDeep", $data);
else
$data = stripslashes($data);
return $data;
}
if(get_magic_quotes_gpc())
{
$_GET = stripslashesDeep($_GET);
$_POST = stripslashesDeep($_POST);
$_COOKIE = stripslashesDeep($_COOKIE);
$_REQUEST = stripslashesDeep($_REQUEST);
}
Вопрос: где именно вставлять этот код? В файлах с формами передающими GET и POST переметры? Если можно в кратце расскажите, пожалуйста.
Спустя 11 часов, 29 минут, 57 секунд (20.05.2010 - 11:16) Mirexzpalich написал(а):
В lib.php. То бишь в библиотеку общих функций.
Спустя 19 минут, 51 секунда (20.05.2010 - 11:36) twin написал(а):
Вообще то там написано дальше. Пока никуда не надо, раз не написано, что пора вставлять))
Спустя 9 часов, 39 минут, 27 секунд (20.05.2010 - 21:15) gomer505 написал(а):
Цитата (twin @ 20.05.2010 - 08:36) |
Вообще то там написано дальше. Пока никуда не надо, раз не написано, что пора вставлять)) |
Спасибо. Хорошо, не буду опережать событий...
Спустя 28 дней, 10 часов, 32 минуты, 41 секунда (19.06.2010 - 07:48) gomer505 написал(а):
Привет. С Днем Рождения Вас! Успехов и всего самого самого. Крепкого здоровья...
Спустя 3 дня, 5 часов, 20 минут, 47 секунд (22.06.2010 - 13:09) Obolonchik написал(а):
Добрый день. Помогите разобраться. Начал изучение вашего курса и сразу столкнулся с проблемой... В самом первом уроке вы предлагаете создать файл .htacces и прописать в нем кодировку: AddDefaultCharset UTF-8, а потом создать index.php такого содержания:
<?php
header('Content-Type: text/html; charset=utf-8');
$var = 'Привет, Мир... тьфу, Hello World';
?>
<h1>
<?php echo $var; ?>
</h1>
так вот: у меня русский шрифт не отображается... В чем может быть проблема?
<?php
header('Content-Type: text/html; charset=utf-8');
$var = 'Привет, Мир... тьфу, Hello World';
?>
<h1>
<?php echo $var; ?>
</h1>
так вот: у меня русский шрифт не отображается... В чем может быть проблема?
Спустя 1 час, 26 минут, 47 секунд (22.06.2010 - 14:35) twin написал(а):
Редактор тоже нужно настроить на UTF-8
Спустя 1 час, 38 минут, 31 секунда (22.06.2010 - 16:14) Obolonchik написал(а):
Спасибо. А скажите еще в чем разница utf-8 без BOM и с BOM. и какую именно кодировку ставить?
Спустя 7 минут, 17 секунд (22.06.2010 - 16:21) twin написал(а):
Без. Это маркировка файла, она мешает.
Спустя 5 часов, 47 минут, 42 секунды (22.06.2010 - 22:09) Obolonchik написал(а):
Есть еще вопросик:)
После отработки скрипта
на странице под кнопкой отправить появляются какие то числа... ПРИЧЕМ если использовать google chrome эти числа не видны в исходном коде страницы
...
После отработки скрипта
<?php
if(!empty($_POST['ok']))
{
if(!$text1)
echo 'Текстовое поле не заполнено.';
elseif(!$text2)
echo 'Текстовая область не заполнена.';
else
echo // Записываем информацию в файл, заканчивая символом переноса строки \n
file_put_contents('text.txt', $text2 ."\n", FILE_APPEND);
}
else
{
echo 'Напишите что-нибудь';
}
на странице под кнопкой отправить появляются какие то числа... ПРИЧЕМ если использовать google chrome эти числа не видны в исходном коде страницы
![unsure.gif](http://phpforum.ru/html/emoticons/unsure.gif)
Спустя 2 минуты, 38 секунд (22.06.2010 - 22:12) waldicom написал(а):
file_put_contents отдает количество записанных байт, а Вы потом это число выводите.
Спустя 2 часа, 41 минута, 38 секунд (23.06.2010 - 00:53) Obolonchik написал(а):
Кстати еще вопрос возник:
в уроке гостевой книги на шаге №4 мы учимся сбрасывать POST параметры (я так понимаю, что фактически мы не сбрасываем параметры, а запускаем файл заново?), но в формах пишем:
Вопрос: зачем возвращать в поля формы набранные значения если мы все равно запускаем скрипт заново? не грузят ли такие моменты код?
в уроке гостевой книги на шаге №4 мы учимся сбрасывать POST параметры (я так понимаю, что фактически мы не сбрасываем параметры, а запускаем файл заново?), но в формах пишем:
<form action="?" method="post">
Логин:<br />
<input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<textarea name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);?></textarea><br />
<input name="ok" type="submit" />
</form>
Вопрос: зачем возвращать в поля формы набранные значения если мы все равно запускаем скрипт заново? не грузят ли такие моменты код?
Спустя 2 минуты, 1 секунда (23.06.2010 - 00:55) Obolonchik написал(а):
Цитата (waldicom @ 22.06.2010 - 19:12) |
file_put_contents отдает количество записанных байт, а Вы потом это число выводите. |
какой командой я его вывожу? не совсем понял... И почему браузер не показывает этот вывод в исходном коде????
Спустя 6 часов, 43 минуты, 53 секунды (23.06.2010 - 07:39) twin написал(а):
Вот этого
if(!empty($_POST['ok']))
{
if(!$text1)
echo 'Текстовое поле не заполнено.';
elseif(!$text2)
echo 'Текстовая область не заполнена.';
else
echo // Записываем информацию в файл, заканчивая символом переноса строки \n
file_put_contents('text.txt', $text2 ."\n", FILE_APPEND);
в листинге нет. Вот она и выводит количество байт.
По поводу второго вопроса, возврат данных в форму нужен для того, чтобы они не потерялись при ошибочном заполнении. А загрузка при редиректе минимальная, так как рагументами в функцию передается NULL.
if(!empty($_POST['ok']))
{
if(!$text1)
echo 'Текстовое поле не заполнено.';
elseif(!$text2)
echo 'Текстовая область не заполнена.';
else
echo // Записываем информацию в файл, заканчивая символом переноса строки \n
file_put_contents('text.txt', $text2 ."\n", FILE_APPEND);
в листинге нет. Вот она и выводит количество байт.
По поводу второго вопроса, возврат данных в форму нужен для того, чтобы они не потерялись при ошибочном заполнении. А загрузка при редиректе минимальная, так как рагументами в функцию передается NULL.
Спустя 22 часа, 50 минут, 31 секунда (24.06.2010 - 06:30) gomer505 написал(а):
Здравствуйте. Начал кодить сверстанный сайт по примеру Ваших уроков. Все получается до момента вставки меню. У меня вопрос такого плана: мы делаем файл menu.tpl и вызываем его в index.php, а что делать с меню, которое у меня в файле index.tpl находится? Оно ведь получается дублируется... Или его надо вырезать из index.tpl и ... чтобы оно вставлялось из index.php? Но как обозначить где именно вставлять это меню? Вызывать menu.tpl с помощью функции include? Я не понимаю, но хочу разобраться. Мне кажется катастрофически не хватает примера с кодированием реального шаблона простенького сайта. Простите, я наверное не имею права Вам советовать что-либо...
Спустя 3 часа, 14 минут, 40 секунд (24.06.2010 - 09:44) twin написал(а):
Помоему там примеров более чем достаточно... Для каждого урока есть.
Что касается меню, то оно в этом уроке переехало. Теперь подключается прямо в шаблоне, а из индекса конечно нужно убрать.
Что касается меню, то оно в этом уроке переехало. Теперь подключается прямо в шаблоне, а из индекса конечно нужно убрать.
Спустя 18 дней, 13 часов, 22 минуты, 22 секунды (12.07.2010 - 23:07) Zarymac написал(а):
Я совсем новичок. Ребят, подскажите, можно ли вставить это http://ruseller.com/lessons.php?rub=29&id=74 в страницу php? Не пойму, php и html могут ли взаимодействовать и как это делается.
Спустя 52 минуты, 35 секунд (12.07.2010 - 23:59) Ice написал(а):
конечно можно. В случае простой вставки, php-файл может быть написан, например, так:
<html>
<head>
<title>Объединяем ХТМЛ и ПХП</title>
<head>
<body>
<p>А сейчас мы отобразим строку, сгенерированную PHP!</p>
<?php echo "Привет, мир!"; ?>
</body>
</html>
Спустя 10 часов, 39 минут, 57 секунд (13.07.2010 - 10:39) Zarymac написал(а):
Мне бы хотелось сохранить эффект текста, его движение и смену. Так, как вы предлагаете, просто вставляется текст.
Спустя 2 дня, 4 часа, 44 минуты, 17 секунд (15.07.2010 - 15:23) amazing написал(а):
Zarymac, это же урок, в нем рассказывается как это сделать, и код там есть...
А вставить в страницу пхп при помощи echo... либо если данные статичны закрываеш тэг пхп ?> и пишеш как обычный ХТМЛ, ну и естественно js скрипт подключаем...
Совсем думать не хотим...
А вставить в страницу пхп при помощи echo... либо если данные статичны закрываеш тэг пхп ?> и пишеш как обычный ХТМЛ, ну и естественно js скрипт подключаем...
Совсем думать не хотим...
Спустя 2 дня, 6 часов, 9 минут, 6 секунд (17.07.2010 - 21:33) Guest написал(а):
Подскажите кто нибудь..я установил Денвер. Сборка с пхп майскулом и апачи.. даже установил дрим вивер и все равно текст набранный на пхп языке браузер читать отказывается, даже самый простой.
Спустя 2 минуты, 47 секунд (17.07.2010 - 21:35) Basili4 написал(а):
Guest
начнем с самой популярной ошибки вы стрницу как открываете http://localhost/ или как то иначе
начнем с самой популярной ошибки вы стрницу как открываете http://localhost/ или как то иначе
Спустя 20 часов, 6 минут, 34 секунды (18.07.2010 - 17:42) Guest написал(а):
Добрый день столкнулся с такой проблемой. Незнаю как это зделать может поможете.
Дан блок блоку дан фиксированный размер. в этом блоке идет текст. в блоке вмешается например 50символов текста. сам вопрос как зделать так чтобы текст который бы привешал 50символов. не начил расширять сам блок или переносить на другую строку текст.
Гдето видел что решили эту проблему с помощью троеточием. тоесть идет текст и доходя до границы блока начинает отображаться троеточием тем самым говоря что есть продолжения текста. как это можно воплотить в жизнь с помощью css. Или както по дргому?.
За рание спасибо.
Дан блок блоку дан фиксированный размер. в этом блоке идет текст. в блоке вмешается например 50символов текста. сам вопрос как зделать так чтобы текст который бы привешал 50символов. не начил расширять сам блок или переносить на другую строку текст.
Гдето видел что решили эту проблему с помощью троеточием. тоесть идет текст и доходя до границы блока начинает отображаться троеточием тем самым говоря что есть продолжения текста. как это можно воплотить в жизнь с помощью css. Или както по дргому?.
За рание спасибо.
Спустя 15 часов, 12 минут, 38 секунд (19.07.2010 - 08:55) amazing написал(а):
Пожалуйста.
//желаемое количество символов в строке
$char_number = 50;
//обрезаемый текст
$text = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.";
//обрезаем до числа указанного в переменной char_number
$result = substr($text, 0, $char_number);
//обрезаем до первого пробела с конца строки
$result = substr($result, 0,strripos($result, " "));
//добовляем в конце троеточие
$result .= " ...";
Спустя 3 часа, 2 минуты, 41 секунда (19.07.2010 - 11:57) Guest написал(а):
Ага спасибо
Спустя 1 день, 10 часов, 9 минут, 31 секунда (20.07.2010 - 22:07) mxwuser написал(а):
Скажите, в какой последовательености лучше проходить курсы с данного рессурса?
Для начала как я понял - http://irbis-team.com/15/15/3 , а что посоветуете после прохожденние данного курса? (=
Для начала как я понял - http://irbis-team.com/15/15/3 , а что посоветуете после прохожденние данного курса? (=
Спустя 2 часа, 37 минут, 4 секунды (21.07.2010 - 00:44) mxwuser написал(а):
http://i065.radikal.ru/1007/94/8e8f62cfd79a.jpg - подскажите, что за рыжые окошко выскакивает? (= Я так понял, что он пишет что не может кодировку принять? (=
Спустя 3 часа, 5 минут, 42 секунды (21.07.2010 - 03:50) twin написал(а):
Цитата |
Скажите, в какой последовательености лучше проходить курсы с данного рессурса? Для начала как я понял - http://irbis-team.com/15/15/3 , а что посоветуете после прохожденние данного курса? (= |
Спустя 8 часов, 13 минут, 50 секунд (21.07.2010 - 12:03) mxwuser написал(а):
Спасибо (=
Еще один вопрос: как сохранить файл с кодировкой без БОМ в Дримвивере? В гугле не нашел, поэтому пришлось скачать блокнот++ и через него пересохранять постоянно(
Еще один вопрос: как сохранить файл с кодировкой без БОМ в Дримвивере? В гугле не нашел, поэтому пришлось скачать блокнот++ и через него пересохранять постоянно(
Спустя 2 минуты, 19 секунд (21.07.2010 - 12:06) Lenarfate написал(а):
советую нормальный редактор типа phpDesigner.
Спустя 44 минуты, 18 секунд (21.07.2010 - 12:50) mxwuser написал(а):
`table` - как поставить такие кавычки?* (=
Спустя 45 минут, 26 секунд (21.07.2010 - 13:35) twin написал(а):
Где буква Ё
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 16 минут, 9 секунд (21.07.2010 - 13:52) mxwuser написал(а):
АААААААА, это ж надо так. Я почему-то всегда был уверен что там только тильда находится (=
А еше вопрос, эти кавычки обязательны при указании базы данных, или их можно опускать?
А еше вопрос, эти кавычки обязательны при указании базы данных, или их можно опускать?
Спустя 18 минут, 13 секунд (21.07.2010 - 14:10) Ice написал(а):
ну на первых парах не опускайте, а вообще можно опускать, если точно уверены, что имя таблицы или имя поля не совпадает с каким нибудь рарезервированным словом.
Спустя 56 минут, 58 секунд (21.07.2010 - 15:07) twin написал(а):
Лучше привыкнуть и писать с ними. Кроме зарезервированных слов могут потеряться пробелы в динамически формируемых запросах. Да и красиво это, когда все по правилам синтаксиса.
Спустя 8 часов, 15 минут, 52 секунды (21.07.2010 - 23:23) Альф написал(а):
$stroka_all='<h1>Привет';
preg_match("/(<h1>)/",$stroka_all,$result);
print_r($result);
На экране при просмотре исходного кода вижу:
Array
(
[0] => <h1>
[1] => <h1>
)
Почему два раза одно и то же в массиве?
preg_match("/(<h1>)/",$stroka_all,$result);
print_r($result);
На экране при просмотре исходного кода вижу:
Array
(
[0] => <h1>
[1] => <h1>
)
Почему два раза одно и то же в массиве?
Спустя 22 минуты, 42 секунды (21.07.2010 - 23:45) Self написал(а):
0 - весь шаблон
1 - первая подмаска (скобка)
1 - первая подмаска (скобка)
Спустя 11 часов, 49 минут, 16 секунд (22.07.2010 - 11:35) Guest написал(а):
<?php
$string='Колбаса, селедка сало';
preg_match("#л#",$string,$masiv);
print_r($masiv);
?>
Вывод:
Array ( [0] => л )
А почему еще две "л" нет в массиве?
$string='Колбаса, селедка сало';
preg_match("#л#",$string,$masiv);
print_r($masiv);
?>
Вывод:
Array ( [0] => л )
А почему еще две "л" нет в массиве?
Спустя 2 минуты, 41 секунда (22.07.2010 - 11:37) Альф написал(а):
Вроде понял. Прег_мач исчет 1 только
Добавил Прег_мач_алл
Нашло:
Array ( [0] => Array ( [0] => л [1] => л [2] => л ) )
Добавил Прег_мач_алл
Нашло:
Array ( [0] => Array ( [0] => л [1] => л [2] => л ) )
Спустя 5 минут, 31 секунда (22.07.2010 - 11:43) Альф написал(а):
Масив какой-то двойно получается. Масив в масиве.
Спустя 5 часов, 8 секунд (22.07.2010 - 16:43) Guest написал(а):
А как это же самое воплотить в жизнь с помощью javascript? за рание спасибо.
Спустя 12 минут, 18 секунд (22.07.2010 - 16:55) twin написал(а):
Эти вопросы нужно задавать в отдельной теме. А эту уже раздули нипадецки.
Закрою пожалуй.
Закрою пожалуй.
_____________
Все проходит... Быстрее бы.