Автор Тема: PHP, стандартные решения  (Прочитано 10571 раз)

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
PHP, стандартные решения
« : 25 марта 2008, 11:05:05 »
Возможно тем, кто собрался изучать php пригодятся некоторые примеры стандартных решений. Зачем? - чтоб начинающие не наступали на грабли, которыми уже кто-то поранился :)
Если кому-то интересен этот язык, время от времени буду добавлять простые примеры, кто желает помочь новичкам - присоеденяйтесь.

Чтобы в дальнейшем не было ошибок с бд, при регистации нового пользователя полезно проверить, не занят ли его ник, это можно сделать так:
$result = mysql_query ("SELECT * FROM base_users WHERE nick = '$nick'");
if ($row = mysql_fetch_array($result)) {
    $dubl = $row['id'];
}else{$dubl = 0;}
if($nick !="" AND $dubl==0){
// если такого ника нету, регистрируем юзера
}else{
// иначе предлагаем выбрать другой ник
}

Как узнать, правильный ли e-mail вводит пользователь? (e-mail должен соответствовать выражению ххх@ххх.ххх)
$email_address = $_POST['email_address'];
if(!preg_match("/^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,4}$/", $email_address))
{
// сообщаем об ошибочном адресе
exit;
}
// все нормально, работаем дальше

Простой постраничный вывод данных (похож на тот, что используется на этом форуме)
$num = 10;  // Число записей всего.
$perpage = 7; // Кол-во, показываемых записей на странице.
$pages_count = @ceil($num/$perpage);
$pages .= 'Страницы:';
   for($j=1;$j<=$pages_count;$j++)
  {
           if ($_GET['page'] != $j)
           {
              $pages .= ' <a href="?page='.$j.'"><b>'.$j.'</b></a> ';
           }
           else
           {
              $pages .= ' <b>'.$j.'</b> ';
           }
  }

Дружим с русским. Скажу по секрету, англичанам писать немножко проще :)
Ведь у них и 2 days, и 10 days... У нас же 2 дня, но 10 дней. Вот простая функция, делающая нужное окончание:
function  kols($users)
    {
        $a=substr($users,strlen($users)-1,1);
        if($a==1) $str="ь";
        if($a==2 || $a==3 || $a==4) $str="я";
        if($a==5 || $a==6 || $a==7 || $a==8 || $a==9 || $a==0) $str="ей";
        return $str;
    }
В нужном месте просто вызываем:
$kols=15;
//берем количество, например из базы
echo $kols."&nbsp;пользовател".kols($kols);
// выводим на экран, используя правила русского языка
данный пример будет выводить правильные окончания пользователь/пользователя/пользователей
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера

wwwwwwww

  • Сержант
  • *
  • Сообщений: 584
  • Благодарностей: 12
  • demon666
    • сайт с рекламкой!
    • E-mail
Re: PHP, стандартные решения
« Ответ #1 : 12 мая 2008, 21:05:36 »
wmforums.ds8.ru/index.php?showtopic=140
прикол получается..одинаковые темы :)
хотя..а как эти скрипты..как их проверить..точней на чем?надо при регистрации указывать?

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
Re: PHP, стандартные решения
« Ответ #2 : 30 мая 2008, 05:21:26 »
Цитировать
прикол получается..одинаковые темы
не открывается ссылка
но если сравнить даты создания топиков, то вряд ли кто меня упрекнет в плагиате :)
а по поводу
Цитировать
хотя..а как эти скрипты..как их проверить..точней на чем?надо при регистрации указывать?
это даже не скрипты, это всего лишь заготовки для скриптов... детали конструктора, так сказать...
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера

ahbobo

  • Капитан
  • *
  • Сообщений: 3844
  • Благодарностей: 52
  • Без денег сон крепче =)
    • Невероятные поделки из спичек без клея!!!
    • E-mail
Re: PHP, стандартные решения
« Ответ #3 : 12 августа 2008, 18:27:25 »
Собираюсь начинать изучать. Как думаешь - Дело сложное и сколько времнени уйдёт на нормальное освоение??

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
Re: PHP, стандартные решения
« Ответ #4 : 14 августа 2008, 05:54:24 »
через неделю сможешь писать простейшие функции, скрипты вроде примитивного чата или голосовалки, связка php+mysql не так сложна как кажется на первый взгляд
если нужна литература, поищи Дмитрия Котерова - на русском языке лучшего я не встречал (а всякую пургу вроде ПХП для чайников отдай знакомому учителю информатики :))
а изучать - это постоянное, я уже больше двух лет изучаю, и тем не менее не могу утверждать что я гуру
"чем больше я знаю, тем больше вижу, сколько еще предстоит узнать" (с)
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера

pacha

  • Прапорщик
  • *
  • Сообщений: 1301
  • Благодарностей: 25
  • http://trancelife.kiev.ua
    • trancelife.kiev.ua
Re: PHP, стандартные решения
« Ответ #5 : 04 сентября 2008, 13:52:06 »
Автору темы спасибо за идеи в регистрации! Изучаю также PHP помаленьку! В общем пока готовые движки php fusion переделываю под себя и этим самым увеличеваю свои навыки в ПХП!  :)

ahbobo

  • Капитан
  • *
  • Сообщений: 3844
  • Благодарностей: 52
  • Без денег сон крепче =)
    • Невероятные поделки из спичек без клея!!!
    • E-mail
Re: PHP, стандартные решения
« Ответ #6 : 10 октября 2008, 22:02:50 »
Почему у меня сами сценарии PHP выполняются нормально, а когда их встраиваешь в страницу (в HTML-код), они не работают?? На локалхосте??
даже самый безобидный код отказывает выполнятся!
<html><body>
<?php echo "HEllo World";
?>

</body></html>



Когда делаешь файл РНР, то тоже есть проблемы, код не работает, если начинать писать с <? а работает только с <?php, хотя в книге написано, что должно работать в любом случае!


И ЕЩЁ::
При выполнении:
<?php 
$i
=1;
do echo 
"$i\n"; while ($i++ <10);
?>
должно выводить каждое значение $i с новой строки, а оно его просто в одну строку с пробелами. В чём проблема??
« Последнее редактирование: 10 октября 2008, 22:04:43 от ahbobo »

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
Re: PHP, стандартные решения
« Ответ #7 : 19 октября 2008, 01:48:34 »
Почему у меня сами сценарии PHP выполняются нормально, а когда их встраиваешь в страницу (в HTML-код), они не работают?? На локалхосте??
даже самый безобидный код отказывает выполнятся!
просто вставить PHP-исходник в HTML-страничку мало
например, если ты сохранил html-файл на диске "D" в папке "source", то его достаточно запустить даблкликом
php-файл таким образом не запустится
поскольку PHP - серверный язык, для его запуска необходим сервер
самый популярный - Апач, Дмитрий Котеров собрал очень хороший дистрибутив Апача под windows (взять можно на dklab.ru)
после его установки достаточно открыть браузер и набрать http://папка_в_апаче_куда_закинут_файл/нужный_файл.php
если файл переименовать в index.php, то его имя можно не набирать (достаточно http://папка_в_апаче_куда_закинут_файл)

В случае, если в html вставлен php, такой файл тоже необходимо запускать через браузер

Когда делаешь файл РНР, то тоже есть проблемы, код не работает, если начинать писать с <? а работает только с <?php, хотя в книге написано, что должно работать в любом случае!

работает так, как это указано в php.ini
в большинстве случаев достаточно <?, а как указано в твоих настройках, я отсюда не вижу  :)

И ЕЩЁ::
должно выводить каждое значение $i с новой строки, а оно его просто в одну строку с пробелами. В чём проблема??

попробуй "$i\n" заменить на "$i<br>"
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера

ahbobo

  • Капитан
  • *
  • Сообщений: 3844
  • Благодарностей: 52
  • Без денег сон крепче =)
    • Невероятные поделки из спичек без клея!!!
    • E-mail
Re: PHP, стандартные решения
« Ответ #8 : 21 октября 2008, 01:22:34 »
quaker,
поскольку PHP - серверный язык, для его запуска необходим сервер
самый популярный - Апач
Да стоит у меня Апач и вроде всё ок работает!


quaker, quaker,
работает так, как это указано в php.ini
Я так понял, что это этот параметр short_open_tag = On и он стоит на вклюбченном. Но не работает всё равно!

попробуй "$i\n" заменить на "$i<br>"
Ну это понятно, что можно использовать ХТМЛ код, но почему этот в РНР не работает??

Дмитрий Котеров собрал очень хороший дистрибутив Апача под windows (взять можно на dklab.ru)
Это типа Денвер качать чтоли?? и Там будет всё сразу настроено?
« Последнее редактирование: 22 октября 2008, 00:27:18 от ahbobo »

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
Re: PHP, стандартные решения
« Ответ #9 : 22 октября 2008, 02:06:39 »
Цитировать
Ну это понятно, что можно использовать ХТМЛ код, но почему этот в РНР не работает??
для *NIX символ возврата каретки \n, для Win если не ошибаюсь \r\n, для MacOS то ли \r то ли \n\r
если не уверен, на какой платформе будет сервер, лучше использовать html или xhtml (<br />)
Цитировать
Это типа Денвер качать чтоли?? и Там будет всё сразу настроено?
да, это Денвер
и там все нормально настроено даже по умолчанию
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера

ahbobo

  • Капитан
  • *
  • Сообщений: 3844
  • Благодарностей: 52
  • Без денег сон крепче =)
    • Невероятные поделки из спичек без клея!!!
    • E-mail
Re: PHP, стандартные решения
« Ответ #10 : 22 октября 2008, 02:46:12 »
Ну поставил Денвер. Вроде выполняет файлы РНР. А встроенные коды РНР в ХТМЛ всё равно не выполняет. Или сами файлы ХТМЛ нужно в определённую папку кидать?? Не понимаю.
Ну не работает этот код:
<html><body><h1>
<? echo "Hello"; ?>
</h1></body></html>
Может я тупой, но не могу понять этого. Везде в книгах написано, что должно работать и так и так. А оно в ХТМЛ не работает!

Нашел небольшой мануал по Денверу, где написано как сделать, что бы код РНР выполнялся в ХТМЛ:

3.5. У меня не исполняется PHP-код в файлах с расширением «.html». Так и должно быть?
Да, по умолчанию в Денвере PHP-код в файлах с расширением «.html» не исполняется. Однако Вы можете настроить Apache в Денвере таким образом, чтобы файлы с расширением «.html» обрабатывались интерпретатором PHP. Откройте файл «\usr\local\apache\conf\httpd.conf». Найдите в нём строку, начинающуюся на «AddType application/x-httpd-php». Допишите в её конец « .html» (с пробелом впереди). Перед этой строкой вставьте «RemoveHandler .html». После этого удостоверьтесь, что в директиве «AddHandler server-parsed» (найдите эту строчку) нет расширения «.html» (если есть — удалите его). Перезапустите Денвер. Учтите, что после этой операции файлы с расширением «.html» перестанут обрабатываться SSI.



Сделал всё как написано, а оно всё равно не выполняется. Ну да ладно. Я тут подумал, зачем мне РНР вставлять в ХТМЛ, если можно сделать наоборот - ХТМЛ вставить в РНР...
« Последнее редактирование: 22 октября 2008, 21:59:58 от ahbobo »

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
Re: PHP, стандартные решения
« Ответ #11 : 24 октября 2008, 08:42:20 »
Цитировать
Или сами файлы ХТМЛ нужно в определённую папку кидать??
естественно
например, если ты набираешь в браузере "localhost/file.html" то file.html должен быть в папке "твой_денвер/home/localhost/www"
« Последнее редактирование: 25 октября 2008, 00:02:24 от quaker »
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера

ahbobo

  • Капитан
  • *
  • Сообщений: 3844
  • Благодарностей: 52
  • Без денег сон крепче =)
    • Невероятные поделки из спичек без клея!!!
    • E-mail
Re: PHP, стандартные решения
« Ответ #12 : 25 октября 2008, 22:00:57 »
Вот я тормоз :2funny:
Теперь всё работает. Спасибо на этом. Скоро буду опять донимать тупыми вопросами :uglystupid2:

ahbobo

  • Капитан
  • *
  • Сообщений: 3844
  • Благодарностей: 52
  • Без денег сон крепче =)
    • Невероятные поделки из спичек без клея!!!
    • E-mail
Re: PHP, стандартные решения
« Ответ #13 : 01 ноября 2008, 06:21:08 »
Код: (php) [Выделить]
<?
// Этот работает:

//$A["Ivanov"] = array("name"=>"Иванов И", "sex"=>"M", "email"=>"ivanov@mail.ru");
//$A["Petrov"] = array("name"=>"Петров П", "sex"=>"M", "email"=>"petrov@mail.ru");
//$A["Sidorova"] = array("name"=>"Сидорова Н", "sex"=>"F", "email"=>"sidorova@mail.ru");
//echo $A["Ivanov"]["name"];



// а этот внизу, нет!
 
$A = array (
"Ivanov" = array("name"=>"Иванов И", "sex"=>"M", "email"=>"ivanov@mail.ru"),
"Petrov" = array("name"=>"Петров П", "sex"=>"M", "email"=>"petrov@mail.ru"),
"Sidorova" = array("name"=>"Сидорова Н", "sex"=>"F", "email"=>"sidorova@mail.ru")
);
echo $A["Ivanov"]["name"];
?>
Где я ошибся??
« Последнее редактирование: 01 ноября 2008, 06:24:23 от ahbobo »

quaker

  • Прапорщик
  • *
  • Сообщений: 1451
  • Благодарностей: 64
    • E-mail
Re: PHP, стандартные решения
« Ответ #14 : 08 ноября 2008, 06:32:08 »
ты пытаешься передать в "Ivanov" "Petrov" "Sidorova" какие-то данные, в нашем случае значения массива (array)
загвоздка в том, что массив может храниться в переменной $Ivanov, а вот что такое "Ivanov" php не знает
переменные должны начинаться с символа бакса, например вот так:
$A = array (
$Ivanov = array("name"=>"Иванов И", "sex"=>"M", "email"=>"ivanov@mail.ru"),
$Petrov = array("name"=>"Петров П", "sex"=>"M", "email"=>"petrov@mail.ru"),
$Sidorova = array("name"=>"Сидорова Н", "sex"=>"F", "email"=>"sidorova@mail.ru")
);
echo $Ivanov["email"];
?>


« Последнее редактирование: 08 ноября 2008, 06:36:14 от quaker »
- каждый год, 31-го декабря мы с друзьями оказываемся в бане...
- наверное на том форуме очень злой модератор?
$ для вебмастера. Много $ для вебмастера