Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Рассылка сайта
РНР для всех!

Выпуск номер 16

Здравствуйте

Сегодняшний выпуск рассылки по просьбам подписчиков посвящен такой полезной вещи, как голосование. Статья писалась и готовилась с расчетом на публикацию в газете, так что учитывайте этот момент при изучении и чтении.

заказать книги по РНР (только Беларусь)

Голосование на РНР!

Речь пойдет о практической работе, которую мы с Вами вместе проведем и усвоим. Голосование - это средство узнать мнение Ваших посетителей по разным вопросам. Сами вопросы могут быть как полезными так и бесполезными - эту тему мы рассматривать не будем. А для нашего примера возьмем простой вопрос - Ваше мнение о сайте? Варианты ответов предоставим следующие:

  1. Круто!
  2. Так себе
  3. Сойдет
  4. Это что-то страшное!

Продолжить Вы можете уже сами... Для работы нам понадобится некоторое знание основ 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. 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"
    В чем тут дело? Заренее спасибо , с уважением геннадий
    ответить
  2. Я слышал про библиотеку GD для создания изображений под PHP. А нельзя ли ее использовать на Win32?
    ответить
  3. Привет!
    Помоги, пожалуйста...

    вот текст моей вопроса:
    (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 Жду ответа
    ответить
  4. Объясните пожалуйста смысл использования классов.
    ответить
  5. Люди!!! Кто знает как в PHP работать с dBASE (*.dbf). Стоит такая задача - написать скрипт, который выдирал бы инфу из файла базы анных и отсортированную выводил на HTML страничку. Может кто знает как это делается.Буду очень благодарен за рабочий пример. Заранее благодарен Андрей
    andrew_0@chat.ru
    ответить
  6. как на РНР определить разрешение экрана?
    ответить
  7. Привет всем! У меня скорее просьба, а не вопрос.Столкнулся с необходимостью использования в PHP возможности создания сессий. Почитал и все вроде правильно сделал, одна проблема ничего не
    работает (версия PHP поддерживает сессии).А просьба такая, может кто объяснит или укажет где почитать о сессиях, желательно на русском языке.Спасибо за внимание. Viktor ( viktor@iot.kiev.ua )
    ответить
  8. У меня вопрос по 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, в котором находятся пословицы, и я хочу, чтобы они выбирались случайным образом для дальнейшего включения в страницу?
    ответить
  9. Вопрос по 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>"."&nbsp;&nbsp;</font>";
    if($tmp) -- как здесь проверить равенство переменных $tmp и переменной из строки
    запроса $name?
    {
    echo "<font color=green>".$tmp."&nbsp;&nbsp;</font>";
    }
    else{
    echo "<font color=brown><a
    href=poezia.php?name=$tmp>$tmp</a>"."&nbsp;&nbsp;</font>";
    }
    }
    ?>
    ответить
  10. У меня несколько вопросов:

    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, текст, который я пишу по-русски превращается в абракадабру. Я понимаю что это проблема со шрифтами. Как мне это исправить?
    ответить
  11. Очень нужен скрипт: Есть шаблон 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 )
    ответить
  12. Просьба не посылать читать FAQ (или подскажите где взять по емейлу),
    как поднять Apache под Мандрейковский Linux 7.2
    ответить
  13. У меня вопрос по 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')";

    ответить
  14. Как с помощью PHP получить значение,которое было вставлено в поле типа serial(PostgeSQL).(Или по-другому ,как извлечь в PHP-скрипт переменную sql.errd1?)?
    ответить

    Ответы на заданные вопросы:
  1. Где можно найти электронные книги по PHP???

    Ответ:
    Если Вы житель Беларуси - самый лучший вариант заказать в электронном магазине. Оплата или по почте или через сберкассу. Остальным точно не знаю, но сходите по ссылке, и там все узнаете.
    заказать

  2. Если я открываю соединение функцией mysql_connect, то оно закрывается после отработки скрипта или нужно вызывать mysql_close? И вообще, стоит ли пользоваться mysql_pconnect или она ест много ресурсов при увеличении посетителей?

    Ответ:
    Если я открываю соединение функцией mysql_connect, то оно закрывается после отработки скрипта или нужно вызывать mysql_close? И вообще, стоит ли пользоваться mysql_pconnect или она ест много ресурсов при увеличении посетителей?

    Да, оно закрывается сервером, так что об этом волноваться не нужно. А вообще стоит пользоваться библиотекой db_mysql.php она намного лучше, найти ее можешь в библиотеке phplib. MaximatoR maximator_@rambler.ru 

  3. Вопрос такой: каким образом можно избавиться от повторной посылки данных скрипту? Пример: пользователь заполнил форму, щелкнул на кнопке, скрипт отработал... но если пользователь щелкнет "Refresh", то скрипт отработает повторно... Чего я уже не делал - и редирект, и через куки отслеживал... но может есть вариант через переменные окружения CGI? Ну там типа HTTP_VARIABLES_POST или еще как-то?

    Ответ:
    Используй GET вместо POST...

  4. Расскажи, пожалуйста, про 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-формы

  5. Я пишу информацию в файл. Что произойдет если в файлу обратятся несколько человек сразу? Неужели всё перепутается? Как этого избежать

    Ответ:
    flock - почитай

    Так делать нельзя. Генери файл динамически. Если нужен общий алоритм - пиши. info@artos.ru

    почитай статью на http://php.spb.ru там все неплохо объясняется

    первый вариант, перейди на mysql... второй, блокируй файл (flock) но это изврат, т.к. когда файл заблокирован, то к нему не могу обращаться др. пользователи, а если их будет 1000 ? плохо... хотя это зависит от сайта... MaximatoR (maximator_@rambler.ru)

  6. Я прочитал статью по адресу 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

  7. Нужен скрипт, что бы организовать собственную рассылку.

    Ответ:
    народ, я конечно понимаю, что это вопросы и ответы, но что за глупые вопросы ? сходи на php.net, там ссылка на php ресурсы, самый прикольный php index, зайди на него, и в разделе mail найди себе
    рассыльшик ! либо на cgi.ru поиши... MaximatoR (maximator_@rambler.ru)

    А чем тебя не устраивают рассылки которые можно получить на subscribe.ru или groups.yahoo.com
    Сам я такие скрипты не писал но часто встречал на как форумах жаловались что такие скрипты,
    при необходимости разослать письма большому количеству подписчиков, работают несколько
    часов.

  8. Подскажите, пожалуйста, как сделать проверку адреса 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

  9. Можете ли Вы обяснить как пользоваться 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


  10. Пожалуйста, подскажите! Где можно лучше всего почитать и понять механизмы работы session в PHP4 в полном объеме. Честно говоря документацию я проработал, но работать с ними так и не научился из-за отсутствия опыта в этих делах. Хотелось бы видеть примеры использования в системах аутентификации пользователей с использованием cookies и без них, а также механизм шифрования пароля и данных при передаче от пользователя к серверу. И еще правильно ли заявление, что session является наиболее эффективным механизмом (я не имею ввиду маленькие проекты типа домашних страничек, а более серьезные разработки). Спасибо. АМ.

    Ответ:
    Если на русском, то сходи на http://php.spb.ru
    Если знаешь английский : www.phpbuilder.com   www.devshed.com 

  11. Я сделал посылку так:
    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
    );



  12. Ответ:

задать вопрос


Обмен ссылками и баннерами

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Если есть желание разместить свой баннер 88*31 на сайте рассылки http://virtual.bresttelecom.by/php/ , укажите это дополнительно, и пришлите код своего баннера. В любом случае, Вам надо будет разместить у себя код баннера сайта рассылки, и только на главной страничке Вашего сайта. Или - на нескольких других.

PHP для всех! Программируем сами.            <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php1.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>
<!-- PHP banner end -->
PHP для всех! Программируем сами.            <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php2.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>
<!-- PHP banner end -->
PHP для всех! Программируем сами. <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php3.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>
<!-- PHP banner end -->
PHP для всех! Программируем сами. <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php4.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>
<!-- PHP banner end -->

Предлагаю Вашему вниманию работы дизайнеров, приславших свои работы в качестве баннеров для сайта РНР для всех! Номер в списке соответствует номеру в имени баннера - php1, php2 и т.д. Так что Вы можете оценить их работы и при желании воспользоваться их услугами.

  1. http://tweak.tut.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!

  2. 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 посетителей в день.


Подпишитесь на рассылки!

Рассылки Subscribe.Ru
Программируем на PHP - вопросы и ответы
Новости сайта Виртуальный Брест
Оптимизация и настройка компьютера
Кроссворды еженедельно

Здесь будет публиковаться список рассылок, рекомендуемых к подписке. Если у Вас есть рассылка - предлагаю Вам обменяться подобной формочкой для подписчиков. Достаточно прислать мне код рассылки и ее название.


Разное

Обращаю Ваше внимание, что правильный адрес рассылки - virtualphp@tut.by. Сайт рассылки доступен по адресу http://virtual.bresttelecom.by/php/ Там Вы найдете все старые выпуски, а так-же теперь доступны версии рассылки для печати.
Если Вы можете помочь сделать баннер для сайта, буду Вам очень признателен. С графикой я не очень дружу, но думаю, что смогу быть полезен и Вам. Жду предложений. Нужен баннер 88*31, лучше анимированный, по теме РНР, вопросы, ответы, статьи и т.д. Все, приславшие свои предложения, будут рекламироваться в рассылке. Первые работы уже есть.


автор рассылки Андрей Кухарчик



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное