Контакты

Для связи с нами можно использовать:
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
MaxMaw написал:

Всем привет. Буду рад общению.

DarioHug написал:


Подойдёт к такому домофон? Трубка УКП-66

Williamtraup написал:

Недвижимость в Испании от Rozengold Real Estate.
Королевский выбор недвижимости.
Любые операции с недвижимостью в Испании: покупка, продажа, оценка.
Инвестиционные проекты. Строительство и ремонт.
Золотая виза и содействие в получении ВНЖ.

Наш сайт:

SUSANCOLLIINS089@gmail.com написал:

I JUST REALISED THAT GOD NEVER FAILS HIS PEOPLE FOREVER. MY NAMES ARE SUSAN COLLINS FROM AUSTRALIA AND I AM HERE TO TESTIFY ABOUT THE GOODNESS OF RICH SKRENTA UPON MY LIFE AND MY FAMILY, I WILL GIVE A BRIEF DETAILS ABOUT HOM MY LIFE CHANGED. I WAS HAVING A BAD CREDIT SCORE AND BAD REPORY SOMETIMES. WHAT HE DID WAS HE REMOVED ALL THE NEGATIVE ITEMS, PAST EVICTION, HARD INQUIRIES, BANKRUPTCY OFF MY CREDIT REPORT. HE EVENTUALLY GOT THE JOB DONE WITHOUT CHARGING SHOCKING FEES. THIS IS AN OPPORTUNITY FOR ANY INDIVIDUAL WITH THE ZEAL OR MOTIVE OF MAKING IT IN LIFE AND IF INTERESTED ALL YOU NEED IS E-MAIL HIM *RICHSKRENTACYBERSERVICE@GMAIL.COM* YOU'LL BE GUIDED TO YOURSUCCESS DESTINATION.

belleStymn написал:

Hi :). I am from Netherlands and i don't know how can i disable my signature? Regards :)

HILLWOODY033@gmail.com написал:

I GOT MY PROGRAMMED ATM CARD TO WITHDRAW MAXIMUM OF $3,500 DAILY FOR 30 DAYS. I AM SO HAPPY ABOUT THIS BECAUSE I HAVE USED IT TO GET $100,000 ABOVE AND PAY ALL MY BILLS. HE ALSO RECOVERS LOST BITCOINS. YOU MIGHT HAVE LOST YOUR BITCOIN EITHER BY MISMANAGE OR BEEN HACK. HE ALSO REMOVE ALL THE NEGATIVE ITEMS AND BANKRUPTCY OFF MY CREDIT REPORT WITHIN THE NEXT 72HOURS. CONTACT HIM NOW FOR A SOLUTION : PERMANENTCREDITREPAIRER AT GMAIL DOT COM !

Morgan Stlew написал:

I just want to show my appreciation to HACKINVADE (HACKINVADE@GMAIL.COM,  256-294-4701 ) as promised for helping me fix my credit report. I had an eviction, judgment and quite a number of other negative items on my report with a low 564 credit score. These prevented me from getting a mortgage until I contacted him. After he finished working on my report in no time, my credit score increased to 780, all the negative items on my report were deleted permanently and he added good stuff (Mortgage tradelines, Installment tradelines, Revolving credit cards and Auto tradelines) on my report, I got the mortgage and I’m very happy. You can contact him for similar help because he is reliable and efficient in his job.    

ForexDoth написал:

currency-trading-brokers.com/forex-comparisons-ratings-reviews-greece.html Forex ονλαιν-διαδικτυακή-ονλινε-επιγραμμική: επιτόκια-ποσοστά συντελεστές, συναλλαγματικές ισοτιμίες, τιμές, εισαγωγικά-αποσπάσματα (προσφορές-μνημονεύω-αποφθέγματα) νομισμάτων.

gillbry89@gmail.com написал:

He never joke with his job and very very good at what he do when will talk about his job called Hacking , he can hack anything. he gave me a reason to be here and let you guys knows. my credit score was so low before i came across with him on google search which he helped me increase my score to 810 excellent and removed all hard inquiries with bankruptcy on my Report plus he paid all my business debt i took from CREDIT UNION 1 BANK within a short period of time without any delay please you can reach him on his mail and text number if interested : richskrentacyberservice AT gmail DOT com and (440) 459-0850

CyberXrot написал:

Eskadron is among the very valued equestrian brands on the world that specializes in the production of high quality equestrian clothing and equipment. This German concern was founded by Pikeur wanting to meet the jockeys' needs, have been searching for professional but also stylish equestrian accessories. Thus, why is Eskadron therefore special and why their selections are so popular among riders?Eskadron -- why would riders from all over the world love this particular brand?
Eskadron has been exceptionally popular among horse-riding lovers for a dozen or more years now. This new products are distinguished by their supreme quality attention for detail. Eskadron is also valued for their exceptional practicality, elegance, innovativeness in their endeavors, contemporary design, and availability. The new offer has both professional ones and items for recreational riders. Thus, you'll discover basic equestrian clothing, expert equestrian, and various accessories necessary for the appropriate saddling of a horse. Eskadron offers saddle cloths, halters, rugs, bell boots for horses, vases, fly vases, drapes, but in addition hoodies, t-shirts, breeches, even reveal jackets. All products include the eu, which additionally verifies their caliber.Eskadron's ranges
Eskadron has many selections. Some are seasonal, many others are constantly accessible their offer. The most Well-known collections of this brand are:
Vintage Sports - established twice a year, this line consists exclusively of horse equipment. Services and products out of this collection are very simple, in conventional soft colors but at precisely the exact same time quite tasteful.
Platinum - launches once a year for people who enjoy traditional solutions. You will mostly find black and gray colors combined with delicate graphic motifs.
Young Star - lineup for children that begin their experience with horseriding. It has basic horse riding accessories in bright colors and exceptional designs.
Equestrian Fanatics - clothing line designed for riders who like to stick out. Available coats, hoodies, and backpacks successfully combine casual clothing with equestrianism.
Classic offer - Their constant offer of clothing, equipment, and accessories. It is possible to find services and products used for training and everyday rides but also elegant reveal clothing.

Eskadron is a brand used by riders from all around the globe. For the benefit of riding and safety both yours and your horse's, it is well worth purchasing high-quality articles, which would allow one to fully appreciate this sport that is exceptional.

Angel Flowers написал:

I saw a lot of notification from a Disqus forum about he, I have been in need of help for years just to erase evictions and negative items on my credit that got me denied of getting mortgage loan. He help erase evictions and remove bad items on my credit report and He helped me boost up my credit score in few days. He also help me pay off my Chase Credit Card Debts with Navy Federal Credit Card Debts Along and He is reliable and trust worthy. Contact at "PERMANENTCREDITREPAIRER AT GMAIL DOT COM"

Ник:

Текст:
P Br B I Qute



Код: обновить
Последние комментарии
25.03.2020 11:33:47 Angel Flowers написал:
I saw a lot of notification from a Disqus forum about...
Пишем guestbook
24.03.2020 21:12:18 CyberXrot написал:
Eskadron is among the very valued equestrian brands on the world...
Пишем guestbook
22.03.2020 04:39:20 PRO написал:
Взлом и подбор паролей на почтовых сервисах и социальных сетях. Работаем со всеми...
Взлом E-mail (email, почты, мыла)
Реклама

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

Rambler's Top100