ПРОГРАММ: 654 | СТАТЕЙ: 125 | КОДОВ: 3434   

    главная        новости        программы        библиотека        коды        рейтинг       форум   

Афоризм
Одиннадцатая заповедь "Не прелюбословь!"
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Компания Чистомир - клининговые услуги
  Камышин Агент
  Сайт русского поэта Н.А. Заболоцкого.
  Раскрутка, продвижение и оптимизация сайтов ( проектов ) в Тольятти
  ОДИС - Идеальный Друг
  
  
 
  Библиотека > web - разработка > PHPдобавить статью
Каталог Ссылок

Вот, решил написать статью по созданию каталога ссылок, т.к. очень многие хотят достать такие скрипты, а большинство готовых, слишком "навороченные". За основу каталога взят всем хорошо известный Yaho
 
Евгений А. Кучеров
eugeny.com
10-05-2004
Версия для печати
печать

Вот, решил написать статью по созданию каталога ссылок, т.к. очень многие хотят достать такие скрипты, а большинство готовых, слишком "навороченные". За основу каталога взят всем хорошо известный Yahoo

Нужно сперва создать 3 таблицы, в 1-ой (категории) будут храниться названия категорий, во 2-ой (sub_categories) будут подкатегории, а уже в 3-ей (links) сами ссылки. Создаем:

CREATE TABLE categories (id int(11) NOT NULL auto_increment, # уникальный идентификаторname varchar(255) NOT NULL default "", # название категорииPRIMARY KEY (id), UNIQUE KEY id (id,name))

CREATE TABLE sub_categories (id int(11) NOT NULL auto_increment, # уникальный идентификатор подкатегорииcid int(11) NOT NULL default "0", # идентификатор категории, куда входит данная подкатегорияname varchar(255) NOT NULL default "", # название подкатегорииPRIMARY KEY (id), UNIQUE KEY id (id))

CREATE TABLE links (id int(11) NOT NULL auto_increment, # уник. идент-рname varchar(100) NOT NULL default "", # краткое название ссылкиurl varchar(255) NOT NULL default "", # адрес в интернете (http://vasya.pupkin.ru)description text, # полное описание ссылкиsid int(11) NOT NULL default "0", # идентификатор подкатегорииcounter int(11) NOT NULL default "0", # счетчик посещений ссылки с Вашего сайтаPRIMARY KEY (id), UNIQUE KEY id (id))

Все эти таблицы можно создать с помощью очень удобного phpMyAdmin (http://phpwizard.net/phpMyAdmin) или следующим скриптом (прилагается install.php)

<? include "config.php"; // здесь идет подключение к БД mysql_query("CREATE TABLE categories (id int(11) NOT NULL auto_increment, name varchar(255) NOT NULL default "", PRIMARY KEY (id), UNIQUE KEY id (id,name))"); mysql_query("CREATE TABLE sub_categories (id int(11) NOT NULL auto_increment, cid int(11) NOT NULL default "0", name varchar(255) NOT NULL default "", PRIMARY KEY (id), UNIQUE KEY id (id))"); mysql_query("CREATE TABLE links (id int(11) NOT NULL auto_increment, name varchar(100) NOT NULL default "", url varchar(255) NOT NULL default "", description text, sid int(11) NOT NULL default "0", counter int(11) NOT NULL default "0", PRIMARY KEY (id), UNIQUE KEY id (id))"); ?>

Создаются скрипты (index.php, add.php, config.php, go.php).

Рассмотрим сначала index.php

<? include "config.php"; include "header.inc.php"; // шапка страницы // если не указана категория (cid) или подкатегория (sid) выводим список всех основных категорий (главная страница) if(!isset($cid) && !isset($sid)) { // выясняем кол-во категорий $cats = tablecount($t_category); $i = 0; // посылаем запрос выборки категорий из базы данных $qc = mysql_query("select * from $t_category order by name"); print "<div align=center> "; print "<table width=400 cellspacing=2 cellpadding=2 border=0> "; // последовательно обходим все категории while($qcrow = mysql_fetch_array($qc)) { // если четный индекс у категории значит начинаем новую строку в таблице if($i%2 == 0) { print "<tr> "; } print "<td width=50%> "; // выводим ссылку на список подкатегорий в данной категории print "<b><a href="index.php?cid=".$qcrow["id"]. "">".$qcrow["name"]."</a></b><br> "; // здесь происходит выборка подкатегорий для данной категории // и ограничиваемся первыми пятью (далее стоит условие) $qs = mysql_query("select * from $t_subcategory where cid="".$qcrow["id"]."" order by name"); $k = 0; while($qsrow = mysql_fetch_array($qs)) { if($k == 5) { // если это шестой по счету выводим ссылку на список всех подкатегорий print "<a href="index.php?cid=".$qcrow["id"]."">...</a>"; break; } print "<a href="index.php?sid=".$qsrow["id"]."">".$qsrow["name"]."</a> "; $k++; } print "</td> "; // если это последняя подкатегория и их общее кол-во нечетное выводим пустой // эл-т таблицы if($i+1 == $cats) { if($cats%2 != 0) { print "<td> </td> "; } } // если нечетная, выводим конец строки if($i%2 != 0) { print "</tr> "; } $i++; } print "</table> "; print "</div> "; } elseif(isset($cid)) { // Выводим список всех подкатегорий для указанной категории $cid // получаем общее кол-во подкатегорий для $cid, эта ф-я // находится в файле config.php $cats = tablecount($t_subcategory, " where cid=$cid"); // запрос на выборку категории из таблицы (чтобы получить ее имя) $qn = mysql_query("select * from $t_category where id="$cid" order by name"); // получаем первую категорию (всего одна :)) $qnrow = mysql_fetch_array($qn); // выбираем _все_ подкатегории для $cid $qs = mysql_query("select * from $t_subcategory where cid="$cid" order by name"); $i = 0; print "<div align=center> "; print "<b><a href="index.php">Главная </a> » ".$qnrow["name"]."</b><br><br> "; print "<table width=400 cellspacing=2 cellpadding=2 border=0> "; // обходим все подкатегории и выводим их в браузер // (принцип такой же как и для категорий) while($qsrow = mysql_fetch_array($qs)) { if($i%2 == 0) { print "<tr> "; } print "<td width=50%> "; print "<a href="index.php?sid=".$qsrow["id"]."">".$qsrow["name"]."</a> "; print "</td> "; if($i+1 == $cats) { if($cats%2 != 0) { print "<td> </td> "; } } if($i%2 != 0) { print "</tr> "; } $i++; } print "</table></div> "; } elseif(isset($sid)) { // А здесь, собственно, уже выводим все ссылки // берем подкатегорию $sid (для выяснения названия подкатегории) $qs = mysql_query("select * from $t_subcategory where id="$sid" order by name"); $qsrow = mysql_fetch_array($qs); // а здесь выясняем название категории $qc = mysql_query("select * from $t_category where id="".$qsrow["cid"]."" order by name"); $qcrow = mysql_fetch_array($qc); // Выводим местонахождение и начало таблицы print "<div align=center> "; print "<b><a href="index.php">Главная </a> » <a href="index.php?cid=".$qcrow["id"]."">".$qcrow["name"]."</a> » " .$qsrow["name"]." </b><br><br> "; print "<table width=400 cellspacing=2 cellpadding=2 border=0> "; // запрос на все ссылки для данной подкатегории $sid с сортировкой по имени // можно конечно выводит как и самый популярный (больше всего кликов - // order by counter) $ql = mysql_query("select * from $t_links where sid="$sid" order by name"); // если полученное кол-во ссылок 0, то сообщаем об этом if(mysql_num_rows($ql) == 0) { print "<tr><td>Нет ссылок</td></tr>"; } else { // теперь обходим все ссылки по-очереди и выводим их. while($qlrow = mysql_fetch_array($ql)) { print "<tr> "; print "<td> "; print "Название: <b><a target=_blank href="go.php?id=".$qlrow["id"]."">". >$qlrow["name"]."</a></b><br><br> "; print "Описание: ".$qlrow["description"]."<br><br>"; print "Кликов: ".$qlrow["counter"]; print "</td> "; print "</tr> "; } } print "</table> </div> "; } include "footer.inc.php"; ?>

 

add.php - скрипт для добавления категорий/подкатегорий (add.php?what=category) и самих ссылок (add.php?what=link).

<? include "config.php"; include "header.inc.php"; print "<div align=center> "; print "<table width=400 cellspaing=2 cellpadding=2 border=0> "; // переменная what хранит значение category/link чтобы знать что добавлять if(@$what == "category") { // if(!isset($submit)) { // если не нажата кнопка "Добавить" (Submit) выводим форму для заполнения ?> <form method=post action="add.php?what=category"> <tr><td width=50%>Выберите категорию, в которую добавлять подкатегорию:<br> Или введите новую</td> <td width=50%> <select class=select name=category size=1 style="width: 100%;"> <option selected value=#>Выберите категорию</option> <? // выводим все категории $qc = mysql_query("select * from $t_category"); while($qcrow = mysql_fetch_array($qc)) { print "<option value=".$qcrow["id"].">".$qcrow["name"]."</option> "; } ?> </select> <input type=text name=categorystr value="" style="width: 100%"> </td></tr> <tr><td width=50%>Введите название подкатегории</td> <td width=50%> <input type=text name=subcategory value="" style="width: 100%"> </td></tr> <tr><td colspan=2><input type=submit name=submit value="Добавить"> </td></tr> </form> <? } else { // обрабатываем нажатие кнопки "Добавить" if($categorystr != "") { // узнаем, есть ли такая категория уже в таблице $qcheck = mysql_query("select * from $t_category where name="$categorystr""); if(mysql_num_rows($qcheck) == 0) { // нет // Если введено название новой категории то добавляем ее $qi = mysql_query("insert into $t_category values("", "$categorystr")"); $category = mysql_insert_id(); // узнаем id для новой категории // выводим сообщение о том что добавлена. print "<tr><td>Новая категория добавлена (<i>$categorystr</i>)</td><tr> "; } else { // если категория уже существует, значит узнаем // ее идентификатор и записываем в $category $qcrow = mysql_fetch_array($qcheck); $category = $qcrow["id"]; } if($subcategory != "") { // добавляем подкатегорию, если ее ввели mysql_query("insert into $t_subcategory values("", "$category", "$subcategory")"); print "<tr><td>Подкатегория <i>$subcategory</i> добавлена.</td></tr>"; } } } elseif(@$what == "link") { // Добавление новой ссылки if(!isset($submit)) { // если не нажата кнопка Добавить выводим форму для ввода ?> <form method=post action="add.php?what=link"> <tr><td width=50%>Добавлять в:</td> <td> <? print "<select name=category size=1 style="width: 100%;">"; print "<option selected value="#">Выберите категорию</option> "; // Выводим все категории в следующем формате Кат1 -> подкат1, Кат1 -> // подкат2 ну и т.д. $qc = mysql_query("select * from $t_category order by name"); while($qcrow = mysql_fetch_array($qc)) { $qs = mysql_query("select * from $t_subcategory where cid = "". $qcrow["id"]."" order by name"); while($qsrow = mysql_fetch_array($qs)) { print "<option value=".$qsrow["id"].">".$qcrow["name"]."  »  ". $qsrow["name"]."</option> "; } } print "</select> "; ?> </td> </tr> <tr> <td>Название сайта:</td> <td><input type=text name=name value="" style="width: 100%"></td> </tr> <tr> <td>Адрес сайта (url):</td> <td><input type=text name=url value="" style="width: 100%"></td> </tr> <tr> <td>Описание сайта:</td> <td><textarea name=description rows=5 style="width: 100%"></textarea></td> </tr> <tr> <td colspan=2><input type=submit name=submit value="Добавить"></td> </tr> <? } else { // обрабатываем нажатие на кнопку "Добавить" // Добавляем в таблицу новую ссылку mysql_query("insert into $t_links values("", "$name", "$url", "$description", "$category", "0")"); print "<tr><td>Ссылка добавлена в каталог. <a href="index.php?sid=$category">Перейти в подкатегорию</a></td></tr> "; } } print "</table> "; print "</div> "; include "footer.inc.php"; ?>

 

go.php - скрипт для перенаправления браузера на ссылку и увеличения счетка (counter)

<? include "config.php"; $error = 0; // устанавливаем флаг ошибки в 0 if(!isset($id)) $error = 1; // если не указан идентификатор ссылки, // след-но ошибка else { // выбираем ссылку из таблицы (должна быть всего одна, // поэтому ограничиваем выборку - limit 1) $result = mysql_query("select * from $t_links where id = "$id" limit 1"); // если не найдена ссылка с таким идентификатором, значит ошибка if(mysql_num_rows($result) == 0) { $error = 2; } else { // получаем строку из таблицы об указанной ссылке $row = mysql_fetch_array($result); // увеличиваем счетчик и записываем его обратно в таблицу (update) $counter = $row["counter"]; $counter++; $url = $row["url"]; $resultu = mysql_query("update $t_links set counter=$counter where id=$id"); // перенаправляем на нашу найденную ссылку header("Location: $url"); } } // Обрабатываем ошибки и сообщаем о них. if($error != 0) { print "<font size=+1><b>"; switch($error) { case 1: print "Вы не указали идентификатор"; break; case 2: print "Вы указали неверный идентификатор"; break; } print "</font></b>"; } ?>

 

А в скрипте config.php идет простое подключение к БД MySQL и функция для получения общего кол-ва строк в таблице:

<? $database["name"] = "mysql"; $database["host"] = "localhost"; $database["database"] = "links"; $database["user"] = "root"; $database["password"] = ""; $t_category = "categories"; $t_subcategory = "sub_categories"; $t_links = "links"; $db = mysql_connect($database["host"], $database["user"], $database["password"]); mysql_select_db($database["database"], $db); function tablecount($name, $cond = "") { $q = mysql_query("select count(*) as total from $name $cond"); if(mysql_num_rows($q) == 0) return 0; $qrow = mysql_fetch_array($q); return $qrow["total"]; } ?>

Вроде бы все, но тут можно бесконечно создавать что-нибудь новое, сделать сортировки выводимых ссылок (по названию, кол-ву кликов на них - наиболее популярные) и многое другое.

Все скрипты прилагаются и являются рабочими. Надо только настроить правильно информацию для БД и создать таблицы в указанной базе данных. (install.php)

Удачи!




Комментарии
Оставить комментарий

www.dom.siteedit.ru | 21-06-08 02:31
Австралийско-Турецкая компания Derin & Derin предлагает широкий выбор недвижимости на Эгейском и Средиземном побережьях Турции в курортных городах Анталия, Кушадасы и Бодрум - аппартаменты, виллы, гостиницы, торговые комплексы, а также коммерческую недвижимость в Измире.
Кушадасы и Бодрум – прекрасные, европейского уровня курорты
Привлекательность инвестиций в недвижимость Кушадас обусловлена пока еще сравнительно низкими ценами. Для примера, в Бодруме и Анталии цены в 2-3 раза выше.
Представитель Derin & Derin в Москве
A19633@ya.ru
www.dom.siteedit.ru/
926 4226540


ДАААА!!!!!! | 18-07-05 13:38
Да очень содержательно.. Зачем было это в статью выделять то ??? Код из-за того что сжат не читабелен вообще...

Имя:
E-mail:
Сообщение:


Число=
укажите сумму чисел на картинке

   очистить

популярные статьи по теменовые статьи
Создание видео из фотографий в программе "ФотоШОУ"
Разное / Обработка фото и видео
Больница для компьютера
железо / Система
Чем так популярны социальные сети?
Разное / разное
Синхронизация данных с сотового телефона на ПК
железо / Мобильные устройства
Куплю хостинг
web - разработка / Хостинг

Опрос
На что Вы обращаете внимание в первую очередь при покупке товара в интернет-магазине?  
 
Комментарии и оценку пользователей
Наличие нескольких фотографий
Подробное и качественное описание
Условия доставки
Возможность покупки в кредит
 
Самое свежее  
 ПРОГРАММЫ

ICQ 8.0.5990
ICQ 8.0.5990

Mozilla Firefox 18.0.2
Mozilla Firefox 18.0.2

ArtMoney 7.40.4
ArtMoney 7.40.4

 НОВОСТИ

Хакерская атака на Google из Китая
Хакерская атака на Google из Китая

Мы победили! Олимпиада 2014 пройдет в Сочи
Мы победили! Олимпиада 2014 пройдет в Сочи

 БИБЛИОТЕКА

Создание видео из фотографий в программе "ФотоШОУ"
Создание видео из фотографий в программе "ФотоШОУ"

Больница для компьютера

 
Рекомендую!



Copyright © 2004-2024 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.