[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Реабилитация после популярных видеокурсов
gomer505
С интересом снова изучаю Ваш курс PHP программирования. Опять начинаю разбираться с самого начала. Уже есть некоторые успехи - читаю код, причем не способом :"смотрю в книгу - вижу фигу". Стараюсь не копипастить, а набирать сам - ручками. И вот знаете какая проблема - точно такой же код, как Ваш, ну может с незначительной разницей не влияющей на функционалоьность PHP, отображаясь в браузере не работает корректно, но и ошибок не выдает. Например Ваш код:
<?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']) && !$text)
echo 'Поле не заполнено.';
elseif(!empty($_POST['ok']))
echo htmlspecialchars($text);
else
echo 'Напишите что-нибудь';
работает!!!

А вот мой - некорректный :

<?php 

/** Устанавливаем кодировку (у меня windows-1251) и уровень ошибок
**/

header("Content-Type: text/html; charset=windows-1251");
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)?>" />
<input
name="ok " type="submit"/>
</form>
<?php

//* Проверим нажата ли кнопка
if(!empty($_POST['ok']) && !$text)
echo 'Поле не заполнено.';
elseif(!empty($_POST['ok']))
echo htmlspecialchars($text);
else
echo 'Напишите что-нибудь';


Проверил до самой последней буквы (у меня только в другой кодировке написан!) не могу найти в чем проблема, но думаю, что в проверке - нажата ли кнопка перед выводом в поток. Может Вы увидите в чем моя ошибка? Заранее спасибо и с праздниками Вас.



Спустя 24 минуты, 56 секунд (9.05.2011 - 14:29) Игорь_Vasinsky написал(а):
в чём именно не корректность себя проявляет?

Спустя 12 минут, 49 секунд (9.05.2011 - 14:42) gomer505 написал(а):
Цитата (Игорь_Vasinsky @ 9.05.2011 - 11:29)
в чём именно не корректность себя проявляет?

При наличии всех проверок в коде при нажатии на кнопку отправки при пустом текстовом поле под ним все равно остается надпись "Напишите что-нибудь". И текст не передает при заполнении поля - он (текст) остается в рамках текстового поля, а надпись под ним "напишите что-нибудь"все равно остается.

Вобщем скрипт проверки не работает, а без проверки - все как по маслу работает.

Спустя 9 минут, 28 секунд (9.05.2011 - 14:51) Игорь_Vasinsky написал(а):
//* Проверим нажата ли кнопка     
if(isset($_POST['ok']) && empty($text))
echo 'Поле не заполнено.';
elseif(isset($_POST['ok']) && !empty($text))
echo htmlspecialchars($text);
else
echo 'Напишите что-нибудь';



Спустя 8 минут, 45 секунд (9.05.2011 - 15:00) inpost написал(а):
gomer505
А что это за фраза: "У меня win-1251"? Тебя не смущает, что курс рекомендует настоятельно использовать UTF-8 ?

Спустя 3 минуты, 48 секунд (9.05.2011 - 15:04) gomer505 написал(а):
Цитата (inpost @ 9.05.2011 - 12:00)
gomer505
А что это за фраза: "У меня win-1251"? Тебя не смущает, что курс рекомендует настоятельно использовать UTF-8 ?

Я с этим не спорю. Просто у меня Dreawever настроен сейчас на эту кодировку. И при отображении скрипта в данном случае в Opera это особой роли, насколько я понимаю, не играет. Форма, кнопка и надписи отображаются без крякозябров.

Спустя 2 минуты, 14 секунд (9.05.2011 - 15:06) Игорь_Vasinsky написал(а):
inpost
Цитата
А что это за фраза: "У меня win-1251"? Тебя не смущает

да причём здесь кодировка?

Спустя 27 секунд (9.05.2011 - 15:06) inpost написал(а):
echo '<pre>';
print_r($_POST);
print_r($POST);
exit();

Спустя 7 минут, 32 секунды (9.05.2011 - 15:14) gomer505 написал(а):
Цитата (Игорь_Vasinsky @ 9.05.2011 - 12:06)
inpost
Цитата
А что это за фраза: "У меня win-1251"? Тебя не смущает

да причём здесь кодировка?

Просто в комментах уточнил, что моя кодировка данного скрипта windows-1251.

Спустя 6 минут, 20 секунд (9.05.2011 - 15:20) gomer505 написал(а):
Цитата (inpost @ 9.05.2011 - 12:06)
echo '<pre>';
print_r($_POST);
print_r($POST);
exit();

Глобальные переменные передаются (если написать в текстовом поле "Привет"), но не выводятся в поток
<pre>Array
(
[text] => Привет
[ok_] => Отправить
)
<!--error--><br />
<b>
Notice</b>: Undefined variable: POST in <b>Z:\home\gost.ua\www\index.php</b> on line <b>27</b><br />
<script
language=JavaScript src='/denwer/errors/phperror_js.php'></script>

Спустя 1 минута, 47 секунд (9.05.2011 - 15:22) inpost написал(а):
gomer505
name="ok " - видишь пробел? Его убрать надо, так как у тебя скрипт передаёт: $_POST['ok_'], а не $_POST['ok']. Посмотри внимательно на ответ, в дальнейшем так тестировать будешь, какие данные передались в тот или иной момент.

Спустя 2 минуты, 31 секунда (9.05.2011 - 15:24) Игорь_Vasinsky написал(а):
Действительно - в твоём коде:
Цитата
<input name="ok " type="submit"/>

Спустя 7 минут, 41 секунда (9.05.2011 - 15:32) gomer505 написал(а):
Цитата (inpost @ 9.05.2011 - 12:22)
gomer505
name="ok " - видишь пробел? Его убрать надо, так как у тебя скрипт передаёт: $_POST['ok_'], а не $_POST['ok']. Посмотри внимательно на ответ, в дальнейшем так тестировать будешь, какие данные передались в тот или иной момент.

Большое спасибо! Всем Игорь_Vasinsky и inpost - теперь работает. Буду внимательнее.

Спустя 10 минут (9.05.2011 - 15:42) inpost написал(а):
gomer505
И ставь ЮТФ кодировку!

Спустя 50 минут, 26 секунд (9.05.2011 - 16:33) gomer505 написал(а):
Цитата (inpost @ 9.05.2011 - 12:42)
gomer505
И ставь ЮТФ кодировку!

Хорошо.

Спустя 2 часа, 29 минут, 58 секунд (9.05.2011 - 19:03) gomer505 написал(а):
Цитата (gomer505 @ 9.05.2011 - 13:33)
Цитата (inpost @ 9.05.2011 - 12:42)
gomer505
И ставь ЮТФ кодировку!

Хорошо.

inpost
Следуя Вашим рекоммендациям перешел на UTF кодировку. Не могли бы Вы объяснить почему я получаю следующее отображение кирилических символов. Прилагаю скрин.

Мне кажется это немного неудобно получать нотайсы в таком виде.

Спустя 2 минуты, 15 секунд (9.05.2011 - 19:05) Игорь_Vasinsky написал(а):
чтоб не было проблем с отображением запомните 3 правила:

1. Сам файл в кодировке UTF8 без BOM
2. Кодировка в Header
3. Кодировка в .htaccess

и всё будет пучком wink.gif

Спустя 3 минуты, 55 секунд (9.05.2011 - 19:09) inpost написал(а):
gomer505
Мне эта тема помогла раз и навсегда: http://phpforum.ru/index.php?showtopic=27289

Спустя 12 минут, 58 секунд (9.05.2011 - 19:22) gomer505 написал(а):
Цитата (Игорь_Vasinsky @ 9.05.2011 - 16:05)
чтоб не было проблем с отображением запомните 3 правила:

1. Сам файл в кодировке UTF8 без BOM
2. Кодировка в Header
3. Кодировка в .htaccess

и всё будет пучком wink.gif

Соблюдены все три пункта! Но подсказка внизу скрина все равно клетчатая... И вот скрин настройки документа UTF-8 без БОМ. Галочки нет. Правильно?

Спустя 4 минуты, 19 секунд (9.05.2011 - 19:26) Игорь_Vasinsky написал(а):
да, убрать нужно, а что ? проблема осталась?

Спустя 2 минуты, 31 секунда (9.05.2011 - 19:29) inpost написал(а):
Выложи этот файл тут, сейчас посмотрю.

Спустя 7 минут, 23 секунды (9.05.2011 - 19:36) gomer505 написал(а):
Цитата (Игорь_Vasinsky @ 9.05.2011 - 16:26)
да, убрать нужно, а что ? проблема осталась?

Так точно.

Спустя 2 минуты, 3 секунды (9.05.2011 - 19:38) gomer505 написал(а):
Цитата (inpost @ 9.05.2011 - 16:29)
Выложи этот файл тут, сейчас посмотрю.


Выложить имеется ввиду код? Я правильно понял?

<?php

//Заголовок
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)?>" />
<input
name="ok" type="submit"/>
</form>
<?php

//Проверка отправки переменных и вывод в поток


if (!empty($_POST['ok'])&& !$text)
echo 'Поле не заполнено.';
elseif (!empty($_POST['ok']))
echo htmlspecialchars($text);
else
echo 'Введите текст.';
echo '<pre>';
print_r($_POST);
print_r($POST);
exit();


И файл .htaccess с содержимым: " AddDefaultCharset utf-8"

Спустя 3 минуты, 41 секунда (9.05.2011 - 19:42) neadekvat написал(а):
gomer505, у тебя Денвер? Очень похоже. Вот эта фигня красная - именно от Денвера, а не от php. И написана она скорее всего в windows-1251, поэтому изменить остается только сам скрипт. Но попробуй его там найди в файлах Денвера..

Спустя 2 минуты, 26 секунд (9.05.2011 - 19:44) gomer505 написал(а):
Цитата (neadekvat @ 9.05.2011 - 16:42)
gomer505, у тебя Денвер? Очень похоже. Вот эта фигня красная - именно от Денвера, а не от php. И написана она скорее всего в windows-1251, поэтому изменить остается только сам скрипт. Но попробуй его там найди в файлах Денвера..

Да, Денвер. А где его искать в файлах Денвера? И какой скрипт?...

Спустя 1 минута, 29 секунд (9.05.2011 - 19:46) neadekvat написал(а):
Цитата (gomer505 @ 9.05.2011 - 20:44)
А где его искать в файлах Денвера?

Я как бы намекнул, что это реально трабл.
Переключись в браузере на кодировку windows-1251, нажми на эту красную фигню (там, кажется, что-то вроде "Денвер подсказывает, почему могла возникнуть эта ошибка") и там можно выбрать "больше не показывать этой ошибки" - все, теперь ты будешь видеть только предупрждения самого php.

Спустя 5 минут, 28 секунд (9.05.2011 - 19:51) gomer505 написал(а):
Ну да это Денвер... Так и сделал. Значит это в настройках Денвера надо ковыряться? Так получается?

Спустя 59 секунд (9.05.2011 - 19:52) neadekvat написал(а):
Если ты сделал, как я сказал - то уже нигде ничего ковырять не надо.

Спустя 22 минуты, 20 секунд (9.05.2011 - 20:14) gomer505 написал(а):
Хорошо не буду. Спасибо.

Спустя 1 день, 29 минут, 52 секунды (10.05.2011 - 20:44) Гость_Dron написал(а):
Я заметил что многие настаивают на УТФ8, и категорично отвергают вин1251...
с чем связан такой ажиотаж?

как по мне так с 1251 работать намного проще... в нем отсутствуют всякие некорректности... я с ним давно посорился потому и не скажу что там не так... но с ван ни разу проблем не возникало...
та и сама по себе ета кодировка попрочней будет!!!
ето к слову)))

Спустя 16 минут, 19 секунд (10.05.2011 - 21:01) gomer505 написал(а):
Вопрос по "Гостевой книге" Шаг 4. Эта фраза меня сбивает с толку уже в который раз (См.скрин). А дальше идет перемещение заголовка выше вывода в коде. Это ошибка? Или я что-то не понимаю...Может кто-то разъяснить? Заранее благодарен.

Спустя 1 час, 38 минут, 43 секунды (10.05.2011 - 22:39) inpost написал(а):
gomer505
Сначала браузер отправляет заголовки, после отправляет данные о странице, такой порядок отправки данных. Кодировка страницы - является заголовком, то есть СВОЙСТВОМ или НАСТРОЙКОЙ страницы, а все свойства и настройки отправляются до того, как отправится содержание. Нельзя написать "ВАСЯ", а потом сообщить, что это с кодировкой ЮТФ-8, надо сначала сообщить, что мы находимся на странице с кодировкой ЮТФ-8, а потом отобразить текст ВАСЯ. Так как на разных кодировках разные буквы имеют свой байтный код, то, немного фантазии, разглянем букву "Я", на кодировке ютф-8 - это %167 , а на вин1251 - %221 (пример, а не точные данные), поэтому необходимо сообщить браузеру о кодировке до того, как он получит какие-нибудь знаки.
Отправка заголовкой (свойств, настроек):
header();


Гость_Dron
Уже не раз отвечали, международная кодировка, оптимальная, 100% рабочая во всех ситуациях, не существует с ней проблем никаких, в отличии от вин1251, пхп6 создаётся под ЮТФ-8, а значит прогрес за этой кодировкой.
вин1251 - специализированная под русский язык, но сделана достаточно криво и сложно интегрируемо под некоторые вещи.


Спустя 1 час, 33 минуты, 2 секунды (11.05.2011 - 00:12) Zerstoren написал(а):
Цитата (Гость_Dron @ 10.05.2011 - 17:44)
Я заметил что многие настаивают на УТФ8, и категорично отвергают вин1251...
с чем связан такой ажиотаж?

как по мне так с 1251 работать намного проще... в нем отсутствуют всякие некорректности... я с ним давно посорился потому и не скажу что там не так... но с ван ни разу проблем не возникало...
та и сама по себе ета кодировка попрочней будет!!!
ето к слову)))

Вы видим с ajax не работали, где для норм передачи нужен ютф. Ага)
Русские символы можно будет передать только в ютф 8.

Я лично отвергаю вин1251 по причине его багнутости с другими технологиями.
ЮТФ международка и работает она отлично, траблов не когда не возникало.

Спустя 19 часов, 7 минут, 58 секунд (11.05.2011 - 19:20) gomer505 написал(а):
Цитата (inpost @ 10.05.2011 - 19:39)
gomer505
Сначала браузер отправляет заголовки, после отправляет данные о странице, такой порядок отправки данных. Кодировка страницы - является заголовком, то есть СВОЙСТВОМ или НАСТРОЙКОЙ страницы, а все свойства и настройки отправляются до того, как отправится содержание. Нельзя написать "ВАСЯ", а потом сообщить, что это с кодировкой ЮТФ-8, надо сначала сообщить, что мы находимся на странице с кодировкой ЮТФ-8, а потом отобразить текст ВАСЯ. Так как на разных кодировках разные буквы имеют свой байтный код, то, немного фантазии, разглянем букву "Я", на кодировке ютф-8 - это %167 , а на вин1251 - %221 (пример, а не точные данные), поэтому необходимо сообщить браузеру о кодировке до того, как он получит какие-нибудь знаки.
Отправка заголовкой (свойств, настроек):
header();


Гость_Dron
Уже не раз отвечали, международная кодировка, оптимальная, 100% рабочая во всех ситуациях, не существует с ней проблем никаких, в отличии от вин1251, пхп6 создаётся под ЮТФ-8, а значит прогрес за этой кодировкой.
вин1251 - специализированная под русский язык, но сделана достаточно криво и сложно интегрируемо под некоторые вещи.



Значит то что на скрине ошибка Twina - я так и думал, поэтому и написал, что сбивает. Сначала отправляются заголовки, а потом вывод. Спасибо.

Спустя 1 час, 23 минуты, 57 секунд (11.05.2011 - 20:44) gomer505 написал(а):
Вот опять (проверил и пробелы тоже) объясните мне тупорылому, пожалуйста, почему код Twina в Щаге 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);

/////////////////////////////////////////////////////////////////
// VARIABLES
// ПЕРЕМЕННЫЕ

/////////////////////////////////////////////////////////////////

$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;

/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ

/////////////////////////////////////////////////////////////////

if(isset($_POST['ok']))
{
if(!$text1)
echo 'Текстовое поле не заполнено.';
elseif(!$text2)
echo 'Текстовая область не заполнена.';
else
{
// пишем файл
file_put_contents('text.txt', $text2, FILE_APPEND);
// и перенаправляем браузер на новую страницу
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
// Останавливаем скрипт (все равно браузер уже ушел)
exit();
}
}

else
echo 'Напишите что-нибудь';

/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ

/////////////////////////////////////////////////////////////////
?>
<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')));




работает? А то же самое , но написанное моей рукой выдает ошибку?

<?php

//Заголовок
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;?>

<?php

//Проверка отправки переменных и вывод в поток
if(isset($_POST['ok']))
{
if (!$text1)
echo 'Текстовое поле не заполнено.';
elseif (!$text2)
echo 'Текстовое область не заполнена.';
else //Записываем информацию в файл, заканчивая символом переноса строки \n
{
file_put_contents('text.txt', $text2, FILE_APPEND);
// Перенаправление на дрюстраницу(в нашем случае на ту же!!!)
header('location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
// Останавливаем скрипт
exit();
}
}

else
echo 'Напишите что-нибудь.';
?>
<form
action="?" method="post">
Логин:</br>
<input
name="text1" type="text1" value="<?php echo htmlspecialchars($text1)?>" /> </br>
Сообщение:</br>
<textarea
name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);?></textarea>
<input
name="ok" type="submit"/>
</form>

<?php

if(file_exists('text.txt'))
echo nl2br(htmlspecialchars(file_get_contents('text.txt')));



Warning: Cannot modify header information - headers already sent by (output started at Z:\home\gost.ua\www\index.php:10) in Z:\home\gost.ua\www\index.php on line 22

Спустя 7 минут, 47 секунд (11.05.2011 - 20:52) inpost написал(а):
У тебя закрытие и открытие:
?><?php
Между ними может быть пробел. Или файл сохранен как UTF-8 with BOM, а надо без BOM.

Спустя 4 минуты, 14 секунд (11.05.2011 - 20:56) gomer505 написал(а):
Спасибо inpost Вы как всегда правы - закрытие и открытие PHP были лишние и между ними был пробел.

Спустя 23 часа, 33 минуты, 8 секунд (12.05.2011 - 20:29) gomer505 написал(а):
Простите, наверное я уже всех достал...И тем не менее, может кто поможет.

Снова пытаюсь вводить код руками, чтобы запоминалось и отрабатывалось. Но, даже боюсь сказать - проверил все то же самое, что и в Шаге 4(Гостевой книги)Сброс POST параметров - последний копипост. У Twina работает корректно - у меня, как вы догадались - нет.

Вот мой код:

<?php

//Заголовок
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;
$info = array();// $info объявлена массивом
//Проверка отправки переменных и вывод в поток

if(isset($_POST['ok']))
{
if (!$text1)
$info[]='Текстовое поле не заполнено.';

if (!$text2)
$info[]='Текстовое область не заполнена.';

if (count($info == 0))
{
file_put_contents('text.txt', $text2, FILE_APPEND);
// Перенаправление на дрюстраницу(в нашем случае на ту же!!!)
header('location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
// Останавливаем скрипт
exit();
}
}

else
$info[]= 'Напишите что-нибудь.';
?>
<form
action="?" method="post">
Логин:</br>
<input
name="text1" type="text1" value="<?php echo htmlspecialchars($text1)?>" /> </br>
Сообщение:</br>
<textarea
name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);?></textarea>
<input
name="ok" type="submit"/>
</form>

<?php

echo implode('<br>',$info) . '<br>';

if(file_exists('text.txt'))
echo nl2br(htmlspecialchars(file_get_contents('text.txt')));


При пустом текстовом поле или области у меня не выдает никаких "Текстовое поле не заполнено" или "Текстовая область не заполнена". Уж не знаю, что на этот раз.

Надо было назвать тему : "Реабилитация инвалидов..." это я о себе.

Спустя 1 час, 37 минут, 34 секунды (12.05.2011 - 22:07) gomer505 написал(а):
Н-да... А вот в такой форме работает как надо. Даже не верится, что сам до этого дошел!!!

<?php
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;
$info = array();// $info объявлена массивом
//Проверка отправки переменных и вывод в поток

if(isset($_POST['ok']))
{
if (!$text1)

$info[]='Текстовое поле не заполнено.';

elseif (!$text2)

$info[]='Текстовое область не заполнена.';

else
if
(count($info == 0))
{
file_put_contents('text.txt', $text2, FILE_APPEND);
// Перенаправление на дрюстраницу(в нашем случае на ту же!!!)
header('location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
// Останавливаем скрипт
exit();
}
}

else
$info[]='Напишите что-нибудь.';?>
<form
action="?" method="post">
Логин:</br>
<input
name="text1" type="text1" value="<?php echo htmlspecialchars($text1)?>"/> </br>
Сообщение:</br>
<textarea
name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2)?></textarea>
<input
name="ok" type="submit"/>
</form>

<?php

echo implode('<br>',$info) .'<br>';

if(file_exists('text.txt'))
echo nl2br(htmlspecialchars(file_get_contents('text.txt')));


Спустя 44 минуты, 30 секунд (12.05.2011 - 22:51) inpost написал(а):
gomer505
Делюсь интересным опытом, если человек задаёт вопрос, а ему в течении нескольких часов не отвечать, он сам найдет ответ в 90% случаев smile.gif

Спустя 1 день, 11 часов, 28 минут, 39 секунд (14.05.2011 - 10:20) gomer505 написал(а):
Цитата (inpost @ 12.05.2011 - 19:51)
gomer505
Делюсь интересным опытом, если человек задаёт вопрос, а ему в течении нескольких часов не отвечать, он сам найдет ответ в 90% случаев smile.gif

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

Спустя 2 дня, 2 часа, 25 минут, 2 секунды (16.05.2011 - 12:45) gomer505 написал(а):
Какая -то полная фигня. Полностью скопировал код из урока Гостевая книга Шаг 6 и выдает ошибку... Может у меня с Denver'ом проблемы? Можете кто-нибудь у себя проверить?

<?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);


/////////////////////////////////////////////////////////////
// FUNCTIONS
// ФУНКЦИИ

/////////////////////////////////////////////////////////////

/**
* bb-tags and smilies replacement function
* Функция замены bb-тегов и смайликов
*
@param string
*
@return string
*/

function bb_tags($text)
{
// Создаем массив bb-тегов
$bb = array(
'',
'
',
'',
'
',
'',
'
',
'',
'
',
'[:)]',
'[:(]',
'[;)]',
'[:D]'
);
// Создаем массив тегов HTML
$tag = array(
'<b>',
'</b>',
'<i>',
'</i>',
'<s>',
'</s>',
'<u>',
'</u>',
'<img src="smiles/1.gif" />',
'<img src="smiles/2.gif" />',
'<img src="smiles/3.gif" />',
'<img src="smiles/4.gif" />'
);
// Заменяем элемент первого на элемент второго массива соответственно
return str_ireplace($bb, $tag, $text);
}


/////////////////////////////////////////////////////////////////
// VARIABLES
// ПЕРЕМЕННЫЕ

/////////////////////////////////////////////////////////////////

$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;
$info = array();


/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ

/////////////////////////////////////////////////////////////////

if(!empty($_POST['ok']))
{
if(!$text1)
$info[] = 'Текстовое поле не заполнено.';

if(!$text2)
$info[] = 'Текстовая область не заполнена.';

if(count($info) == 0)
{
if(file_exists('text.txt'))
{
$posts = unserialize(file_get_contents('text.txt'));
$keys = array_keys($posts);
$id = max($keys) + 1;
}
else
$id = 1;

$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;

file_put_contents('text.txt', serialize($posts));

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
}
}

else
$info[] = 'Напишите что-нибудь';

/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ

/////////////////////////////////////////////////////////////////
?>
<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


echo implode('<br>', $info) .'<br>';

if(file_exists('text.txt'))
{
$posts = unserialize(file_get_contents('text.txt'));

foreach($posts as $id => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
// Обрабатываем функцией замены тегов текст сообщения
$mess = nl2br(bb_tags(htmlspecialchars($post['mess'])));
?>
<div
style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; padding:5px">
<?php
echo $date; ?> / <strong><?php echo $name; ?></strong>
<hr
width="30%" align="left" />
<?php
echo $mess; ?>
</div>
<?php

}
}


[quote]

Еще и массив с BB тегами искажает в этом сообщении!!!

Спустя 9 минут (16.05.2011 - 12:54) twin написал(а):
Скорее всего нет файла с данными или данных в файле. Нужно хотя бы одну строку иметь там.

Спустя 15 минут, 41 секунда (16.05.2011 - 13:10) gomer505 написал(а):
Цитата (twin @ 16.05.2011 - 09:54)
Скорее всего нет файла с данными или данных в файле. Нужно хотя бы одну строку иметь там.

Здравствуйте Twin, рад снова с Вами общаться. Вот что выдало, когда попытался записать в форму хотя бы одну строку... И форма с записями появиласть только после обновления...Причем появляется сразу две одинаковые записи.

Спустя 23 часа, 40 минут, 2 секунды (17.05.2011 - 12:50) gomer505 написал(а):
Спасибо! Уже разобрался. Надо быть внимательнее. Постараюсь не задавать больше глупых вопросов...В выделенном месте на скрине оставался в качестве аргумента 'text.txt' со старой страницы... Может кому-то поможет.

Спустя 4 месяца, 29 дней, 20 часов, 42 минуты, 31 секунда (17.10.2011 - 09:32) gomer505 написал(а):
Привет всем! Снова и снова грызу PHP... Только дохожу до Ядра - капец начинается, и это в легкой версии! Наверное я тупой. Хотя доктрина понятна. Но не могу добиться правильного отображения в браузере - уже не меньше десяти раз прошел до урока "Паттерн MVC. Вид.",
чтобы получить правильное отображение. Ничего не выходит - каждый раз нотайс. А беру код Twina все нормально. Я не жалуюсь просто хочется разобраться в чем моя ошибка - все выходные над этим боролся. Признать, что это не мое?

Спустя 1 час, 40 минут, 32 секунды (17.10.2011 - 11:13) бошка написал(а):
1. в конфиге константы путей не забудьте поменять на свои
2. Файл /skins/tpl/second/rows.tpl имеет расширение php
3. кодировка файла /skins/tpl/second/show.tpl должна быть utf-8
4. в index не подключен view.php include './libs/view.php';
5. в файлах /modules/m[code]ain/view.php в функцию dbg($GET); передаете весь массив, анологично с /modules/second/view.php
6. заменил ваш файл debug.php на свой...У вас может быть старый. Не стал разбираться
7. Бросить то оно конечно можно, но никто не обещал что будет легко, если приложите терпение и труд, то все получится.

Спустя 22 часа, 24 минуты, 5 секунд (18.10.2011 - 09:37) gomer505 написал(а):
Спасибо большое, бошка. Исправил - все работает.
Единсевенное не могу понять - кодировка у меня по умолчанию стоит в CS4 utf-8. У тебя в архиве такой же файл, как был у меня. Почему не работало не пойму? Поставил кодировку с доктайпом - теперь работает.

Спустя 1 час, 11 минут, 28 секунд (18.10.2011 - 10:48) бошка написал(а):
точно не помню, но вроде /skins/tpl/second/show.tpl был в кодировке ANSI

Спустя 4 дня, 12 часов, 13 минут, 33 секунды (22.10.2011 - 23:02) gomer505 написал(а):
Цитата (бошка @ 18.10.2011 - 07:48)
точно не помню, но вроде /skins/tpl/second/show.tpl был в кодировке ANSI

Как это? У меня? Я такой и не знаю... Откуда? blink.gif

Спустя 2 минуты, 43 секунды (22.10.2011 - 23:05) Игорь_Vasinsky написал(а):
кодировку отправляйте в начале index в header

Спустя 1 минута, 8 секунд (22.10.2011 - 23:06) gomer505 написал(а):
Прохожу "Гостевая книга с использованием MySQL". Шаг 1. Там по ходу не определена переменная $rows. Я ее определил напрямую в файле variables.php тернарным оператором
$rows = !empty($_GET['rows']) ? $_GET['rows'] : NULL; 
Это наверное неправильно...

Спустя 7 минут, 45 секунд (22.10.2011 - 23:14) бошка написал(а):
она определяется в Шаге 2 в контроллере
if(mysql_num_rows($res) > 0)
{
$cont = getTpl('guest/rows');

while($row = htmlChars(mysql_fetch_assoc($res)))
{
$row['date'] = formatDate($row['date'], false);
$row['text'] = nl2br($row['text']);
$rows .= parseTpl($cont, $row);
}
}

Спустя 11 часов, 14 минут, 13 секунд (23.10.2011 - 10:28) gomer505 написал(а):
Цитата (бошка @ 22.10.2011 - 20:14)
она определяется в Шаге 2 в контроллере
    if(mysql_num_rows($res) > 0) 
    { 
        $cont = getTpl('guest/rows'); 
         
        while($row = htmlChars(mysql_fetch_assoc($res))) 
        { 
            $row['date'] = formatDate($row['date'], false);
            $row['text'] = nl2br($row['text']); 
            $rows .= parseTpl($cont, $row); 
        } 
    }

Тогда не понимаю, как у Twina это все работает из файла исходника в Шаге1? И можете мне указать строчку инициализации $rows в приведенном Вами коде, конкретно пальцем...пожалуйста.

Все уже разобрался! В файле read_controller.php

<?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'));
}
///////////////////////////////////////////////////////////


$rows = '';
Последней строчкой определна переменная $rows . Только я думал, что переменную нужно инициализировать через тернарный оператор для того, чтобы она работала. Оказывается нет. Что-то я упустил...


_____________
Все проходит... Быстрее бы.
Быстрый ответ:

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