Все ленты — последние статьи

Делаем простейшее подобие интернет-магазина.

Делаем простейшее подобие интернет-магазина.

Хотя, конечно, вернее будет назвать это "система заказа товаров на сайте".
Но, глядя на сайты многочисленных российских фирм, которые работают
именно по такому принципу (www.dostavka.ru, www.depo.ru, www.wstore.ru),
мы тоже с пафосом назовем набор простеньких скриптов "ИНТЕРНЕТ-МАГАЗИН".

Подробнее: Делаем простейшее подобие интернет-магазина.

Модульное программирование на PHP или как написать маленький портал

Модульное программирование на PHP или как написать маленький портал

Я попытаюсь тут разъяснить то, как я подхожу к написанию сайтов, где могут применять подключаемые модули. Пример тому известный скрипт PHPNuke. Как бы не ругали его, подход, примененный в нем, к модульному программированию очень удобен. Но из-за корявости общего кода применять такой скрипт на серьезных сайтах, точнее скажем порталах, с большим количеством посетителей, не рекомендуется. Почему? Скрипт работает медленно, очень большая нагрузка на базу данных. Можно еще очень много чего описать, но это уже материал для другой статьи. Если кому интересно , то в интернете полно описаний этого движка. В <неудобоваримости> PHPNuke я убедился сам. Мой основной проект NVIDIA BIOS Collection в начала базировался на PHPNuke, но постоянные проблемы с хостингом заставили меня начать разработку своей система портала с нуля. Из PHPNuke я взять только суть модулей, все остальное же делал сам. И так для начала. Прежде всего, надо продумать систему каталогов, что и где будет лежать. Вот примерный вариант.

Подробнее: Модульное программирование на PHP или как написать маленький портал

Выбор из БД в случайном порядке на PHP

Выбор из БД в случайном порядке на PHP

Есть несколько задач, для которых необходимо в случайном порядке выдавать на страницу несколько записей, считываемых из базы данных. Например, это может быть баннерная крутилка или раздел сайта "случайная мысль". Так вот, можно реализовать эту задачу несколькими способами, и о двух из них я бы хотел рассказать в этом уроке.

Подробнее: Выбор из БД в случайном порядке на PHP

Постраничный вывод из таблиц MSSQL с помощью PHP

 Статья слегка некорректная, ищите первоисточник   

На многих форумах по PHP видел один и тот же вопрос «Как сделать постраничный вывод из MSSQL?». Ответом очень часто служит «Все очень просто, используйте limit и все работает!», но, те кто дает такой ответ, видимо никогда не видели MSSQL достаточно близко и не знают, что к большому сожалению, там данной функции, в отличии от MySQL, нет. Я в своей практике написания сценариев на php, так же в основном пользовался связкой PHP + MySQL и вопросов не возникало. Но вот надо было перейти на хостинг с установленным MSSQL. После долгих поисков скрипта, который позволял бы сделать постраничный вывод из таблиц MSSQL с помощь PHP, без использования курсоров и ADO, и не найдя ничего, пришлось написать функцию, которая как раз и занимается обсуждаемым рутинным делом.

 

В основу постраничного вывода был положен запрос:

select top нужное_количество_для_вывода *

from (select top количество_записей_из_которых_делается_вывод *

from таблица

order by таблица_id) as t1

order by таблица_id desc

(таблица_id — поле вашей таблицы, по которому вы будете осуществлять сортировку)

Для работы нужной нам функции и правильной работы данного запроса надо знать несколько величин:

1) нужное количество строк для вывода

2) количество записей из которых делается выбор

3) на какой страницы мы находимся

4) сколько всего страниц.

Получившаяся функция выглядит так:

<?

if (!@$_GET["page"]) { # если переменной с номером страницы еще нет, то создаем ее

$page=1; # и присваиваем ей значение 1

} else { $page=$_GET["page"]; } # иначе, присваиваем ей значение нажатой страницы

# объявляем функцию с названием numberpage, имеющей следующие параметры:

# 1) количество выводимых строк на каждой странице,

# 2) название таблицы, которую выводим постранично,

# 3) дополнительные параметры выбора запроса, например: where поле_какоето1=чемуто

# and поле_какоето2=томуто.

# не забудьте, что данные дополнительные параметры должны быть и в самом запросе, иначе

# вы получите неверные значения.

function numberpage($len,$tablename,$dopquerysql) {

global $page;

global $nump;

# формируем массив для возврата значений из функции

$nump=array("page"=>"","numers"=>"","len"=>"0","all"=>"0","top1"=>"0","top2"=>"0");

# получаем URL страницы, с которой вызвали функцию

$namepage=@$PATH_INFO;

# вычисляем количество строк в запросе

$nu=@mssql_query("select count(1) as ss from $tablename $dopquerysql"); $nrow=@mssql_fetch_array($nu);

$all=$nrow['ss'];

@$pages=ceil($all/$len)-1;

if (@$page==(@$pages+1)) { $top1=$all-(($page-1)*$len); $top2=$all;

} else { $top1=$len; $top2=$page*$len; }

if (@$len>=$all) { $top1=$all; $top2=$all; }

$numers=($page-1)*$len;

@$q=$all/$len;

# готовим массив с номерами страниц

if ($q>1) {

for ($p=0; $p<=$pages; $p++) {

$pag=$p+1;

@$nump[page]="$nump[page][<a href = '$namepage?page=$pag".$dopnum."'>$pag</a>] ";

}

}

# подготавливаем массив с конечными результатами и выводим его

$nump["page"]=@$nump[page];

$nump["numers"]=$numers;

$nump["len"]=$len;

$nump["all"]=$all;

$nump["top1"]=$top1;

$nump["top2"]=$top2;

return $nump;

}

?>

Данную функцию можно расположить в файле с вашими конфигурациями всего вашего проекта и вызывать ее на каждой страницы, где вы собираетесь делать постраничный вывод. Например: файл конфигурации у вас называется myconfig.php, значит, на каждой странице вставляем <? require(“myconfig.php”); ?>

Теперь переходим непосредственно к выводу нашей таблицы в браузере. Сразу определяемся, сколько у нас будет выводится на экран строк таблицы, или делаем форму для выбора количества строк пользователем. Форму я тут приводить не буду, так как это выходит за рамки статьи и достаточно легко, чтоб на этом останавливаться.

Перед выводом таблицы вызываем функцию (будем выводить по 10 строк на странице из таблицы наша_таблица где поле2 содержит слово КАКОЕТОЗНАЧЕНИЕ и поле5 равно 12):

<? numberpage("10","наша_таблица","where поле2 like ‘%КАКОЕТОЗНАЧЕНИЕ%’ and поле5=12"); ?>

Помните, что если у вас нет никаких дополнительных параметров выбора, просто оставьте значение пустым, и вы получите выбор из всех полей таблицы. Например: <? numberpage("10","наша_таблица",""); ?>, соответственно убрав данное условие и при выводе самой таблицы.

Затем, в нужном нам месте выводим саму таблицу:

<?

$grn=@mssql_query("select * from (select top $nump[top1] * from (select top $nump[top2] * from наша_таблица where поле2 like ‘%КАКОЕТОЗНАЧЕНИЕ%’ and поле5=12 order by таблица_ID desc) as t1 order by таблица_ID ) as t2 order by таблица_ID desc",$link);

for($gd=0; $gd<@mssql_num_rows($grn); $gd++) {

$gr=@mssql_fetch_array($grn);

?>

Затем выводим перечисление страниц: ".@$nump[page].""; ?>

В данном примере, у вас будут выводится записи в обратной последовательности, начиная с последней в таблице по 10 к первой. Если вам надо, чтобы записи выводились с первой и далее, то скрипт надо модифицировать:

select * from (select top $nump[top1] * from (select top $nump[top2] * from наша_таблица order by таблица_ID) as t1 order by таблица_ID desc ) as t2 order by таблица_ID

Вот в принципе и все.

Основы работы с MySQL в PHP

Основы работы с MySQL в PHP

В тексте использован перевод официальной документации сделанный Всероссийским клубом Веб-Мастеров.

Вся работа с базами данных сводится к подключению к серверу, выбору базы данных, посылке запроса, обработке запроса и отключении от баз. Итак, рассмотрим все это дело по пунктам. Для наглядности всего текста представим себе что на локальной машине установлен сервер MySQL. Порт для работы с ним стандартный. Для подключения будем использовать имя пользователя «root» и пароль «no_one».

Подробнее: Основы работы с MySQL в PHP