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

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


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

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

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

Здравствуйте все, кто не побоялся трудностей и решил окунуться в удивительный и странный мир программирования. Дело это не простое, но затягивает не хуже игрушек. Вообще, это и есть игра, только противник твой - упрямый сервер, а оружие - голова. Рассылка РНР для всех! позволит Вам сделать первые шаги в программировании на скриптовом языке РНР. У Вас будет возможность задать вопрос по интересующей Вас теме и получить на него профессиональный ответ. Или наоборот - дать ответ, если Вы его знаете. Вы сможете обмениваться мнениями и читать авторские статьи, а так же размещать здесь свою информацию. И это - только начало. Я надеюсь, что рассылка РНР для всех! станет хорошим помощником для многих из Вас! Вопросы по организации рассылки и свои мнения присылайте на адрес для связи - virtualphp@tut.by. Буду рад любым предложениям о сотрудничестве.

А еще хочу сказать большое СПАСИБО сайту и его автору лично TweakMan-y за помощь в рекламе моей рассылки. Оптимизация и настройка компьютера


Что может РНР?

МАССИВЫ

Мы подошли в своем изучении к одному достаточно сложному для новичка понятию. Массивы представляют собой рад чисел или знаков, и имеют как и все переменные имя и значение. Но кроме этого они обладают еще одной полезной штукой - индексом. Попробую объяснить на пальцах. Допустим, Вы стоите перед одноэтажным домом, и у него есть одна дверь справа и десять окон. Дверь - это определение (имя) массива, а окна - это ячейки, которые в массиве доступны как и любая переменная в РНР. Все массивы начинаются как правило с нуля, но это не принципиально, как нам удобно, так можем и начинать, хоть с 3423. Но правильней начать отсчет, конечно, с zero. Итак первое окно от двери имеет имя $дверь[окно номер 0], вторая - $дверь[окно номер 1], третья - $дверь[окно номер 2] и т.д. до $дверь[окно номер 9]. Обратите внимание - элементов массива оказалось 10, а индекс получился только 9. Тут тоже скрыта потенциальная опасность запутаться. Но если все четко себе представлять, такого не произойдет. Возвращаясь на землю к РНР определимся так - $имя массива[индекс]. Имя может быть любым как и всякое имя переменной, индекс может быть либо непосредственно числом, переменной или его может вообще не быть. В этом случае (что вообще не желательно) будет выбрана или записана ячейка массива следующая за той, к которой было последнее обращение в массиве.
Вот как можно ввести данные в массив.

<?php
a[] = 1;
a[] = 67456;
a[] = "пример";
>?

В этом случае будет создан массив с именем А и в его ячейки 0,1 и 2 введены значения 1,67456 и "пример" соответственно. Теперь достаточно дать команду echo a[3]; и на экран будет выведено слово "пример". Тут сокрыта одна опасность. Если массив с таким именем уже был определен раньше, и в него были введены данные, то данная конструкция продолжит ввод с того индекса, на котором ввод данных был прерван. Избежать этого можно, если явно указать индекс ячейки - не a[], а a[0], a[1], a[2] и т.д. Или - не путаться с именами массивов...
Кстати сказать, массивы бывают еще и двумерные. Рассмотренные выше - одномерные, а двумерные млжно сравнить тоже с домом, но не одноэтажным, а напимер пятиэтажным. В этом случае добавляется еще один индекс, впрочем это уже другая история...
С ячейками массива можно делать все что угодно как и с любыми переменными РНР. Арифметические операции, логические операции, сравнение, увеличение, уменьшение и т.д. А еще есть очень хорошая возможность, о которой я не могу не упомянуть. РНР позволяет считать в любой массив целый файл! Это открывает большие перспективы и дает интересные возможности. Без такой функции не обходится ни один серьезный скрипт. Вот ее формат:

<php
$a = file( "имя файла" );
?>

После выполнения этой команды РНР в массиве $a будет находиться содержимое файла, имя или путь которого были указаны. Разделителем будет являться перевод строки. Кстати, путь типа "http://." не поддерживается. Он может быть только относительным. Это как я думаю, связано с безопасностью. А уж дальше что мы будем делать - дело наше. Самое простое - поискать чего-нибудь в этом файле. Немного сложнее - найти и заменить. Но все это уже дело техники.

На следующем уроке мы познакомимся с другими командами РНР относительно массивов...      Пример будет соответствующий.


Пример в номер

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

<?php

// ------- определяем массив для месяцев ----------
$q[]="";
$q[]="января";
$q[]="февраля";
$q[]="марта";
$q[]="апреля";
$q[]="мая";
$q[]="июня";
$q[]="июля";
$q[]="августа";
$q[]="сентября";
$q[]="октября";
$q[]="ноября";
$q[]="декабря";

// ------- определяем массив для дней недели ----------
$e[]="воскресенье";
$e[]="понедельник";
$e[]="вторник";
$e[]="среда";
$e[]="четверг";
$e[]="пятница";
$e[]="суббота";

$m=date('m'); // ---- считываем месяц
if ($m=="01") $m=1;
if ($m=="02") $m=2;
if ($m=="03") $m=3;
if ($m=="04") $m=4;
if ($m=="05") $m=5;
if ($m=="06") $m=6;
if ($m=="07") $m=7;
if ($m=="08") $m=8;
if ($m=="09") $m=9;
$we=date('w'); // ---- считываем день недели

$chislo=date('d'); // ---- считываем число
$den_nedeli = $e[$we]; // ---- извлекаем из массива соответствующее значение дня недели
$mesyac = $q[$m]; // ---- извлекаем из массива соответствующее значение месяца

echo "Сегодня ".$chislo." ".$mesyac.", ".$den_nedeli;
?>

Если Вы внимательно читали предыдущую статью, у Вас не возникнет трудностей. Сначала определяем два массива. Один для русских имен месяцев, другой для названий дней недели. При этом не забываем про нулевое значение массивов и оставляем его пустым. Потом считываем функцией РНР номер текущего месяца. Этот номер к сожалению передается с ведущим нулем, если он меньше 10-ти. Об этом приходится позаботиться в следующих строках скрипта, примениы знакомую нам функцию сравнения. Считываем день недели, с ним такой заморочки нет, и дальше работаем с массивом.
Во первых извлекаем из соответствующей ячейки массива день недели. И во вторых их другого массива выбираем имя месяца. Дело сделано! Осталось только вывести результат на экран...

скачать cкрипт в готовом виде


Наши обшибки

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

  • Самое распространенное - не стоит завершающая оператор точка с запятой. Не ставится она только в конструкции if () {} {} Основной признак - ошибка в следующей строке за тем оператором, в котором нет точки с запятой.

  • При сравнении на равенство двух переменных ставится два знака равенства. Исключений нет. Основной признак - скрипт работает, но не так как это от него ожидается.

  • В конструкции if () {} {} отсутствует завершающий знак - } Исключений нет. Признак этой ошибки очень простой, и позволяет детектировать эту ошибку очень просто. При запуске скрипта на выполнение интерпретатор выдает ошибку в самой последней строчке кода, где стоит завершающий тег ?>


Сайты в тему

Предлагаю Вам коллекцию сайтов, где Вы сможете отыскать различную информацию по поводу РНР. Если у Вас есть предложения по поводу расширения этого списка - я с удовольствием добавлю сюда еще один полезный ресурс. Присылайте свои ссылки и описания.

  • http://php3.agava.ru - информационный ресурс о РНР. Есть примеры и много статей самого различного уровня. От начинающего до профи! Язык - русский. Как ни странно, он пока не доступен. Возможно, это временное явление.

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.


Примеры скриптов

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

  • vremya.rar - выводит на экран время в соответствии с логикой русского языка.

  • data.rar - выводит на экран число, месяц и день недели.


Где можно посмотреть

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

  • http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков.


Вопросы и ответы
задать вопрос

Предлагаю Вам присылать свои вопросы на адрес рассылки. Первое время будет действовать только вариант пересылки вопроса по почте, но в будущем приоритет будет отдаваться вопросам, заданным с формы на сайте. Вопрос должен быть кратким, точным и по теме. Ответы на вопросы по мере знаний будут даваться мной, а если я не смогу дать Вам исчерпывающий ответ - кто-то из подписчиков обязательно поможет. А если Вы знаете ответ на заданный вопрос - не поленитесь ответить. Этим Вы очень поможете кому-то решить свою проблему. Синтаксис и грамматика - авторские.

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

Вопросы:

  1. Вопрос есть ли в РНР аналогичная замена директивы SSI <!--#exec cgi="cgi-bin/counter.cgi" -->
    И как функция пишется, я пробовал exec, system ничего не выходит. Нужно запустить из РНР файда CGI счетчик и что бы он вставил свое значение в файл РНР и counter.dat, в общем выполнить CGI скрипт. Заранее благодарен, Андрей.

    ответить
  2. Пришло несколько вопросов, я их объединяю в один. Где можно получить бесплатный или почти бесплатный хостинг с поддержкой РНР и желательно базы данных.
    ответить
  3. А как можно узнать содержимое файла с расширением PHP, который находится на
    каком-либо сервере. Способ - сохранить объект как ... не помогает.

    ответить
  4. Здравтсвуйте! Помогите! Просто меня один вопрос уже долго мучит. (вопрос елементарный).
    Как создать таблицу в MySQL, я открываю MySQL, и пишу следующее:
    mysql> create database prod;
    MySQL выдает:
    Query OK, 1 row affected (0.06 sec)
    Ну здесь все нормально, а вот дальше :(. Теперь создаю таблицы:
    mysql> create table clients (name varchar(25), email varchar(25), choise varchar (8));
    И вот, что выдает MySQL:
    ERROR 1046: No Database Selected
    Кто нибудь знает что это такое? :( С уважением,Virus

    ответить

Ответы на заданные вопросы:

  1. Не подскажешь, где можно скачать php пакет? (т.е. есть у меня апача, я там над perl-ом балуюсь :-), так вот где мне можно скачать php интерпритатор (под винду, хотя она и мастдай).....)

    Ответ:
    Очевидно, что на официальном сайте РНР -
    http://www.php.net/ Но если нет желания копаться, вот вам ссылка. Скачайте файл, распакуйте, поставьте на диск F (можно сделать вируальный в AUTOEXEC.BAT или покопаться в настроечных файлах APACHE и поменять на свой диск). Там сразу APACHE и РНР в связке.

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


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

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

Правила у меня стандартные - описания Ваших сайтов будут периодически (в зависимости от их количества) размещаться в рассылке. И конечно - будет отдельная страничка на сайте, на которой будут представлены все друзья сайта.

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


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

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

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


Разное

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


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


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное