Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 1 из 641  2  3  4  5 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Наткнулся на топик "Вопрос по PHP". почитал, куча мусора да и там тема конкретная. Этим топиком предлагаю организовать централизированное обсуждение не только по самому PHP, но и о работе с базами данных, HTML, XML и.т.д, тоесть по всему, что сопутствует разработке более-менее большого проэкта.

P.S. Сам являюсь проф. разработчиком, имею довольно неплохой опыт, так что надеюсь смогу помочь.

Прошу, что бы в топе небыло лишнего флуда, а так же идиотских вопросов. По наиболее частым и насущьным составлю FAQ, так же добавлю примеры из своего опыта работы.

FAQ

Итак, PHP. Данный термин, исторически, имеет 2 расшифровки - Personal Home Pages - изначальное название, и современное - PHP: Hypertext Preprocesor, что более точно отображает его назначение.
Сфера примениени в данный момент в основном ограничевается WEB девелопингом, хотя последние версии имеют уже и консольную реализацию для написания системных скриптов, аля замена Perl. Однако он и разрабатывался специально именно для создания WEB проэктов, поэтому он имеет огромное кол-во присущех только ему возможностей и особенностей. В этом смысле нету больше ниодного похожего на PHP языка.
На данный момент выделяются две ветки PHP - PHP4 и PHP5. Основное их различие в версии движка, который они имеют в своей основе. В чём же само различие?
PHP4 в силу того, что имел старую версию Zend Engine не был в состоянии скольк либо серьёзно поддерживать ООП. Максимум что он мог, это поддержка классов, наледование. На этом его возможности исчерпывались.
PHP5 же имеет в своей основе новую версию Zend Engine 2.0, который является полностью ООП орентированным, что позволяет ему поддерживать практически все основные принципы ООП а так же была включена новая для PHP консрукция try {} catch {} для обработки ошибок, что не может не радовать.
Хочу сразу умерить пыл тех, кто думает, что PHP лёгкий для изучения... Увы, но реально как орех раскусить его с ходу могут люди, понимающие что такое программирование, обычно имевшие какой-то определённый опыт до PHP. Прочим же советую набратся терпения, читать литературу и пробовать. Чтение же документации обязательно всем на официальном сайте PHP, благо большая часть документации переведена на русский язык:
http://www.php.net/manual/ru/
Так же вообще, советую начать вот с этого:
http://phpfaq.ru/ - для начинающих прекрасное введение. К прочтению обязательно.
К прочтению обязательны все разделы до раздела "Справочник функций", в противном случае даже можете не задавать вопрос, всёравно вас отошлют туда, поскольку лучше мануала никто не объяснит. Мануал строили очень грамотные люди и непонять способен только дурак. Обращайтесь, если вы что-то не поняли уже после прочтения (всяк бывает :) )

Кстати, по этому мануалу очень многие обучаются PHP как по книге, и большая часть успешно.

Что же нам необходимо для работы с PHP? Минимум - WEB сервер Apache, сам РНР и текстовой редактор. Первое качается на http://www.apache.org , второе на http://www.php.net/downloads.php . Третье выбор вкуса, но я рекомендую один из самых лучших редакторов, создателями которого кстати являются росияне. К тому же для жителей СНГ регистрация бесплатна. http://www.ankord.com/ru/
Описаний как установить Apache + PHP просто немеренно, посему я тут выкладывать пока это не буду. Если уж очень плохо будет, тогда напишу.

Обычно с PHP все начинающие использую так же базу данных MySQL : http://dev.mysql.com . Она довольно проста в использовании и не имеет многих наворотов действительно крутых баз данных, но зато она быстрая и по большей части является намного более лучшим выбором для любого сайта, где нету сложной структуры и зависимостей (хотя лично я уже перехожу на более продвинутые продукты, PostgreSQL к примеру, но и проэкты соответственно становятся более сложными :) ).

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

Из книг посоветую прикупить что-нить из самоучителей от "Питера" или "BHV", и желательно как можно новее, поскольку пракически везде идут старые данные, а последнее время кое что поменялось, и это надо учитывать. Так что да поможет вам мануал, аминь!

Ниже ответы на наиболее частые вопросы, а так же камни преткновения многих начинающих.

1). Самая распространённая ошибка новичков является непонятки с register_globals. По большей части это вызвано тем, что в интернете очень много старого обучающего материала.
возмёи пример, вы вызываете ваш скрипт так: http://localhost/myscript.php?id=3
Правильно получить значение id так:
Код:

Код:
<?php
$myId = $_GET['id'];
echo $myID;
// выведет 3
?>


Доступ к данным при использовании метода POST, обычно используемого при отправке форм является аналогичным, за исключением того, что применяется массив $_POST

Тему прикрепил.
Отредактировано модератором: Daemon. Дата: 20.07.2006 13:58


Последний раз редактировалось _Psih 22.07.2005 19:05, всего редактировалось 3 раз(а).


Партнер
 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 12.12.2004
Откуда: РБ
_Psih писал(а):
Самая распространённая ошибка новичков является непонятки с register_globals

Да уж, достойное начало для фака! Может, лучше начать с того, что это, для чего, чем реализуется, сцылки на учебники и т.д. и т.п. Я как раз задумал в этом направлении кругозор расширять.


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
zomba
Ща сделаем :) Я караз ждал, пока кто-нить нужную идею подаст, а то не знал с чего начать :) Кстати, с register_globals парят мозги почти каждый день, посему и вписал :)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih http://phpfaq.ru/ надо ознакомиться обязательно
(возможно после его прочтения отпадёт даже желание изобретать велосипед)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


Последний раз редактировалось virus 26.11.2007 8:00, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
_Psih по личным причинам ненавижу кое-кого из авторов http://phpfaq.ru/
но что касается того как писать FAQ эти ребята профессионалы, и с их факом надо ознакомиться обязательно
(возможно после его прочтения отпадёт даже желание изобретать велосипед)

:)
надо будет глянуть, хотя если честно, вряд ли для себя я что-то новое прочитаю :) Да и php.net тож рулит :)

Добавлено спустя 7 минут, 52 секунды:
Начал читать этот http://phpfag.ru ... Блин, ребята молодцы, для ламеров и не очень понимающих суть самое то! Парням, написавшим это респект :) Всё, любого идиота с идиотским вопросом сперва туда, пусть читает, потом уже спрашиват. :) Добавляю ссылочку в FAQ.


 

Member
Статус: Не в сети
Регистрация: 23.06.2004
Народ, помогите : Делаю сайт на ПХП, а так как я его плохо знаю столкнулся с такой проблемой
У меня есть Шаблонная страница, и вроде всё нормально, но надо так чтобы на индексной странице
вверху была флэшка, а на всех остальных это был любой *jpg. Сами страницы вставляются в центр,
остальное шаблон...

_________________
Весь мир игра, а мы вней монстры...


Последний раз редактировалось Mutant-13 07.08.2005 18:47, всего редактировалось 2 раз(а).

 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Calgary HighLander писал(а):
PHP 4 + IIS 6.0 выдает ошибку по кууки, хотя на IIS они разоешены. Я не знаю уже что это может быть...

В таких случаях пишут ошибку целиком, причин может быть куча. Так что шибку в студию!

Mutant-13 писал(а):
Добавлено: 06.08.2005 8:37 Заголовок сообщения:

--------------------------------------------------------------------------------

Народ, помогите : Делаю сайт на ПХП, а так как я его плохо знаю столкнулся с такой проблемой
У меня есть Шаблонная страница, и вроде всё нормально, но надо так чтобы на индексной странице
вверху была флэшка, а на всех остальных это был любой *jpg. Сами страницы вставляются в центр,
остальное шаблон...

проверяй имя скрипта, $_SERVER['SCRIPT_NAME'] помоему, если имя скрипта index.php - вставляй флешку, в противном случае JPEG'ки


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
У меня возникла пролблема:
база:
id-----Name-----Full-----date
1-----Name1---Tetatet--2005
2-----Name2---Tetatet2--2005
3-----Name3---Tetatet3--2005
Таблица приблизительно такого содержания.
Не могли бы объяснить, как сформировать ссылки с именами Name1,Name2,Name3, ведущих на страници с полным текстом (Tetetet)... большое спасибо... мануалы прочитала, но вопрос остался... Знаю как формировать ссылки, а как объяснять шаблону какую новость брать - нет...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Всё просто, на странице, где у нас список новостей со ссылками на них делаем выборку новостей из базы, и строим линк типа:
<a href="domain.com/shownews.php?id=1">Name1</a>
<a href="domain.com/shownews.php?id=2">Name2</a>
и.т.д.,
при нажатии на ссылку просто делаем выборку по id и выводим новость.


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
_Psih
спасибо, а что значит выборка по ID;
Не $a=$_POST[id] - ???


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
$sql = "SELECT FROM table WHERE id = '".addslashes($_POST['id'])."'";
Я делаю это так, addslashes нужен для того, что бы не смогли хакнуть базу.
Да, обычно предшествует проверка является ли id числом.
Можно так же проверить сперва, есть ли такая запись в базе, но вообще если выборка будет пустой, значит нету. Вообщем это уже твоя задача обработать ошибку как надо :)


 

Member
Статус: Не в сети
Регистрация: 23.06.2004
Код:
НАЧАЛО....

                 
      <a href="indexs.php?go=foto"><img
      src="img/foto.jpg" alt="???? ??" width=150 height="21"
      border=0
      ></a><br>
                     
      <a href="indexs.php?go=video"><img
      src="img/Video.jpg" alt="??? ? ??" width=150 height="21"
      border=0
     ></a><br>


ТУТ РАЗНЫЙ ХТМЛ КОД...



 <? if($go == 'video')include("page/video.htm");
                      if($go == 'foto') include("page/foto.htm");
                      else include("page/index.php")  ;?>






КОНЕЦ



Жалуется:Notice: Undefined variable: go in z:\home\localhost\www\indexs.php on line 119

Notice: Undefined variable: go in z:\home\localhost\www\indexs.php on line 120

Я в ПХП новичок, подскажите как исправить...

_________________
Весь мир игра, а мы вней монстры...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Код:
<?php
if (isset($go))
{
    switch ($go)
    {
        case 'foto'  : include("page/foto.htm");  break;
        case 'video' : include("page/video.htm"); break;
    }
}
else
{
    include("page/index.php");
}
?>


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
_Psih
Большое тебе спасибо. Не смогла ответить сразу, прости если обидела...
У меня появилось еще пару вопросов, надеюсь ответите:
1. Есть база, как определить и вывести значение максимального ID (auto ink)
2. На вашем сайте заметила интересный способ отображения новостей. Точнее такой способ присутствует на 70% сайтов, которые я посещаю. А именно: Каждая новая новость имеет у вас вид, как www.overclockers.ru/hardnews/19689.shtml. У меня при использовании базы получается выводить только как localhost\news?id=123. Тоесть обязательно присутствует ?id=ID НОВОСТИ. Вопрос, как этого избежать и сделать как у цивилизованных людей.
3. Собираюсь делать гостевую на базе, а не на файлах. Столкнулась с проблемой: Заголовки имени, времени и пр. отображаются корректно, а текст вводимый в textarea нет. У меня стоит ограничение на все в 250 символов - VarChar(250).
Прекрасно понимаю, что ответы могут быть 1000 и в 10000 раз больше и varchar тут не подходит. Вопрос, как заставить textarea отображаться корректно.
4. Опять к новостям... Есть id, заголовок и сам текст(вопрос 3).
на странице новости все они должны отображаться по 10 штук. То есть если новостей более 10, то появляется ссылка на вторую страницу, отображающую с 11 новости до 20. и так до бесконечности. Помогите... Порядок id может быть не постоянным (при удалении новости) - 1,2,3,5,8,12,659 ...
5. Есть 4 флага(name=one,name=two...). Cкрипт должен принять их значения $one=$_POST[one];... и сформировать переменную следующего класса: $one / $two / $three / $four . Проблема в том, чо неизвестно будет ли переменная пуста или нет и между ними должен быть только один слеш (/)...
Огромное спасибо...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
ElMory
1). Элементарно, выполнить запрос к базе:
Код:
SELECT MAX(id_field_name) FROM table;


2). Тут посложнее будет, в основном это используется либо mod_rewrite (тут всё довольно сложно), либо просто есть физические фаилы, расположенные в нужных папках. Каждая новость - самостоятельная HTML страница.

3). Текст надо храниьть не в Varchar, а в TEXT. Их 4 вида:
TINYTEXT - до 255 символов
TEXT - до 65 килобайт текста
MEDIUMTEXT - до 16 мегабайт текста
LONGTEXT - до 4 гигабайтов текста
http://dev.mysql.com/doc/mysql/ru/stora ... ments.html
Самое целесобразное я считаю это тип TEXT.

4). Тоже довольно просто, только требуется немного смекалки и знания SQL. Ограничить выборку можно с помощью SQL оператора LIMIT:
Код:
LIMIT с_какой_позиции_выбирать, сколько_выбрать

Тут есть как его использовать, поиском по странице пройдитесь: http://dev.mysql.com/doc/mysql/ru/select.html

5). Не понял немного. Приведи пример, или задачу, которую надо сделать :)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
mod_rewrite (тут всё довольно сложно)

Сложно если не стараться понять, а если пользоваться документацией по назначению то всё давольно просто...

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
_Psih
Сенькью, сенькью, сенькью...
5.
Поясняю. Код:
<form путь к скрипту и тд и тп.><input type=sheckbox name=one value='one'>
<input type=sheckbox name=one value=two>
<input type=sheckbox name=one value=three>
<input type=sheckbox name=one value=four>
</form>
Скрипт забирает их значения и выводит строчку. 1 если отметить one и two: "one / two". 2 если two и four: "two/four".
Проще говоря, между значениями должен ставить "/" и этих слешей между ними не более одного.
4.
вот как узнать с какой позиции, если id новости не постоянен: 1,2,5,9,124,54545 - ?

mod_rewrite (тут всё довольно сложно)
Я девушка боевая - к трудностям привыкшая, баумановка не пту...
И можно поподробней немножко?


 

Member
Статус: Не в сети
Регистрация: 23.06.2004
_Psih

Цитата:
проверяй имя скрипта, $_SERVER['SCRIPT_NAME'] помоему, если имя скрипта index.php - вставляй флешку, в противном случае JPEG'ки


Чего-то не получается, если не трудно по подробнее

_________________
Весь мир игра, а мы вней монстры...


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
Mutant-13
поставь на главной стр. переменную типа $info=homepage;
а на шаблоне проверяй if ($info==homepage) {вставляешь флешку} else {echo"<img src= >";};
Устроит?


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
ElMory писал(а):
_Psih
Сенькью, сенькью, сенькью...
5.
Поясняю. Код:
<form путь к скрипту и тд и тп.><input type=sheckbox name=one value='one'>
<input type=sheckbox name=one value=two>
<input type=sheckbox name=one value=three>
<input type=sheckbox name=one value=four>
</form>
Скрипт забирает их значения и выводит строчку. 1 если отметить one и two: "one / two". 2 если two и four: "two/four".
Проще говоря, между значениями должен ставить "/" и этих слешей между ними не более одного.
4.
вот как узнать с какой позиции, если id новости не постоянен: 1,2,5,9,124,54545 - ?

mod_rewrite (тут всё довольно сложно)
Я девушка боевая - к трудностям привыкшая, баумановка не пту...
И можно поподробней немножко?

по поводу чекбоксов..., у них должны быть разные имена, иначе высылается значение последнего, так что лучше сделать так:
<form ...>
<input type="checkbox" name="mycheckbox1" unchecked>
<input type="checkbox" name="mycheckbox2" unchecked>
<input type="checkbox" name="mycheckbox3" unchecked>
<input type="checkbox" name="mycheckbox4" unchecked>
</form>
а потом циклом проверять, установленны ли переменные mycheckbox1... mycheckbox4 и соответственно делать IF, генерирующий строку.

А новости, постраничный вывод. Сперва выбираем LIMIT 0, 10 к примеру, при переходе на 2-ю страницу делаем выборку LIMIT 10, 10, след. страница LIMIT 20, 10 и.т.д. Так же можно посчитать общее кол-во записей ( SELECT count(anyField) FROM table), отсюда вычислить кол-во страниц которые есть, и сгенерировать ссылки на соответствующие страницы.

Ну по mod_rewrite советую просто поискать информацию в и-нете. Кратко говоря - эта технология позволяет делать ссылки типа http://domain.com/news/today/15/ , а в реальности это единственный скрипт, index.php на который сервер перенаправляет все запросы :) Вообщем смотри, разбирайся, я сам не сразу въехал :) Будут конкретные вопросы - спрашивай.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 1 из 641  2  3  4  5 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan