В этом уроке мы будем рассматривать простой способ реализовать новости на вашем сайте, используя только 3 различных сценария PHP.
Давайте начнем с продумывания того, что именно мы должны иметь в модуле новостей. Очевидно, нам понадобится скрипт для извлечения новостей и вывода их на главной странице. Нам также понадобится скрипт, для возможности добавления новостей, и, наконец, еще один, чтобы редактировать или удалять новости.
Начнем мы с создания необходимых таблиц в БД для новостей. Каждая новость будет включать в себя заголовок, описание, имя автора, e-mail автора, дату и время, а так же уникальный идентификационный номер, чтобы идентифицировать каждую новость. Теперь мы готовы создать таблицы, используя следующий код:
Таблицы созданы, теперь мы можем перейти к реальному кодингу.
Теперь вы можете запустить редактор кода и создать новую страницу PHP. Страница должна быть пустой, так что давайте заполним ее. Мы знаем, что нужна будет нужна форма для сбора данных, и поле для заполнения каждого столбца. Вот то, что я придумал:
Теперь сохраните это как add.php и загрузите его в вашем браузере. Вы должны увидеть все поля, но если вы нажмете добавить, ничего не происходит. Это потому, что не какой код не выполняет сценарий, чтобы использовать информацию, так что это просто перезагрузка формы. Скрытое поле в форме очень важно, и мы будем рассматривать это в следующем шаге. Вы, возможно, заметили, что переменная $PHP_SELF, все это делает, что-бы, когда вы нажмете добавить, будет перезагрузка страницы с текущей информацией. Теперь давайте начнем кодирование.
Теперь мы можем на самом деле начать кодить. Во-первых, мы должны создать сценарий который что-то делает, когда форма была отправлена. Помните, скрытое поле? Это где он вступает в игру. Мы можем использовать функцию isset(), чтобы проверить, было ли для скрытой переменной поле установлено или нет, и если да, то запустить скрипт. Таким образом, мы напишем следующее:
Теперь для фактического сценария, мы создадим подключение к базе данных:
Этот скрипт подключается к базе данных и выбирает ее, но если не удается подключиться, он будет выводить сообщение об ошибке. Символ @ просто подавляет сообщения об ошибке по умолчанию, поэтому мы можем объявить наш собственный. Теперь, когда мы соединены, можно добавить данные в базу данных в качестве новой строки. Следующий код будет делать это безболезненно:
Теперь это создаст новую строку в новостях. Теперь мы можем посмотреть на окончательный скрипт.
Вот так, должен выглядеть ваш add.php:
Мы должны начать с получения всех новостей из базы данных, а затем создать ссылку редактировать и удалить рядом с каждым пунктом для того, чтобы выполнить требуемое действие. Во-первых, мы должны объявить переменную, чтобы сообщить нам о выполняемым действие. Мы должны сделать основной контур вроде такого:
Давайте начнем с вывода всех новостей. Мы должны сделать подключение к базе данных (например, как в add.php) и выбрать все строки. Код будет выглядеть примерно так:
Это выбирает все новости из базы данных, теперь мы должны вывести это на странице.
Давайте начнем с вывода всех новостей. Мы должны сделать подключение к базе данных (например, как в add.php) и выбрать все строки. Код будет выглядеть примерно так:
Этот сценарий принимает результаты запроса, и выводит их на странице, while() создает цикл, пока есть не больше строк для выборки. mysql_fetch_object() принимает данные и обрабатывает их в форме для печати. Оператор -> в основном берет этот столбец из строки, которой в настоящее время. Так что теперь у нас есть все новости, поданных на странице с редактированием и удалением… Начнем редактировать эти новости.
Эта часть сценария будет появляться, когда $a равна 'Edit'. За $ID были отправлены со ссылкой, так что все мы должны сделать сейчас, это принесет другие данные, которые связанные с этим ID. Вот как это выглядит:
Это выглядит очень похоже со страницей add.php, на этот раз, хотя, мы ставим значения, сохраненные в базе данных в поля для редактирования. Вы также можете заметить, что мы добавили переменную обновления к классу редактирования, это так, мы можем сказать, скрипт, который мы фактически обновляем вместо повторной печати формы. Обновление будет выглядеть следующим образом:
Обратите внимание, здесь, заявление SQL, приходит после SET. Это вызывает много путаницы у многих программистов. Это завершает Редактирование части новостей, теперь давайте посмотрим на удаление новостей.
Удаление новостей даже легче, чем редактирование, или даже создание новости. Функция удаления является одним MySQL запросом, который удаляет новость, где ID равно ID новостей. Вот как это выглядит:
Там, что завершает весь сценарий edit.php. Теперь вы можете сохранить и запустить его для редактирования новости. Полный сценарий может быть виден ниже.
Вот, так:
Верьте или нет, но вы уже написали этот модуль, когда вы написали редактирование/edit.php. Код в основном такой же без «редактировать | удалить „ссылки. Здесь в полном виде:
Теперь вы узнали, как создать модуль новостей, то есть: добавление, редактирование, удаление, а так же извличение из базы данных и их вывод. Этот модуль так-же может быть реализован во многих других приложениях, например: полноценная система управления сайтом.
Давайте начнем с продумывания того, что именно мы должны иметь в модуле новостей. Очевидно, нам понадобится скрипт для извлечения новостей и вывода их на главной странице. Нам также понадобится скрипт, для возможности добавления новостей, и, наконец, еще один, чтобы редактировать или удалять новости.
1.1 Создание MySQL таблиц
Начнем мы с создания необходимых таблиц в БД для новостей. Каждая новость будет включать в себя заголовок, описание, имя автора, e-mail автора, дату и время, а так же уникальный идентификационный номер, чтобы идентифицировать каждую новость. Теперь мы готовы создать таблицы, используя следующий код:
CREATE TABLE news (
id smallint(5) unsigned NOT NULL auto_increment,
headline text NOT NULL,
story text NOT NULL,
name varchar(255),
email varchar(255),
timestamp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PRIMARY KEY (id)
);
Таблицы созданы, теперь мы можем перейти к реальному кодингу.
2.1 Добавление новости в базу данных: Создание формы
Теперь вы можете запустить редактор кода и создать новую страницу PHP. Страница должна быть пустой, так что давайте заполним ее. Мы знаем, что нужна будет нужна форма для сбора данных, и поле для заполнения каждого столбца. Вот то, что я придумал:
<form name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Name</td>
<td><input name="name" type="text" id="name"></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Headline</td>
<td><input name="headline" type="text" id="headline"></td>
</tr>
<tr>
<td>News Story</td>
<td><textarea name="story" id="story"></textarea></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="hiddenField" type="hidden" value="add_n">
<input name="add" type="submit" id="add" value="Submit">
</div></td>
</tr>
</table>
</form>
Теперь сохраните это как add.php и загрузите его в вашем браузере. Вы должны увидеть все поля, но если вы нажмете добавить, ничего не происходит. Это потому, что не какой код не выполняет сценарий, чтобы использовать информацию, так что это просто перезагрузка формы. Скрытое поле в форме очень важно, и мы будем рассматривать это в следующем шаге. Вы, возможно, заметили, что переменная $PHP_SELF, все это делает, что-бы, когда вы нажмете добавить, будет перезагрузка страницы с текущей информацией. Теперь давайте начнем кодирование.
2.2 Добавление новости в базу данных: Добавление новости
Теперь мы можем на самом деле начать кодить. Во-первых, мы должны создать сценарий который что-то делает, когда форма была отправлена. Помните, скрытое поле? Это где он вступает в игру. Мы можем использовать функцию isset(), чтобы проверить, было ли для скрытой переменной поле установлено или нет, и если да, то запустить скрипт. Таким образом, мы напишем следующее:
<?
if(isset($add_n){
//Run the script
}else{
//Load the form
}
?>
Теперь для фактического сценария, мы создадим подключение к базе данных:
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
Этот скрипт подключается к базе данных и выбирает ее, но если не удается подключиться, он будет выводить сообщение об ошибке. Символ @ просто подавляет сообщения об ошибке по умолчанию, поэтому мы можем объявить наш собственный. Теперь, когда мы соединены, можно добавить данные в базу данных в качестве новой строки. Следующий код будет делать это безболезненно:
$query = "INSERT INTO news(name, email, headline, story, timestamp)VALUES('$name', '$email', '$headline', '$story', NOW())";
$result = @mysql_query($query);
if(!$result){
echo('Error adding news: ' . $mysql_error());
exit();
}else{
mysql_close($link);
echo('Success!<br><a href="add.php">Click here</a> to add more news.<br><a href="edit.php">Click here</a> to edit news.<br><a href="../index.php">Click here</a> to return to the main page.');
}
Теперь это создаст новую строку в новостях. Теперь мы можем посмотреть на окончательный скрипт.
2.3 Добавление новости в базу данных: Финал
Вот так, должен выглядеть ваш add.php:
<html>
<head>
<title>Add News</title>
<meta http-equiv="Content-Type" content="text/html; charset="iso"-8859-1">
</head>
<body>
<?
if(isset($add_n)){
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "INSERT INTO news(name, email, headline, story, timestamp)VALUES('$name', '$email', '$headline', '$story', NOW())";
$result = @mysql_query($query);
if(!$result){
echo('Error adding news: ' . $mysql_error());
exit();
}else{
mysql_close($link);
echo('Success!<br><a href="add.php">Click here</a> to add more news.<br><a href="edit.php">Click here</a> to edit news.<br><a href="../index.php">Click here</a> to return to the main page.');
}
}else{
?>
<form name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Name</td>
<td><input name="name" type="text" id="name"></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Headline</td>
<td><input name="headline" type="text" id="headline"></td>
</tr>
<tr>
<td>News Story</td>
<td><textarea name="story" id="story"></textarea></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="hiddenField" type="hidden" value="add_n">
<input name="add" type="submit" id="add" value="Submit">
</div></td>
</tr>
</table>
</form>
<? } ?>
</body>
</html>
3.1 Редактирование/Удаление новостей: Вывод элементов новостей на странице
Мы должны начать с получения всех новостей из базы данных, а затем создать ссылку редактировать и удалить рядом с каждым пунктом для того, чтобы выполнить требуемое действие. Во-первых, мы должны объявить переменную, чтобы сообщить нам о выполняемым действие. Мы должны сделать основной контур вроде такого:
<?
if(!isset($a){
// Print news
}elseif($a == 'edit'){
// Perform edit procedures
}elseif($a == 'delete'){
// Delete the news item
}
?>
Давайте начнем с вывода всех новостей. Мы должны сделать подключение к базе данных (например, как в add.php) и выбрать все строки. Код будет выглядеть примерно так:
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "SELECT id, headline, timestamp FROM news ORDER BY timestamp DESC";
$result = @mysql_query($query);
if(!$result){
echo('Error selecting news: ' . $mysql_error());
exit();
}
Это выбирает все новости из базы данных, теперь мы должны вывести это на странице.
Давайте начнем с вывода всех новостей. Мы должны сделать подключение к базе данных (например, как в add.php) и выбрать все строки. Код будет выглядеть примерно так:
if (mysql_num_rows($result) > 0){
while($row = mysql_fetch_object($result))
{
?>
<font size="-1"><b><? echo $row->headling; ?></b> <i><? echo formatDate($row->timestamp); ?></i></font>
<br>
<font size="-2"><a href="edit.php?a=edit&id=<? echo $row->id; ?>">edit</a> |
<a href="edit.php?a=delete&id=<? echo $row->id; ?>">delete</a></font>
<?
}else{
?>
<font size="-2">No news in the database</font>
<? }
mysql_close($link);
?>
Этот сценарий принимает результаты запроса, и выводит их на странице, while() создает цикл, пока есть не больше строк для выборки. mysql_fetch_object() принимает данные и обрабатывает их в форме для печати. Оператор -> в основном берет этот столбец из строки, которой в настоящее время. Так что теперь у нас есть все новости, поданных на странице с редактированием и удалением… Начнем редактировать эти новости.
3.2 Редактирование/Удаление новостей: Редактирование новостей
Эта часть сценария будет появляться, когда $a равна 'Edit'. За $ID были отправлены со ссылкой, так что все мы должны сделать сейчас, это принесет другие данные, которые связанные с этим ID. Вот как это выглядит:
if(!isset($update)){
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "SELECT name, email, headline, story FROM news WHERE id = '$id'";
$result = @mysql_query($query);
if(!$result){
echo('Error selecting news item: ' . $mysql_error());
exit();
}
mysql_fetch_object($result);
?>
<form name="form1" method="post" action="edit.php?a=edit&id=<? echo($id) ?>&update=1">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Name</td>
<td><input name="name" type="text" id="name" value="<? echo($row->name) ?>"></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email" value="<? echo($row->email) ?>"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Headline</td>
<td><input name="headline" type="text" id="headline" value="<? echo($row->headline) ?>"></td>
</tr>
<tr>
<td>News Story</td>
<td><textarea name="story" id="story" value="<? echo($row->story) ?>"></textarea></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="hiddenField" type="hidden" value="update">
<input name="add" type="submit" id="add" value="Update">
</div></td>
</tr>
</table>
</form>
<?
}
Это выглядит очень похоже со страницей add.php, на этот раз, хотя, мы ставим значения, сохраненные в базе данных в поля для редактирования. Вы также можете заметить, что мы добавили переменную обновления к классу редактирования, это так, мы можем сказать, скрипт, который мы фактически обновляем вместо повторной печати формы. Обновление будет выглядеть следующим образом:
else{
$query = "UPDATE news SET name = '$name, email = '$email', headline = '$headline', story = '$story', timestamp = NOW() WHERE id = '$id';
$result = @mysql_query($query);
if(!$result){
echo('Error updating news item: ' . $mysql_error());
exit();
}else{
mysql_close($link);
echo('Update successful!');
}
}
Обратите внимание, здесь, заявление SQL, приходит после SET. Это вызывает много путаницы у многих программистов. Это завершает Редактирование части новостей, теперь давайте посмотрим на удаление новостей.
3.3 Редактирование/Удаление новостей: Удаление новостей
Удаление новостей даже легче, чем редактирование, или даже создание новости. Функция удаления является одним MySQL запросом, который удаляет новость, где ID равно ID новостей. Вот как это выглядит:
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "DELETE FROM news WHERE id = '$id'";
$result = @mysql_query($query);
if(!$result){
echo('Error deleteing news item: ' . $mysql_error());
exit();
}
mysql_close($link);
echo('News item deleted.');
?>
Там, что завершает весь сценарий edit.php. Теперь вы можете сохранить и запустить его для редактирования новости. Полный сценарий может быть виден ниже.
3.3 Редактирование/Удаление новостей: Финал
Вот, так:
<html>
<head>
<title>Edit News</title>
<meta http-equiv="Content-Type" content="text/html; charset="iso"-8859-1">
</head>
<body>
<?
if(!isset($a){
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "SELECT id, headline, timestamp FROM news ORDER BY timestamp DESC";
$result = @mysql_query($query);
if(!$result){
echo('Error selecting news: ' . $mysql_error());
exit();
}
if (mysql_num_rows($result) > 0){
while($row = mysql_fetch_object($result))
{
?>
<font size="-1"><b><? echo $row->headling; ?></b> <i><? echo formatDate($row->timestamp); ?></i></font>
<br>
<font size="-2"><a href="edit.php?a=edit&id=<? echo $row->id; ?>">edit</a> |
<a href="edit.php?a=delete&id=<? echo $row->id; ?>">delete</a></font>
<?
}else{
?>
<font size="-2">No news in the database</font>
<? }
mysql_close($link);
}elseif($a == 'edit'){
if(!isset($update)){
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "SELECT name, email, headline, story FROM news WHERE id = '$id'";
$result = @mysql_query($query);
if(!$result){
echo('Error selecting news item: ' . $mysql_error());
exit();
}
mysql_fetch_object($result);
?>
<form name="form1" method="post" action="edit.php?a=edit&id=<? echo($id) ?>&update=1">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Name</td>
<td><input name="name" type="text" id="name" value="<? echo($row->name) ?>"></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email" value="<? echo($row->email) ?>"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Headline</td>
<td><input name="headline" type="text" id="headline" value="<? echo($row->headline) ?>"></td>
</tr>
<tr>
<td>News Story</td>
<td><textarea name="story" id="story" value="<? echo($row->story) ?>"></textarea></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="hiddenField" type="hidden" value="update">
<input name="add" type="submit" id="add" value="Update">
</div></td>
</tr>
</table>
</form>
<?
}else{
$query = "UPDATE news SET name = '$name, email = '$email', headline = '$headline', story = '$story', timestamp = NOW() WHERE id = '$id';
$result = @mysql_query($query);
if(!$result){
echo('Error updating news item: ' . $mysql_error());
exit();
}else{
mysql_close($link);
echo('Update successful!');
}
}elseif($a == 'delete'){
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . $mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . $mysql_error());
exit();
}
$query = "DELETE FROM news WHERE id = '$id'";
$result = @mysql_query($query);
if(!$result){
echo('Error deleteing news item: ' . $mysql_error());
exit();
}
mysql_close($link);
echo('News item deleted.');
} ?>
</body>
</html>
4.1 Просмотр новости: просмотр новости на Главной странице
Верьте или нет, но вы уже написали этот модуль, когда вы написали редактирование/edit.php. Код в основном такой же без «редактировать | удалить „ссылки. Здесь в полном виде:
<html>
<head>
<title>View News</title>
<meta http-equiv="Content-Type" content="text/html; charset="iso"-8859-1">
</head>
<body>
<?
$link = @mysql_connect(localhost, username, password);
if(!$link){
echo('Error connecting to the database: ' . mysql_error());
exit();
}
$db = @mysql_selectdb('mydatabase');
if(!$db){
echo('Error selecting database: ' . mysql_error());
exit();
}
$query = "SELECT id, headline, timestamp FROM news ORDER BY timestamp DESC";
$result = @mysql_query($query);
if(!$result){
echo('Error selecting news: ' . mysql_error());
exit();
}
if (mysql_num_rows($result) > 0){
while($row = mysql_fetch_object($result))
{
?>
<font size="-1"><b><? echo $row->headling; ?></b> <i><? echo formatDate($row->timestamp); ?></i></font>
<?
}
}else{
?>
<font size="-2">No news in the database</font>
<? }
mysql_close($link); ?>
</body>
</html>
5.1 Итоги
Теперь вы узнали, как создать модуль новостей, то есть: добавление, редактирование, удаление, а так же извличение из базы данных и их вывод. Этот модуль так-же может быть реализован во многих других приложениях, например: полноценная система управления сайтом.
Автор: seetch | Михаил Нечипуренко
Rastishka
Блин, я аж на дату поста посмотрел, вдруг статья не из этого века…
merkushin
Аналогично.
Я даже беглым просмотром заметил использование коротких тегов, которые уже не поддерживаются и расширения mysql_*, смешивание представления и логики, register_globals.
Такое нельзя показывать начинающим. Боюсь вчитываться.
theRavel
В какой версии короткие теги не поддерживаются?
SerafimArts
Ребята перегнули немного, просто отключены по-умолчанию везде, начиная с какой-то очень древней версии. В последней версии вырезали только asp и script способы (https://wiki.php.net/rfc/remove_alternative_php_tags).
Но использование таких тегов (укороченных) не только противоречит всем существующим популярным стандартам, но и может доставить очень много проблем: https://ru.wikipedia.org/wiki/XML
Alexufo
ну прям очень много проблем с xml. Есть вообще кто с этим сталкивался? Что там не получается?) Заголовок xml интерпретируется чтоли и все?) И из-за этого совсем не юзать короткие теги?
SerafimArts
А этого недостаточно? Ну помимо вышеуказанных нарушений стандартов (ну хотя бы: http://www.php-fig.org/psr/psr-1/ru/) и принципиальной непереносимости кода из-за трёх буковок.
Alexufo
Много говорят об xml о ужас, но пока никто лично, судя по всему, никто не сталкивался. Что там такого нерешаемого я не понимаю. Заголовок xml является строкой и оформляется как строка, если не хочется отдавать его через header().
Что касается стандарта я за, только не стандарт ради стандарта. А то мы теряем смысл. Не ужтоль так важно вбивать php после <? из за страха перед xml. Если сообщество требует — нужно писать. Если вы выступаете в общественном проекте. А если свой ну… ну ладно ну как припрет так сразу search and replace и работаем дальше.
Просто у меня работает простая логика — короче = проще.
SerafimArts
Важно потому, что подобное можно позволить лишь на персональной VDS поднятой для сугубо персональных нужд, которые никому потом никогда не будешь показывать. Ну т.е. как троллейбус из буханки — можно, но совершенно бессмысленно, когда любая ide (и наверняка многие популярные текстовые редакторы) сама проставляет всё нужное или на автокомплите просто висит.
P.S. Честно, лично я сталкивался с этой проблемой (в xml), да, давно, когда слабо понимал язык, если не путаю — при генерации sitemap, именно по-этому так и привязался к подобной проблеме, т.к. это реально возможно на практике. Теперь, уже с опытом понятно что подобные стандарты нужны не только ради стандартов. И пресловутые шорт-теги, и опускание закрывающего "?>", и отсутствие bom в utf-8 файлах, и даже способ именования классов\констант\методов\проч. — это всё важно, даже когда кажется что это просто излишняя педантичность. Сам прошёл через некоторую часть граблей, описанных в стандарте и желаю никому не наступать на подобное.
Более того — в чём смысл каждый раз менять стилистику? Приходишь на работу — пишешь PSR, приходишь домой — пишешь отсебятину, решил опубликовать — приходится всё переписывать, т.к. автоформаттер далеко не всё умеет выправлять. Просто взять в привычку писать правильно и подобных «переусложнений», включая обязательные «public» именования видимости даже не замечаешь. Более того — даже phpdoc аннотации на автомате уже пишутся, благо шторм их сам автокомпилитит после слеша и двойной звёздочки.
Alexufo
яж совсем не против PSR :-)
symbix
Да чего тут обсуждать? Первая строчка <?php вставляется автоматически IDE или редактором, а больше нигде и не должно быть надо — см. в том же psr-1 про side effects.
merkushin
Прошу прощения, они, действительно, до сих пор не выпилены. Но их использование нежелательно (по-моему, их уже довольно давно обещают выпилить-таки). Ну, и PSR их тоже не приветствует, мягко говоря.
Alexufo
тег <? по умолчанию включен в php 5.6, (пробовал в консоли сейчас со скаченного дистрибутива) а с 5.4 запись <?= стала доступна всегда.
Alexufo
вру. эт в консоли значит так, а в php.ini short_open_tag = Off но <?= все равно доступна
SerafimArts
В консоли тоже отключён. Предлагаю сбросить php.ini на дефолтный и проверить ещё раз. Должно быть так вроде такого (только что проверил):
Ниже 5.5 у меня в наличии, увы, нет, но смысла проверять на неподдерживаемых версиях думаю не много.
Alexufo
да, я php.ini вобще и не подключал — без него работает :-) то что <?= в стандарте это уже многое.
zelenin
настройка short tags отключена по умолчанию и влияет только на <?
<?= работает всегда, независимо от настроек. (5.4+)
Alexufo
да. Я просто нераскоменчивал php.ini, а если нераскоменчивать то <? работает.
zelenin
в 5.4+ по умолчанию НЕ работает.
Alexufo
да я про это. где обманулся
ilfate
На фоне релиза PHP7 "@mysql_connect" выглядит особенно забавно! :)
Но я не стал бы критиковать автора, все с чего-то начинали. И я бы свой код многалетней давности не хотел бы тут показывать. Жаль что парня заминусуют…
merkushin
Предполагаю, что автор сам новичок и учится по самоучителям десятилетней давности.
Rastishka
Если дата рождения у автора выставлена правильно, предлагаю его хотя бы не минусить.
romy4
Автор хотя бы сменил подпись с разработчика на что-нибудь типа noobie. А то за разработчика с таким кодом по головке не погладят.
Delphinum
Интересный способ защититься от слива кармы )
Skull
Вспомнил детство, прослезился.
edogs
Спасибо, поностальгировали.
tvolf
А вот интересно. mysql_selectdb — есть такая функция в PHP? Я знаю только о mysql_select_db (со вторым знаком подчеркивания).
izac
Верните мой 2000
markoffko
Автор как раз 2000 года рождения.
myrrec
Ну, не надо всех судить по году рождения. Я, как ни странно, тоже 2000 года рождения, но, в отличие от автора, так не пишу, смешивая и PHP и HTML в одном файле.
mmjurov
Сегодня пятница?
Scat
Начинание хорошее, но впереди море работы. Сейчас такой формат написания кода не актуален, подобных статей в интернете огромное количество, так что это уже «не формат» для хабры.
Если этим будешь заниматься дальше, то посмотри в сторону MVC и фреймворков вроде Symfony. На первый взгляд будет казаться, что ничего непонятно, но со временем поймешь, что это реально удобнее.
Так же посмотри в сторону frontend фреймворков для создания интерфейсов и как их связывать с backend.
И обнови PHP у себя на рабочей тачке :) А то пользуешься функциями, которые уже не поддерживатюся
izac
Во 1, до 7 mysql_connect ешё поддерживается. Во 2 почему Symfony? почему не CI, ZF, Laravel?
SerafimArts
Кидается депрекейтед-ошибками — можно уже считать что не поддерживается, просто дали время подправить код и «не поддерживать» в нём тоже.
По поводу второго, я лично против Symfony для новичка, этот фрейм подойдёт любителям очень хорошей абстракции (излишней иногда) и качества кода в целом. Идеальный вариант, по-моему — это Laravel версии 4.2. Именно 4-ки, т.к. 5+ довольно сильно выросла и поменяла идеологию подхода к разработке — DI вместо «фасадов», что может затруднить понимание основ MVC.
Delphinum
Эпично )
ddem
Вы дочитали?)
thunderspb
Скорее узнали как НЕ надо создавать модуль новостей
AlexLeonov
Уберите это с хабра!
medved6216
Как «ЭТО» могли пропустить из песочницы?!
seetch, изучите для начала основы ООП или функционального программирование.
k0ldbl00d
Фреймворки? Не, не слышал!
duke_nu
Да ладно вам господа, для изучения может и сойдет. Единственное, копипастить надо было из книжки, где пример с валидацией переменных )
AlexGx
Сначала подумал что выбило статью из 2006 года. Печаль-беда(((
BlessMaster
Поздравим исследовательский коллектив: эксперимент по крионированию с последующей разморозкой завершён успешно.
http://www.dmxzone.com/go/4114/creating-a-news-module-using-php-and-mysql/
Suvitruf
2002 год…
antoo
При этом топик даже не оформлен как перевод, да и авторство в конце статьи ТС присвоил себе. Вот даже чисто такое поведение достойно минуса, не говоря уже об актуальности и качестве самой статьи.
coylOne
Шедевр! =) Это как Пахом на битве экстрасенсов!
BusteR27
Пожалуйста, уберите это в черновики перед уходом в школу