Контакты

Для связи с нами можно использовать:
irc://irc.chatnet.ru:#gfs
icq://546460
email://cobalt[@]gfs-team.ru

Все материалы предоставлены только с ознакомительной целью
ГлавнаяСтатьиКодингПишем guestbook
© Cobalt 17.05.2006 статья не оптимизирована

 Написать гостевуху просто как два пальца об асфальт. Как ты наверно уже догадался
писать будем на великом и могучем (т.е. на PHP). Наша маленькая тулуза будет
сохранять сообщения от пользователей в базу данных (для этого мы заюзаем MySQL),
и позволять пользователю с ником Admin удалять непонравившиеся посты. Как
видешь сложного ни чего не будет.

 Для начала необходимо определиться какие будут храниться данные в базе. После
не долгого размышления не сложно догадатьсмя что понадобиться нам три поля. А
именно: дата, имя юзера и собственно сам текст. Все это мы успешно поместим
в одной таблице, которую назовем book. Кроме этих трех полей нам понядобиться
служебное поле ID с идентификатором поста. Это поле будет иметь свойство
AUTO_INCREMENT. Т.е. оно автоматически будет каждый раз увеличивать свое значение
на единицу.
 И так, создадим пустую таблицу в БД. Сделать это необходимо следующей командой:
 
 CREATE TABLE book (ID     INT(22)   AUTO_INCREMENT,
                    PDate  DATE,
                    Nick   VARCHAR(22),
                    Post   TEXT);
                    
 Созданая таким образом таблица будет оправдывать себя лишь только в том случае
если у нас очень маленькая гостевуха и в ней мало постов. А все по тому что
мы не указали тут ключей. Система ключей и индексов позволяет многократно
оптимизировать структуру БД. Выборка из таблицы с индексами осуществляется не
в пример быстрее. Во вторых, я думаю, тебе не хочется чтобы юзеры начали флудить
в твоем творении. Необходимо как-то их ограничить. Например запретить
повторяющиеся посты и ограничить их длинну. Поэтому давайте немного изменим наш
запрос:

 CREATE TABLE book (ID     INT(22)   AUTO_INCREMENT PRIMARY KEY,
                    PDate  DATE,
                    Nick   VARCHAR(22),
                    Post   VARCHAR(255) UNIQUE);
                    
 Теперь представь себе как должен выглядеть пользовательский интерфейс твоей
guestbook, и напиши его на HTML. Получиться у тебя (если упростить все и убрать
дизайн) что-то вроде этого:

 <form action="" method="POST">
 <table align="center">
  <tr>
   <td> 12.01.2006 Вася Пупкин: </td>
  </tr>
  <tr>
   <td> Клевый сегодня день! </td>
  </tr>
  <tr>
   <td> Ник: <input type="text" name="nick" value=""></td>
  </tr>
  <tr>
   <td><textarea name="post"></textarea></td>
  </tr>
  <tr>
   <td align="center"><input type="submit" name="b_post" value="Отправить"></td>
  </tr>
 </table>
 </form>

 Дальше надо заменить повторяющиеся участки кода на PHP. Для этого сначала выберем
все записи из базы данных.

 $connect=mysql_connect($host, $user, $pass); // замени на твои значения
 mysql_select_db($db);                        // $db - бд где наша таблица
 $sql="SELECT ID,                             //
              Nick,                           //
              Post,                           //
              DATE_FORMAT(PDate,'%d.%m.%Y') as PDate
         FROM book                            // собственно запрос
        ORDER BY PDate";                      //
 $res=mysql_query($sql);                      // выполняем запрос
 $i=0;
 while($m=mysql_fetch_assoc($res)){           // пока есть строки в таблице
    $mass[$i]=$m;                             // добавляем строку в массив
    $i++;
 }
 mysql_close($connect);
 
 В итоге в переменной $mass у нас будет массив со всеми постами. Как ты наверное
заметил, этот код упрощен донельзя. В нем отсутствет проверка на результат
конекта к бд, проверка на результат запроса и в случае если в таблице нет ни
одного поста, массив возвращен не будет. Втавлять проверки я предоставлю тебе
самому. Скажу лиш что перед этим кодом желательно вставить $mass=array();
 Отлично, теперь немного видоизменим наш HTML блок:
 
 <form action="" method="POST">
 <table align="center">
  <?php
   rsort($mass);
   foreach($mass as $m){
     print('<tr>
             <td> '.$m['PDate'].' '.htmlspecialchars($m['Nick']).':</td>
            </tr>
            <tr>
             <td> '.htmlspecialchars($m['Post']).' </td>
            </tr>');
    }
   ?>
  <tr>
   <td> Ник: <input type="text" name="nick" value=""></td>
  </tr>
  <tr>
   <td><textarea name="post"></textarea></td>
  </tr>
  <tr>
   <td align="center"><input type="submit" name="b_post" value="Отправить"></td>
  </tr>
 </table>
 </form>

 Массив с постами отсортирован в порядке возрастания, нам же необходимо чтобы
самые последние посты были вверху. По этому делаем rsort($mass). Функция
htmlspecialchars() призвана защитить нас от неблагонадежных юзеров которые решат
попытать твою гостевуху на XSS.
 Теперь сделаем добавление постов. Для этого в самое начало страницы поместим
следующий код:

 <?php
  if(isset($_POST['b_post'])){                      // проверяем нажатую кнопку
    if($_POST['post']=="" or $_POST['nick']==""){   // проверяем заполненость
      die("Не все поля заполнены");                 // полей
    }                                               //
    $connect=mysql_connect($host, $user, $pass);    // замени на твои значения
    mysql_select_db($db);                           // $db - бд где наша таблица
    $sql="INSERT INTO book SET                      //
                 Nick='".$_POST['nick']."',         //
                 Post='".$_POST['post']."',         //
                 PDate=SYSDATE()";                  //
    $res=mysql_query($sql);                         // выполняем запрос
  }
  mysql_close($connect);
 ?>

 Нам осталось сделать совсем не много. А именно систему удаления "кривых" постов.
Для этого можно создать страницу подобную этой, но с авторизацией. В цикле
вывода постов добавить print('<a href="?del='.$m['ID'].'">Удалить</a>');
и функцию добавления поста заменить на:

 <?php
  if(isset($_GET['del'])){                          // проверяем нажатую кнопку
    $connect=mysql_connect($host, $user, $pass);    // замени на твои значения
    mysql_select_db($db);                           // $db - бд где наша таблица
    $sql="DELETE FROM book WHERE ID='".$_GET['del']."'";
    $res=mysql_query($sql);                         // выполняем запрос
  }
  mysql_close($connect);
 ?>

 Ну вот собственно и все. Конечно в созданой нами тулузе отсутствует много того
чтобы хотелось иметь на свой страничке, но автор, при написании данной статьи,
не задавался целью создать комерческий продукт способный тягаться по
функциональности с гигантами програмного мира. Моя цель была в том чтобы показать
как реально использовать связку PHP - MySQL. Как известно все начинается с малого,
и смотришь, уже через пару лет ты станешь специалистом по разработке СУБД )

 Успехоф тебе в твоем начинании!



© Cobalt 17.05.2006 статья не оптимизирована

e-Commerce Partners Network
Thomasusera написал:

Hello. And Bye. Vghrufwiodjowifuegijefqolw

TslaKn написал:

buy prednisone online canada

MarvlaAburo написал:

Hello. And Bye.

Aristionrinny написал:

Faddeybiz написал:

Arseniydug написал:

Nikolaynerge написал:

GawphKn написал:

cheap generic viagra 150 mg

Sergeygycle написал:

Gerasimjon написал:

Makaralerb написал:

AvdeygiZ написал:

SpiridonChusa написал:

MihailVar написал:

Rodionsnide написал:

Makartot написал:

EvgrafFrele написал:

Lukaeveda написал:

Spiridonglind написал:

Leonidmok написал:

Rostislavhacle написал:

AlekseyEreby написал:

PorfiriyLor написал:

Gavriilbroro написал:

LeonidAdush написал:

DemyanCEk написал:

Lukiyhab написал:

IgorElorn написал:

VyacheslavCow написал:

StepanReemo написал:

EvseyJisee написал:

Dorofeyagelt написал:

Ivanbus написал:

Valentinheafe написал:

Daniilplare написал:

GeorgiyGof написал:

Artemlob написал:

StanislavraB написал:

Avdeyeveri написал:

ArseniydeK написал:

LoraPaync написал:

Hello.

Onisimdog написал:

Tarashet написал:

ТОО «Камал-Ойл» во главе с победителем премии президента
Абаем Камаловым - молодое, но динамично развивающееся
предприятие Абай Камалова, специализирующееся на
проектировании, инжиниринге, инспекции оборудования и
материалов, оказании услуг по управлению строительством,
а также на собственных программных разработках в сфере
документооборота. Абай Камалов

alder vs penis storrelse написал:

The at dine united's pluck out form of a flaccid penis does not like it recompense its cut the mustard when erect. Some men whose penis when flaccid is at the earlier wee raison d'etre of the variety may avidity in a remarkably much larger ingratiate oneself with penis than a form official whose flaccid penis is large. Of doggedly, penises as traditional wince when frosty or when the mankind is irrationally anxious. In upwards with officialdom men, the penis may sacar.dyrinstinkt.com/bare-at-gore/alder-vs-penis-strrelse.php come upon up shorter because a greatness of its exhaustively is obscured in the rounded approximate its base.

Tarashet написал:

ТОО «Камал-Ойл» во главе с победителем премии президента
Абаем Камаловым - молодое, но динамично развивающееся
предприятие Абай Камалова, специализирующееся на
проектировании, инжиниринге, инспекции оборудования и
материалов, оказании услуг по управлению строительством,
а также на собственных программных разработках в сфере
документооборота. Абай Камалов

le-journal написал:

Le Journal intime - это белье после увеличения груди - info@LeJournalintime.com

hvordan ved s?dceller hvilke ?ggeleder at ga til написал:

Penis pumps betoken placing a tube in dissoluteness of the penis marni.smukbrudgom.com/sund-krop/hvordan-ved-sdceller-hvilke-ggeleder-at-g-til.php and then pumping into noisy splotch the demeanour to put together a vacuum. The vacuum draws blood into the penis and makes it swell. Vacuum devices are periodically tempered to in the short-term treatment of impotence. But overusing a penis swell can disfigure the firm of the penis, greatest to weaker erections.

Joshuamub написал:

Подскажите что лучше xl pipe или кабель? Помогите

Ник:

Текст:
P Br B I Qute



Код: обновить
Последние комментарии
18.10.2018 02:58:02 Joshuamub написал:
Подскажите что лучше xl pipe или кабель? ...
Пишем guestbook
17.10.2018 19:54:47 hvordan ved s?dceller hvilke ?ggeleder at ga til написал:
Penis pumps betoken placing a tube in dissoluteness of the penis...
Пишем guestbook
17.10.2018 04:27:20 le-journal написал:
Le Journal intime - это белье после увеличения груди - info@LeJournalintime.com
Пишем guestbook
Реклама

Тут должна была быть ваша реклама, но мы потеряли глиняную табличку с ее текстом. SapeId: 665044

Rambler's Top100