← Июль 2001 → | ||||||
2
|
3
|
4
|
5
|
6
|
7
|
|
---|---|---|---|---|---|---|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
17
|
18
|
19
|
20
|
21
|
||
23
|
24
|
25
|
26
|
27
|
28
|
|
30
|
31
|
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://programmazhizni.ru
Открыта:
04-03-2001
Адрес
автора: inet.webbuild.php3programm-owner@subscribe.ru
Статистика
0 за неделю
Программируем на PHP - вопросы и ответы.
Рассылка
сайта
РНР для
всех!
Выпуск номер 16
ЗдравствуйтеСегодняшний выпуск рассылки по просьбам подписчиков посвящен такой полезной вещи, как голосование. Статья писалась и готовилась с расчетом на публикацию в газете, так что учитывайте этот момент при изучении и чтении.
заказать книги по РНР (только Беларусь)
Голосование на РНР!
Речь пойдет о практической работе, которую мы с Вами вместе проведем и усвоим. Голосование - это средство узнать мнение Ваших посетителей по разным вопросам. Сами вопросы могут быть как полезными так и бесполезными - эту тему мы рассматривать не будем. А для нашего примера возьмем простой вопрос - Ваше мнение о сайте? Варианты ответов предоставим следующие:
- Круто!
- Так себе
- Сойдет
- Это что-то страшное!
Продолжить Вы можете уже сами... Для работы нам понадобится некоторое знание основ HTML, РНР и три файла. Три - потому что в первом будем спрашивать посетителя о его мнении, во втором хранить результаты, и в третьем - выводить их и обрабатывать. Собственно говоря, нет надобности разносить все эти функции в разные файлы, но для простоты и удобства мы сделаем так. Первый файл будет иметь имя index.phtml, второй - golos.txt и третий - golos.phtml. Создать их для Вас не составит особого труда, и это то, с чего мы и начнем. Когда Вы все сделаете и зальете готовые файлы к себе на сервер, не забудьте установить атрибуты файла golos.txt таким образом, что бы он был доступен для записи. Обычно, это атрибуты 666 или 777. Сделать это можно как правило с помощью Вашего FTP менеджера. Если нет, воспользуйтесь IE 5.0 и выше в режиме FTP, тогда нужно просто посмотреть свойства уже залитого на сервер файла и установить все галочки.
Index.phtml
Вы можете обозвать этот и другие наши файлы так, как Вам угодно, только не меняйте расширений (кроме, конечно, txt). Это необходимо для работы РНР, на котором и будет реализован алгоритм голосования. Дизайн и оформление предлагаю Вам сделать самостоятельно, я не буду в статье обращать на это внимание.
Прежде всего сделаем нужную форму. Можно было бы воспользоваться любым редактором HTML, они неплохо делают сами формы, но я привожу уже готовый и работоспособный код.
<FORM METHOD="POST" action="golos.phtml">
<TABLE BORDER=1><TR><TD><TABLE BORDER=0>
<TR><TD>Ваше мнение о сайте?</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=1>Круто!</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=2>Так себе </TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=3>Сойдет</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=4>Это что-то страшное!</TD></TR>
<TR><TD><INPUT TYPE=Submit NAME=vote VALUE=" отправить "></TD></TR>
<TR><TD><INPUT TYPE=Submit NAME=result VALUE=" смотреть результат "></TD></TR>
</TABLE></TD></TR></TABLE></FORM>Пока это все. Тут нет и строчки кода РНР, но на будущее полезно иметь возможность вставить сюда что-то, так что расширение мы выбрали правильно, тем более что оно больше ни на что не влияет. В коде все просто, и сделать подобное или похожее легко в любом редакторе. Мы просто предлагаем указать с помощью переключателя нужный вариант ответа и нажать на кнопку Отправить . Этот код можно легко интегрировать в любые странички и править так, как только вздумается. Только нужно обращать внимание на соответствие имен и значений переменной в форме. И что самое главное - данные формы должны передаваться в скрипт РНР с обработкой результатов, поэтому имя файла в action должно соответствовать имени файла с скриптом. Напомню, все имена форм, присвоенные в этом файле, станут соответствующими переменными в скрипте РНР, куда отправляются данные формы. Так как тут ничего сложного больше не предвидится, пойдем дальше.
Golos.txt
Здесь надо определиться, в каком формате мы будем хранить вводимую информацию. Проще всего организовать четыре строки (по количеству вариантов ответов) и считать их номера соответствующими номеру выбранного варианта ответа. Все это безобразие можно считывать с помощью команды РНР ввода файла в массив, при этом не забывайте, что массив всегда начинается с индекса ноль. Соответственно - первая строка нашего файла не будет использована, и ввести туда можно все что угодно. Например - информацию о файле: Результаты голосования. Если это сделано, введите еще четыре строки с нулями. Не забывайте нажимать ввод для перевода строки. Это - готовые результаты (пока только начальные) нашего голосования. Так как пока никто не проголосовал :-) они нулевые.
Golos.phtml
Вот и дошли мы до самого главного и интересного. С самого начала я приведу весь код скрипта, а дальше дам пояснения в его применении.
<?php
$file = "golos.txt";
$a = file($file);
$i = 1; $fi = Count($a);
$n = 0;
while ($i <= $fi):
$a[$i] = trim(str_replace ("\n","", $a[$i]));
$n = $n+$a[$i];
$i++;
endwhile;
if ($answer != "") {
echo "<br>Спасибо, Ваше мнение учтено:";
$a[$answer]++; $n++;
$rez = "Результаты голосования!\n".$a[1].
"\n".$a[2]."\n".$a[3]."\n".$a[4];
$fp = @fopen($file,"w");
if ($fp) { $counter=fputs($fp,$rez); fclose($fp); }
else { echo "Произошла ошибка записи результатов!"; }
} else { echo "<br>Результаты голосования"; }
echo "<br>Круто! - <b>".$a[1]."</b>";
echo "<br>Так себе - <b>".$a[2]."</b>";
echo "<br>Сойдет - <b>".$a[3]."</b>";
echo "<br>Это что-то страшное! - <b>".$a[4]."</b>";
echo "<br><br>Всего проголосовало: ".$n;
?>Опять же хочу предупредить, что код не самый лучший и простой, но зато логичный и работоспособный. Вариантов реализации масса, но мне не хотелось брать что то уже готовое, и поэтому я, не особо заботясь об удобочитаемости и дизайне (это Вы и сами можете сделать :-), написал свой собственный код, что заняло вместе с настройкой и отладкой буквально полчаса. Скрипт ориентирован на конкретно поставленную задачу, но Вам ничего не стоит переделать его под свое количество ответов на вопрос. Напомню - наша главная задача на практическом примере научиться создавать свои собственные системы опроса и голосования. Теперь о том, как все работает.
В первых строчках мы определяемся с именем файла результатов и считываем результаты голосования в массив данных с именем $a. Дальше идет цикл, в котором мы обрабатываем полученный массив таким образом, что бы он не содержал символов перевода каретки (ввод строки) и пробелов: $a[$i] = trim(str_replace ("\n","", $a[$i])); Параллельно ведем подсчет количества проголосовавших, что не сложно так как это просто сумма значений нашего массива. Удалять символы ввода и пробела необходимо для преобразования считанных данных из символьной строки в целое число. Это можно сделать разными методами, но в этом случае просто удаляются символы "\n" (что в РНР соответствует переводу строки) и обрезаются пробелы с начала и с конца строки функцией trim ( ). Результаты заносятся обратно в массив, но уже в виде целочисленного значения, которое можно сложить, увеличить, делить и т.д. Нас будет интересовать увеличение на единицу определенного элемента массива, номер которого (его индекс) хранится в переменной $answer, которая в свою очередь, пришла к нам по наследству из формы.
После обработки полученного массива скрипт должен принять решение относительно выбранного посетителем режима - или просто показать результаты, или добавить голос в соответствующую позицию. Достигается это проверкой переменной $answer, в которой сохраняется значение выбранного посетителем сайта варианта голосования. Если эта переменная пуста, значит была нажата кнопка показа результатов, и скрипт пропустит блок подсчета голоса. Если переменная $answer не пуста, в ней содержится номер выбранного варианта голосования, а значит, мы можем просто увеличить на единицу значение нужной ячейки массива: $a[$answer]++; Кроме того нужно увеличить значение количества проголосовавших для того, что бы учесть голос только что проголосовавшего человека.
Когда значение увеличено, пришла пора записать результаты в файл. Для этого сначала открывается соединение с файлом: $fp = @fopen($file,"w"); Символ w указывает на необходимость очистки содержимого файла перед записью. Если соединение не установлено, выводится сообщение об ошибке, если установлено - предварительно отформатированное значение переменной $rez записывается в файл. Переменная $rez формируется следующим образом: значение всех ячеек массива (кроме самой первой - нулевой, которая не используется) склеивается таким образом, что бы разделителем был символ перевода строки. Это позволит в дальнейшем корректно считать полученный таки образом файл. Для склейки строк в РНР применяется разделитель - точка. Обратите внимание, что наш массив из целочисленного перешел в разряд символьных, и может использоваться и обрабатываться любым доступным РНР способом.
И наконец - пришла пора вывести результаты на экран. Не нужно забывать о переводе строки в HTML, что несколько иное, чем в РНР. Делается это простым выводом на экран (а значит и в код HTML) тега <BR>. Когда отформатированные результаты выведены, скрипт заканчивает свою работу. Этот блок можно организовать тоже по разному, а примененный тут метод самый простой. Лучше всего вложить результаты и пункты в табличку, тогда выведенная информация будет смотреться более красиво.
Вот и вся работа. Надеюсь, что Вы теперь без труда сможете организовывать опросы своих посетителей на различные темы. Кроме того, голосование можно оснастить другими полезными функциями - например, подсчетом процентного соотношения голосов, или графическим представлением результатов. Только тут придется Вам проявить собственную фантазию и знание элементарной алгебры (вот где оно аукнулось :-). А узнать более подробно о функциях и операторах РНР Вы всегда сможете в Интернете. Например тут: http://virtual.bresttelecom.by/php Если Вы хотите посмотреть в Интернете на рабочий пример голосования - воспользуйтесь адресом http://virtual.bresttelecom.by - на похожем алгоритме там реализован опрос мнения посетителей. Кроме того, там Вы так же найдете пример голосования с графическим выводом результатов. Если возникнут затруднения или вопросы, с большим удовольствием отвечу Вам по электронной почте.
Андрей Кухарчик @ июнь 2001
http://virtual.bresttelecom.by/php
virtualbrest@tut.by(статья написана с расчетом на газетный вариант)
P.S. По Фидо пришла ссылка, которую я с удовольствием переадресовываю Вам. Не знаю, будет ли она работать (когда я проверял - работала), но там лежит файл около 7,5 Мегабайт, в котором дистрибутивы PHP+Apache+MySQL. Все уже установлено и настроено, нужно только распаковать куда надо. Пробуйте!
http://virtual.bresttelecom.by/apache.phtml
Кстати, я скачал файлик, там все на русском, но если у Вас Win Me или W2K могут возникнуть проблемы, так как по умолчанию все ставится на виртуальный диск X, который монтируется в досе из autoexec.bat А указанные операционки их не используют. Правда, в первой мне удалось все запустить, но пришлось вручную запустить этот файл, так как сам по себе он не хотел идти, постоянно переименовываясь в резервную копию. Так что будьте морально готовы. И еще информация - для работы в Win95 Вам понадобится файл (какой - пока не знаю, знаю только что винда начнет ругаться на отсутствие этого файла), его нужно будет скачать из Интернета. И еще большое спасибо автору дистрибутива - дело он сделал нужное и полезное.Если Вас интересует покупка книг по РНР, предлагаю Вам как вариант белорусский электронный магазин OZ.BY . Вы сможете перевести деньги как почтовым переводом, так и через расчетный счет из сберкассы.
Сайты в тему
Предлагаю Вам коллекцию сайтов, где Вы сможете отыскать различную информацию по поводу РНР. Если у Вас есть предложения по поводу расширения этого списка - я с удовольствием добавлю сюда еще один полезный ресурс. Присылайте свои ссылки и описания.
- http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.
- http://go.to/php-encoder - защита РНР скриптов.
- http://phpclub.net - Архив бесплатных PHP-приложений (вкл. E-commerce), форумы, чаты, рассылки, книги, обучение, хостинг.
- http://www.devshed.com/Server_Side/PHP/ интересные статьи по PHP и не только.
- http://ancient.dax.ru На сайте много готовых решений на PHP: форумы, чаты, гостевые книги и многое другое. Кроме того сам сайт реализован на php.
- http://detail.phpclub.net/ - как обычно, о РНР.
Где можно посмотреть
А и правда. РНР, да РНР! А где посмотреть как все это работает и оценить, стоит или нет заниматься этим... Правильное решение будет таким. Посетите сайты, указанные ниже, и посмотрите как они работают. Кстати, если хотите продемонстрировать всем свой проект или то, чего Вы достигли изучая РНР, присылайте ссылку и описание, и все это будет размещено здесь. Только не забудьте поставить у себя наш баннер, можно и не на главной, но буду не против :-) Ссылки на сайты будут вращаться по кругу по мере поступления.
http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков, анекдоты.
www.gdekupit.ru Интернет-каталог Где купить в России. Каталог полностью автоматизирован. Регистрация, добавление нового города, Оформление Договора, выписка счета, служба рассылки и т.д. полностью автоматизировано. Все, кроме счетчика посещений на PHP и MySQL. Кстати, регистрация предприятий, расположенных в любом города России, абсолютно бесплатная.
http://www.ohrana.nsk.su - Практически весь сайт написан на PHP. Используется БД на MySQL.
http://www.webclub.lv - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.
http://www.love24h.com/ru/ - международная служба знакомств, все анкеты (более 1500) с фото
http://www.freeglobus.com/ - сайт бесплатных игр (все со скриншотами и линками на загрузку)
http://trinet.wallst.ru - на PHP сделан каталог игр
www.nixers.com - сайт для поиска непостоянной работы в Ирландии. Short term, part-time and temporary jobs in Ireland.
http://karaganda.central.kz - "На связи Караганда" - содержание сайта полностью отделено от оформления.
http://moredeneg.wallst.ru - Сайт о Реальном заработке в сети. На сегодняшний день сайт почти полностью на PHP.
http://www.yanka.f2s.com - полностью написан на PHP. Работают следующие скрипты: новости, talk box, links, фотографии, гостевая, тексты, дневник.
Почта рассылки
Открывается новый раздел, в котором будут публиковаться материалы, дополнения и обзоры, составленные по Вашим письмам...
Пришло письмо, автор которого поднял проблему, с которой сталкиваются все, кто хочет вывести информацию с сайта или из рассылки на принтер. Оказывается, что ширина стандартной странички сайта превышает ширину бумаги, и часть информации остается за кадром. Рад сообщить Вам, что вопрос решен положительно. Таперь на каждом выпуске рассылки (только в архиве, на сайте http://virtual.bresttelecom.by/php ) есть ссылка, нажав на которую Вы получите в браузер версию для печати. Пользуйтесь.
Корректировка ответа №9 в 15 номере
В вопросе была поставлена задача создать превью, а не как уменьшить картинку в N-ое количество раз. Я не гуру PHP, но как программист не могу видеть мастдайную технологию
ответа на вопрос(в _ПРИНЦИПЕ_ ответ годиться, а в реальности глючит). Откуда известно что картинки надо уменьшать именно в 5 раз? в связи с чем предлагаю изменить код предложенный MaximatoR'ом, а именно строчки:
nsx=sx/5;
nsy=sy/5;
заменить на:
maxpixelx=100;максимальный размер в пикселях по X
maxpixely=100;максимальный размер в пикселях по Y
if (sx > sy) { scale=sx/maxpixelx } else {scale=sy/maxpixely};если по X картинка больше, то узнаем восколько раз надо уменьшить X, иначе восколько уменьшить Y
nsx= round(sx/scale);
nsy= round(sy/scale);
И далее по тексту
Adam AdamichДоброго времени суток.
Начну немного непонятно, но прошу дочитать до конца. У каждого когда-либо возникает вопрос с модернизацией комплектующих: покупка нового процессора, матери, видюхи и т.д. Для осуществления приемлемого выбора обычно смотрят результаты различных тестов. Но, в одном источнике можно найти не более десяти ( а зачатую меньше ) различных конфигураций
железа в трех-четырех вариантах теста-другого ( например: основная конфигурация, в которой меняется только видео, в тестах 3д марк или кваке при разном разрешении ). В другом источнике базовая конфигурация другая. Причем эти результаты можно сравнить между собой часто через большой промежуток времени.
Я же собираю результаты таких тестов в одну базу данных. В настоящее время она насчитывает более 600 уникальных записей. Например, я могу сравнить между собой работу ОДНОЙ видеокарты при разных процессорах или материнских картах.
Теперь к главному. Я сделал небольшую страничку ( сайт ) для вывода этих результатов в и-нет. Сделал все это на РНР с использованием MySQL. Основная проблема - для выставления на всеобщее обсуждение надо найти место, где бы это разрешили сделать. Мой провайдер обеспечивает поддержку РНР только при покупке хостинга ( а денег как обычно нет ). Может есть какой-нибудь бесплатный ?
Если кого заинтересовала такая идея, я не против, чтобы ее реализовал другой, так как я занимаясь этим в свободное от работы время. Могу выслать имеющуюся у меня наработку.
С уважением, Илья.
mis421@chat.ru
Вопросы и ответы
задать
вопрос
Предлагаю Вам присылать свои вопросы на адрес рассылки. Первое время будет действовать только вариант пересылки вопроса по почте, но в будущем приоритет будет отдаваться вопросам, заданным с формы на сайте. Вопрос должен быть кратким, точным и по теме. Ответы на вопросы по мере знаний будут даваться мной, а если я не смогу дать Вам исчерпывающий ответ - кто-то из подписчиков обязательно поможет. А если Вы знаете ответ на заданный вопрос - не поленитесь ответить. Этим Вы очень поможете кому-то решить свою проблему. Синтаксис и грамматика - авторские.
Вопросы:
- 1 Очень хотелось бы знать , как
устроены сайты на рнр типа webscript.ru belarusmedia.com в
смысле
ссылок , и можно ли такое сделать без mysql
2 У меня стоит апач v1.3 и рнр4.0.5, вообщем скрипты выполняются , но при вызове адрес
переделывается в что-то типа этого: http://myserver/_php/php.exe/new/test.php в чем проблема,
я в httpd.conf добавил следующее:
AddType application/x-httpd-php .php .php3 .php4 .phtml
AddType application/x-httpd-php-source .phps
ScriptAlias /_php/ "d:/usr/local/php/"
Action application/x-httpd-php "/_php/php.exe"
В чем тут дело? Заренее спасибо , с уважением геннадий
ответить - Я слышал про библиотеку GD для
создания изображений под PHP. А нельзя ли ее
использовать на Win32?
ответить - Привет!
Помоги, пожалуйста...
вот текст моей вопроса:
(form_checker.php3)
<html>
<head>
<title>Contact Info Checker</title>
</head>
<body bgcolor="#FFFFFF">
<?php
/* Declare some functions */
function print_form($f_name, $l_name, $email, $zip, $os) {
?>
<form action="form_checker.php3" method="post">
<table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>First Name</td><td><input type="text" name="f_name"
value="<?php print $f_name ?>"></td>
</tr> <tr>
<td>Last Name <b>*</b></td><td><input type="text" name="l_name"
value="<?php print $l_name ?>"></td>
</tr> <tr>
<td>Email Address <b>*</b></td><td><input type="text" name="email"
value="<?php print $email ?>"></td>
</tr><tr>
<td>ZIP Code <b>*</b></td><td><input type="text" name="zip"
value="<?php print $zip ?>"></td>
</tr> <tr>
<td>Operating System</td><td><input type="text" name="os"
value="<?php print $os ?>"></td>
</tr> </table>
<input type="submit" name="submit" value="Submit!"><input type="Reset">
</form>
<?
}
function check_form($f_name, $l_name, $email, $zip, $os) {
if(!$l_name || !$email || !$zip):
print("<h3>You are missing some required fields!<h3>");
if(!$l_name) {
print("You need to fill in your <b>Last Name</b>.<br>"); }
if(!$email) {
print("You need to fill in your <b>Email</b>.<br>"); }
if(!$zip){
print("You need to fill in your <b>Zip Code</b>.<br>"); }
print_form($f_name, $l_name, $email, $zip, $os);
else:
confirm_form($f_name, $l_name, $email, $zip, $os);
endif;
}
function confirm_form($f_name, $l_name, $email, $zip, $os) {
?><h2>Thanks! Below is the information you sent us.</h2>
<b>Contact Info</b><?
print("<br>$f_name $l_name<br>$email<br>ZIP: $zip<br>OS: $os\n");
}
/* Begin Main Program */
if(!$submit):
?>
<h3>Please enter your information</h3>
Fields with a "<b>*</b>" are required.<p>
<?php
print_form("","","","","","");
else:
check_form($f_name, $l_name, $email, $zip, $os);
endif;
?>
</body>
</html>
(конец)
значит выполняю у себя этот скрипт и мне выводит, что ошибка в 65 строчке: Warning: Undefined variable: submit in c:\board\form_checker.php3 on line 65 то есть в if (!$submit):
попробовал залить его на свой хостинг - там все нормально работает... как я понял это у меня проблема в настройках апача или php... может мне что-то надо изменить в конфигах? у меня апача for windows98 Жду ответа
ответить - Объясните пожалуйста смысл
использования классов.
ответить - Люди!!! Кто знает как в PHP
работать с dBASE (*.dbf). Стоит такая задача - написать
скрипт, который выдирал бы инфу из файла базы
анных и отсортированную выводил на HTML страничку.
Может кто знает как это делается.Буду очень
благодарен за рабочий пример. Заранее благодарен
Андрей
andrew_0@chat.ru
ответить - как на РНР определить
разрешение экрана?
ответить - Привет всем! У меня скорее
просьба, а не вопрос.Столкнулся с необходимостью
использования в PHP возможности создания сессий.
Почитал и все вроде правильно сделал, одна
проблема ничего не
работает (версия PHP поддерживает сессии).А просьба такая, может кто объяснит или укажет где почитать о сессиях, желательно на русском языке.Спасибо за внимание. Viktor ( viktor@iot.kiev.ua )
ответить - У меня вопрос по PHP: я сделала
форму и в ней присутствует много checkboxes , как
передавать в базу данных MySQL в случае его выбора:
1, и 0 - в противном случае?Как переименовать
группу файлов в Фаре, сохраняя их название, но
меняя расширение, например, 1.html, 2.html и т.д.
переименовать в 1.php, 2.php...? Я делаю сайт знакомств
на php и у меня возникла проблема с upload файлов. Все
говорят, что там все просто, но у меня не
получается. Подскажите, пожалуста,
1. что надо поменять в файле php.ini
2. как производить сам upload, с автоматическим переименованием фалов и присвоением ему номера,
но с сохранением расширения файла: 000001.gif, 000002.jpg
3. И как осуществить проверку файла (до начала загрузки на сервер) на соответствие правильного
размера (например, не больше 50kb)? Ошибка, которая возникает у меня следующего рода: при попытке загрузить файл на локальном сервере пишет следующее (хотя такой файл, естественно, существует):
Warning: Unable to open 'Content-Type: image/tiff; name=\"\"1.tif\"\"
II*' for reading: No such file or directory in c:\!home\test\www\upload.phtml on line 14
В php.ini в File Uploads указана директория для загрузки файлов: upload_tmp_dir = c:/temp/
Сам файл upload.phtml:
<?
if($userfile==""): ?>
<form method=POST action=upload.phtml enctype=multipart/form-data>
<input type=file name=userfile>
<input type=submit>
</form>
<?
else:
echo "$userfile<br>";
echo "$userfile_name<br>";
echo "$userfile_size<br>";
echo "$userfile_type<br>";
endif;
copy($userfile, $userfile_name);
?> В чем может быть причина возникающей у меня ошибки?
Как реализовать на PHP следующее: У меня есть файл 1.txt, в котором находятся пословицы, и я хочу, чтобы они выбирались случайным образом для дальнейшего включения в страницу?
ответить - Вопрос по PHP:
Как считать из переменной окружения QUERY_STRING значение переменной name, которая не указана
в форме, но которая является частью ссылки?
Т.е.
http://site/index.php?name=1
http://site/index.php?name=2
http://site/index.php?name=3
В странице index.php происходит включение с помощью следующего инклюда
<? include "menu.php";?>
<? include $name.".txt"; ?>
А файл menu.php следующего содержания
(задача была красить активные ссылки в другой цвет и убирать тег <a href>,
чтобы человек видел где он находится в данный момент):
<?
for($i=1; $i<11; $i++){
$tmp=$i;
echo "<a href=index.php?name=$tmp>$tmp</a>"." </font>";
if($tmp) -- как здесь проверить равенство переменных $tmp и переменной из строки
запроса $name?
{
echo "<font color=green>".$tmp." </font>";
}
else{
echo "<font color=brown><a
href=poezia.php?name=$tmp>$tmp</a>"." </font>";
}
}
?>
ответить - У меня несколько вопросов:
1. Если php подключен как модуль у меня выполняются не все скрипты например:
header ("Content-type: image/jpeg");
$path="image.jpg";
$im=fopen("$path", "r");
fpassthru($im);
должна появиться картинка, но ... Как cgi приложение все нормально Стоит apache_win32+php4.x
2. Подскажите где подробно почитать, как привязать к Apache mySQL? Лучше на русском ;)
3. Почему когда я создаю картинку средствами php, текст, который я пишу по-русски превращается в абракадабру. Я понимаю что это проблема со шрифтами. Как мне это исправить?
ответить - Очень нужен скрипт: Есть шаблон
index.php в него вставляется файл doc.inc c содержанием
документов (со ссылками на них index.php?document=1
index.php?document=2 и т.д.). Нужно чтобы в doc.inc
автоматически добавлялось название документов и
каткое описание (все документы и doc.inc находятся в
одной папке) и в index.php между <title> </title>
название текущего документа. Огромная просьба
помогите (если скрипт большой шлите прямо на e-mail: signup@echo.ru )
ответить - Просьба не посылать читать FAQ
(или подскажите где взять по емейлу),
как поднять Apache под Мандрейковский Linux 7.2
ответить - У меня вопрос по PHP: Есть файл
insert.php, в нем есть форма для ввода данных, которые
потом заносятся в базу данных MySQL action формы :
action="insert_action.php", т.е. обработка данных
производится в файле :insert_action.php. Все данные
нормально заносятся, но я решила создать функцию,
которая вычисляет по дате рождения знак зодиака,
и хотела бы значение этой функции тоже заносить в
базу данных. Но у меня возникла проблема с
занесением, т.е. функция правильно работает, а в
базу значение не заносит. Я пробовала также
создавать скрытое поле в файле insert.php и в нем
вызывать эту функцию, но рузультат нулевой.
<input type="hidden" name="zodiac" value="<? check_zodiac($bday, $bmonth); ?>">
А также в самом файле insert_action.php пыталась присвоть значение функции переменной $zodiac
$zodiac=check_zodiac($bday, $bmonth);
echo $zodiac; // печатает все правильно, т.е. в переменной $zodiac содержится правильное
значение, которое потом д.б. занесено в б.д. В чем м.б. причина того, что данный insert не работает, ведь значение переменной $zodiac он видит?
$query = "INSERT INTO $userstable VALUES('$name', ...., '$zodiac')";
ответить - Как с помощью PHP получить
значение,которое было вставлено в поле типа
serial(PostgeSQL).(Или по-другому ,как извлечь в PHP-скрипт
переменную sql.errd1?)?
ответить
Ответы на заданные вопросы:
- Где можно найти
электронные книги по PHP???
Ответ:
Если Вы житель Беларуси - самый лучший вариант заказать в электронном магазине. Оплата или по почте или через сберкассу. Остальным точно не знаю, но сходите по ссылке, и там все узнаете.
заказать
- Если я открываю соединение
функцией mysql_connect, то оно закрывается после
отработки скрипта или нужно вызывать mysql_close? И
вообще, стоит ли пользоваться mysql_pconnect или она ест
много ресурсов при увеличении посетителей?
Ответ:
Если я открываю соединение функцией mysql_connect, то оно закрывается после отработки скрипта или нужно вызывать mysql_close? И вообще, стоит ли пользоваться mysql_pconnect или она ест много ресурсов при увеличении посетителей?
Да, оно закрывается сервером, так что об этом волноваться не нужно. А вообще стоит пользоваться библиотекой db_mysql.php она намного лучше, найти ее можешь в библиотеке phplib. MaximatoR maximator_@rambler.ru
- Вопрос такой: каким образом
можно избавиться от повторной посылки данных
скрипту? Пример: пользователь заполнил форму,
щелкнул на кнопке, скрипт отработал... но если
пользователь щелкнет "Refresh", то скрипт
отработает повторно... Чего я уже не делал - и
редирект, и через куки отслеживал... но может есть
вариант через переменные окружения CGI? Ну там
типа HTTP_VARIABLES_POST или еще как-то?
Ответ:
Используй GET вместо POST...
- Расскажи, пожалуйста, про cookies.
Как их послать, принимать и обрабатывать. Есть
функция setcookies, но что-то она ничего не делает ...
Или я что-то не то делаю. У меня Windows98+Apache+PHP4.
Сначала ошибка выходила:
"Warning: Cannot add header information - headers already sent by (output started at d:\www\setcookies.php:7) in d:\www\setcookies.php on line 14"
Я в php.ini поставил "output_buffering = On" теперь ошибок нет, но и cookie не создается.
Кроме того, как, если они будут создаваться, их читать? Суть: счётчик. Надо повторные посещения проверять (по ip умею - хочется точнее по cookies) всё стандартно: проверяем пользователя,
если он не был на сайте - посылаем ему cookie с параметрами (основной - это время последнего
обращения) если уже был, то читаем cookie и проверяем в какое время он заходил на сайт Спасибо.
Дима.
Ответ:
Почитай описание функции setcookie(), там все подробно написано про твой трабл. Общий смысл такой: куки ДОЛЖНЫ БЫТЬ ПОСЛАНЫ ДО ЛЮБОГО ВЫВОДА на страничку, также как и http-заголовки.
ошибка в следующем, ты пытаешься установить cookie после того, как заголовок уже выдан, т.е. стандартный на вывод html, т.е. если на примере: вот что у тебя
<?
print "la-la-la";
setcookie("counter",1200);
...
это не сработает, т.к. был вывод заголовка для html, нужно так:
<?
setcookie("counter",1200);
print "la-la-la";
...
так сработает, надеюсь понятно... MaximatoR (maximator_@rambler.ru)
Наверное ты перед тем как поставить куки сдела кокй-либо вывод в броузер. Например команды echo, printf, header либо выводишь HTML-код или комментарии Если же ты установил куки, то при последующем заходе на твой сайт, броузер проверит, установлены ли куки с твоего сайта, и если есть то переменные из куки будут добавлены в HTTP-заголовок запроса к серверу. И на сайте они будут доступны также как данные переданные через HTML-формы
- Я пишу информацию в файл. Что
произойдет если в файлу обратятся несколько
человек сразу? Неужели всё перепутается? Как
этого избежать
Ответ:
flock - почитай
Так делать нельзя. Генери файл динамически. Если нужен общий алоритм - пиши. info@artos.ru
почитай статью на http://php.spb.ru там все неплохо объясняется
первый вариант, перейди на mysql... второй, блокируй файл (flock) но это изврат, т.к. когда файл заблокирован, то к нему не могу обращаться др. пользователи, а если их будет 1000 ? плохо... хотя это зависит от сайта... MaximatoR (maximator_@rambler.ru)
- Я прочитал статью по адресу http://detail.phpclub.net/technique/01-01-16/print
.Там написано: “… файле .htaccess пишутся строчки,
например ErrorDocument 404 all.php ErrorDocument 403 all.php ErrorDocument 401
all.php …”. Я никак не могу понять, где взять файл
.htaccess? Создавать самим или он должен находится на
хостинге? Если создавать самим, то я не могу
создать файл без имени, если на хостинге, где его
искать? Может быть я что-то не так понял? Помогите
пожалуйста.
Ответ:
Вообще-то я не очень понял, почему ты сам не можешь создать етот файл. Такие файлы даже винда позволяет создавать, про *nix я молчу. Сам делай этот файл в той директории, на доступ к которой хочешь наложить специфические ограничения, или просто для редиректов при ошбках.
Что значит файл без имени? .htaccess - это и есть имя файла (обычный текстовый файл). Копируешь его в нужный каталог, и, при обращении к нему, содержимое этого файла будет определять правила работы ... В твоём случае при возникновении указанных ошибок будет загружаться файл all.php, который, кстати, должен лежать в корне сайта.
На хостинге этот файл может быть, а может и не быть. Если нет, то в Винде его можно создать. Виндовс может создавать файлы без имени, но с расширением. А на хостинге, если он есть, то ты его все равно не увидишь. Сервера не показывают файлы .htaccess и .htpassw
- Нужен скрипт, что бы
организовать собственную рассылку.
Ответ:
народ, я конечно понимаю, что это вопросы и ответы, но что за глупые вопросы ? сходи на php.net, там ссылка на php ресурсы, самый прикольный php index, зайди на него, и в разделе mail найди себе
рассыльшик ! либо на cgi.ru поиши... MaximatoR (maximator_@rambler.ru)
А чем тебя не устраивают рассылки которые можно получить на subscribe.ru или groups.yahoo.com
Сам я такие скрипты не писал но часто встречал на как форумах жаловались что такие скрипты,
при необходимости разослать письма большому количеству подписчиков, работают несколько
часов.
- Подскажите, пожалуйста, как
сделать проверку адреса e-mail на корректность (у
меня на JavaScript не получается, а как это сделать на
PHP, я не знаю)
Ответ:
вот:
if ((!$email) || ($email=="") ||
(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))) error("Неправильный email");
if (strrpos($email,' ') > 0) error("email не может начинаться с пробела");
и все проблемы...MaximatoR (maximator_@rambler.ru)
Используй регулярные выражения. PHP поддерживает стандарты POSIX. Вот тебе рабочий пример:
function valid_email ($adr) {
return
(ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_a
-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_a-z{|}~]+$',
$adr));
}
if (!valid_email($milo)){echo"неправильный адрес";}else{
Нужы комментарии - пиши. l0g_err@xakep.ru
- Можете ли Вы обяснить как
пользоваться MySql? В интернете документации много,
но вот самые первые шаги в моем случае нигде не
описаны. Везде написано только с учетом того, что
должен стоять на компьютере windows nt (2000) и сервером
(IIS). У меня стоит apache. Что нужно для MySql?
С уважением, ВиталийОтвет:
А какая разниуа какой сервер и какая операционка?
1. пускаем mysql.exe (./mysql в лиуксе) и делаем базу, например:
create database test;
create table test (test text default '' not null,);
insert into test(test) values("foo");
insert into test(test) values("bar");
2. Пишем скрипт:
$dbd_link = mysql_connect("localhost", "username", "password");
mysql_select_db("test", $dbd_link);
$result = mysql_query("select * from test", $dbd_link);
while ($row = mysql_fetch_array($result))
echo $row["test"] . "<br>\n";
mysql_free_result($result);
mysql_close($dbd_link);
Andrew Kirilenko,
Нужно только слить MySQL под Win32. Могу прислать. Инсталляха все сделает сама. Если у тебя В2К, то СУБД будет работать как сервис. А далее вводиш логин\пароль и все. Осалось только слить phpMyAdmin и работать с базами. Документацию по языку SQL надешь на www.citforum.ru Документацию по теории реляционных баз данных и общим принципам постоения и оптимизации по-русски хрен найдешь. Если найдешь слей ссылочку, а то, что есть на ситфоруме мало для серьезной работы. Если нуже MySQL (3.3.26) и более подробне инструкции - пиши. l0g_err@xakep.ru - помогу чем смогу.
Для начала необходимо все настроить .Далее после запуска mysqld.exe и apache.exe в командной
строке вводишь mysql -u root CREATE DATABASE first; - создаешь базу данных с именем 'first' (имя конечно же произвольное). Далее пишешь: use first; - переходишь в first , затем создаешь таблицу и работаешь. А вообще если ты все настроил то можешь все выше написанное сделать через PHP
- Пожалуйста, подскажите! Где
можно лучше всего почитать и понять механизмы
работы session в PHP4 в полном объеме. Честно говоря
документацию я проработал, но работать с ними так
и не научился из-за отсутствия опыта в этих делах.
Хотелось бы видеть примеры использования в
системах аутентификации пользователей с
использованием cookies и без них, а также механизм
шифрования пароля и данных при передаче от
пользователя к серверу. И еще правильно ли
заявление, что session является наиболее
эффективным механизмом (я не имею ввиду
маленькие проекты типа домашних страничек, а
более серьезные разработки). Спасибо. АМ.
Ответ:
Если на русском, то сходи на http://php.spb.ru
Если знаешь английский : www.phpbuilder.com www.devshed.com
- Я сделал посылку так:
mail(trim($mails[$i]), $subject, $text, "Content-type: text/plain; charset=koi8-r\nFrom:
czar_admin@mtu-net.ru\nReply-To: czar_admin@mtu-net.ru\n\n");
Здесь: берется адрес отсыльщика из файла, потому стоит на всякий случай трим.
Потом идет текст. потом контенты и фромы с реплеями. в книге написано было, что лучше контент писать в начале и в конце головы сообщения. результат: приходит письмо (текст перекодирован в кои8-р). в нем. в адресе "от кого" приходит не мой мейл, а мейл хоста. в теме пусто.
Текст приходит в кодировке , не определяемой БАТом и Оутлуком. Приходится перекодировать в кои8-р и все читается. Но это мне не нравится. То есть контент - не работает. И контент, и фром, и реплайТо приходят в теле письма. Почему так?
Ответ:
попробуй так:
mail
(
trim($mails[$i]),
"From: czar_admin@mtu-net.ru\n",
"Reply-To: czar_admin@mtu-net.ru\n", //а это вообще-то лишнее, поскольку обратный адрес тот же
$subject,
"Content-type: text/plain; charset=koi8-r\n\n",
$text
);
Ответ:
Обмен ссылками и баннерами
Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Если есть желание разместить свой баннер 88*31 на сайте рассылки http://virtual.bresttelecom.by/php/ , укажите это дополнительно, и пришлите код своего баннера. В любом случае, Вам надо будет разместить у себя код баннера сайта рассылки, и только на главной страничке Вашего сайта. Или - на нескольких других.
Предлагаю Вашему вниманию работы дизайнеров, приславших свои работы в качестве баннеров для сайта РНР для всех! Номер в списке соответствует номеру в имени баннера - php1, php2 и т.д. Так что Вы можете оценить их работы и при желании воспользоваться их услугами.
http://tweak.tut.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
http://www.webclub.lv - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.
Правила у меня стандартные - описания Ваших сайтов будут периодически (в зависимости от их количества) размещаться в рассылке. И конечно - будет отдельная страничка на сайте, на которой будут представлены все друзья сайта.
http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
http://saleha.al.ru/anecdot/index.phtml - самые новые и смешные анекдоты.
http://klepan.narod.ru - Халява pliz! - реферал клуб.
http://www.ohrana.nsk.su - Название: Управления вневедомственной охраны г.Новосибирска. Описание: Услуги по охране квартири других объектов, сопровождение грузов. На сайте: интересные статьи, новости, криминальная хроника, вакансии и другая полезная информация!
http://www.programing.narod.ru - программирование на РНР
http://icebreaker.dax.ru - самый информативный сайт об ударных инструментах, здесь находится огромное количество полезной информации для ударника:фотографии,статьи,табулатуры,самоучители,ссылки и много чего ещё!
http://webd.hut.ru - AGS Design. Сайт для вебмастера. 1500+ изображений фонов, иконки и кнопки, отличная графика, скрипты, очень понятная документация по различным языкам программирования, изучение Фотошоп
от А до Я, и мн. др.
www.nokstr.dax.ru - Программы, статьи и примеры по Visual Basic, C++, Халява.
http://www.ancient.dax.ru - Ancient - Каталог Веб-Мастера. Бесплатные скрипты CGI, PHP, JAVA
WebCraft- всё для вебмастеров, увеличение вашего трафика на 200 посетителей в день.
Подпишитесь на рассылки!
|
Разное
Обращаю Ваше внимание, что правильный адрес рассылки - virtualphp@tut.by. Сайт рассылки доступен по адресу http://virtual.bresttelecom.by/php/ Там Вы найдете все старые выпуски, а так-же теперь доступны версии рассылки для печати.
Если Вы можете помочь сделать баннер для сайта, буду Вам очень признателен. С графикой я не очень дружу, но думаю, что смогу быть полезен и Вам. Жду предложений. Нужен баннер 88*31, лучше анимированный, по теме РНР, вопросы, ответы, статьи и т.д. Все, приславшие свои предложения, будут рекламироваться в рассылке. Первые работы уже есть.
автор рассылки Андрей Кухарчик
http://subscribe.ru/
E-mail: ask@subscribe.ru | Отписаться | Рейтингуется SpyLog |
В избранное | ||