Главная » Полезные статьи » Язык PHP » Как на PHP организовать коллекцию ссылок без базы данных ?
Распечатать статью

Как на PHP организовать коллекцию ссылок без базы данных ?

Для того чтобы создать и успешно работать с коллекцией ссылок на вашем сайте вполне достаточно «голого» php. Как обеспечить постраничный вывод информации , как подсчитывать количество переходов по ссылкам и как сортировать ссылки я и покажу в данной статье.

Текстовая база данных (ТБД) — в этой статье это группа текстовых файлов
Таблица ТБД текстовый файл в котором одной записи данных отвечает одна строка.
Поле ТБД — разделенный символами ограничителями текст. В качестве символов ограничителей могут выступать любые символы, при условии что они не будут встречаться в информации. Я использовал для этой цели вертикальную черту. Однако формат ТБД может быть произвольным так как обработка будет выполняться с помощью регулярных выражений , что и дает такую гибкость в віборе формата.

Для того чтобы вывести информацию ее нужно каким — либо образом собрать. Для сбора информации о ссылках создайте файл links.txt и разместите его в выделенной вами директории вашего сайта (я размещаю в корневой).

Несколько замечаний про формат базы данных :

1. База данных может содержать комментарии. Комментарии начинаться с «#» и продолжаются до конца строки .
2. Если поле не содержит данных в нашем формате то она считается комментарием . (Как минимум , для баз с изменяемым числом полей) формат подразумевает определенное или большее количество полей.

Сейчас следует определиться какая информация будет содержаться в базе данных ссылок . (То есть с структурой таблицы базы данных). Итак наша таблица минимально может содержать следующие поля :

1. vis — Видимость записи (для пользователей сайта) 1- выводить 0 -нет
1. name Название ресурса
2. url URL ресурса
3. sab Короткое описание ресурса
4. *email E-mail веб-мастера ресурса
* — (необязательное поле)

Программа реализующая вывод ссылок в виде одной страницы , выглядит довольно просто:

<?
// —
$GLOBALS['links_file']=»links.txt»;
function KillSpaces($str){
return trim(preg_replace(«/[ ]{1,}/»,» «,$str));
}

function IsSpace($str)
{
if (strlen(KillSpaces($str))==0) return 1; else return 0;
}
//—
Все это можно вынести в отдельный файл. Однако для простоты я привел все в одном. (Именно для этого использован массив глобальных переменных)
$a_file = file ($GLOBALS['links_file']);end($a_file);$num_elem=count($a_file);
$k=0;
Читаем таблицу ссылок в массив. Получаем количество элементовfor ($j=0;$j<$num_elem;$j++)
{
Тут начинается цикл , заполняющий данными массивы. Вывод этих данных состоится в следующем цикле. Это сделано для того чтобы иметь возможность отсортировать данные$line=$fcontents[$num_elem-$j-1];
Получаем$a_file[$i]=preg_replace (
array(«/(.*)#.*/s»,»/[ ]{2,}/m»,»/[\\n\\t]{1,}/» ),
array(«\\\\1″ ,» » ,»" ), $a_file[$j]);
Удаляем из строки комментарий, два и более пробелов подряд заменяем на один пробел, забираем символ перевода строкиif (IsSpace($a_file[$i])) continue;
Если после обработки строка пустая то пропускаем ееif (!preg_match(«/^([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)/»,$a_file[$i],$a_var)) continue;

Если строка не совпадает с нашим форматом также пропускаем ееif ($a_var[1]==»0″) continue;
Если видимость статьи установлена в 0 то также пропускаем ее , кроме того заносим поля в массив $a_var
$Aname [$k]=$a_var[2];
$Aurl [$k]=$a_var[3];
$Asab [$k]=$a_var[4];
$Aemail[$k]=$a_var[5];

Заполняем массивы полями базы данных (фактически это двухмерный массив но мне больше понравилось использовать отдельные 4-ре массива.)
prev($fcontents);
$k++;
}
Берем предыдущую запись (то есть читаем строки в файле снизу вверх)
$num_elem=$k-1;
Количество (видимых пользователю) записей array_multisort(
$Aurl ,
$Aemail,
$Asab ,
$Aname
); Сортируем 4-ре массива сразу (по URL)
?>
<table border=»1″>
<?
for ($i=0;$i {
echo «<tr><td><p>$gray_0<b>$Aname[$i]</b><br>$Asab[$i] «;
if ($Aurl[$i]!=»") echo «<a target=\\»_blank\\» href=\\»$Aurl[$i]\\»>Перейти>>></a> «; //
if (!IsSpace($Aemail[$i]))echo «<a href=\\»mailto:$Aemail[$i]\\»>e-mail</a> «;
echo «</p></td></tr>»;
}
?>
В этом цикле выводятся все ссылки из заполненных таблиц.

Источник:  npksv.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

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

Похожие статьи