Попълване на таблиците



Дата24.03.2017
Размер182.27 Kb.
#17703
Попълване на таблиците

Продължаваме изграждането на примерната директория с добавяне на записите в таблицата за категориите. Съзнателно пропускам подробностите за работа с MySQL от командния ред и в следващите редове ще продължим да използваме phpMyAdmin за да добавяме, редактираме или премахваме записи. Причините за това са две - показаните в шела на Linux таблици от база данни не са най-конфортния начин да разберете какво се случва в базата данни ако тепърва започвате да се занимавате с това. Освен това има доста потребители, ползващи MySQL под Windows, както и такива, чиито хостинг не позволява SSH достъп до сървъра. Затова усложняването е излишно.


Добавяме категориите

Категориите, в които ще разпределяме линковете в нашата директория, ще се съхраняват в таблицата categories, която вече създадохме.


Тя има следните три полета :
-
catid - число, съставено от до 20 цифри, което ще представлява уникален идентификатор на категорията. Това число ще бъде добавяно автоматично и ще е с една единица по - голямо от числото в предишния запис.
-
catname - низ, който може да е съставен от различни символи с максимална дължина от 100 символа. Тук ще съхраняваме името на категорията.
-
catparent - число, съставено от до 20 цифри, което ще указва идентификационния номер (catid) на директорията, която е родителска на текущата.

Ще създадем категория "Музика", в която ще има три под-категории : "Изпълнители", "Групи", "Компании". В подкатегорията "Изпълнители" ще добавим още две подкатегории - "Жени" и "Мъже", а "Групи" ще разделим на "Български" и "Чужди".

В началото ще създадем трите основни категории. За целта ще използваме командата INSERT с чиято помощ ще вкараме три записа в празната все още таблица.

INSERT INTO таблица VALUES ('първа стойност', 'втора стойност', ...);

Този ред ще създаде нов запис в указаната таблица, попълвайки по реда полетата от ляво надясно - в първото поле ще влезе "първа стойност" и така нататък. Стойностите, които искаме да добавим изписваме винаги в единични кавички. Изключение са само числата, които поставяме в поле с типа на данни INT.

Има два алтернативни записа на показания по-горе код:



INSERT INTO таблица (поле1, поле2) VALUES ('стойност1', 'стойност2');

или

INSERT INTO таблица SET поле1=('стойност1'), поле2=('стойност2');

Както се вижда, двата варианта ви позволяват да създадете запис, без да попълвате всички полета в него. Това обаче може да се направи и с първия вариант. Нека демонстрираме на практика тези редове, като ги използваме за да създадем категориите.

INSERT INTO categories VALUES (NULL, 'Музика', 0);

Както можете да видите на долното изображение, вече имаме създадена категория "Музика", която е с идентификационен номер (catid) 1 и родителска категория 0 - тоест, тази категория е от най-високо ниво. Забележете, че използвахме NULL за да укажем, че не искаме да укажем стойност за "catid". Съответно около числото 0, което поставихме в поле, дефинирано като INT, не сложихме единичните кавички.

Сега ще добавим трите подкатегории, като вече в "catparent" ще поставяме числото 1, което е идентификор на категорията "Музика". Ще използваме трите различни начина за употреба на INSERT, създавайки трите подкатегории:



INSERT INTO categories VALUES (NULL, 'Изпълнители', 1);
INSERT INTO categories (catname, catparent) VALUES ('Групи', 1);
INSERT INTO categories SET catname=('Компании'), catparent=(1);


Сега трябва да създадем подкатегориите към "Групи" и "Компании", указвайки за catparent съответно "2" и "4".

INSERT INTO categories VALUES (NULL, 'Жени', 2);
INSERT INTO categories VALUES (NULL, 'Мъже', 2);
INSERT INTO categories VALUES (NULL, 'Блъгарски', 4);
INSERT INTO categories VALUES (NULL, 'Чужди', 4);


Промяна и изтриване на записи

Промяна на запис

Сигурно забелязвате, че при създаването на категорията "български" сме допуснали правописна грешка. За да я поправим, ще се наложи да променим съдържанието на полето "catname" в записа, в който catid има стойност 7. За целта ще използваме командата UPDATE :



UPDATE categories SET catname='Български' WHERE catid='7';

лед изпълнението на този ред, грешката ще бъде поправена. Внимавайте с тази конструкция, защото ако пропуснете да посочите условието в WHERE, ще бъде променена стойноста на поелто във всички редове на тази таблица. След малко отново ще се върнем на начините за промяна на вече направени записи.




Изтриване на запис

След като размислим за кратко, можем да решим, че искаме в директорията ни да има само линкове към сайтове за българска музика. Което означава, че ще премахнем категорията за чужди музикални компании. За да направим това ще използваме командата DELETE, за да премахнем този запис в таблицата "categories", където "catid" има стойност 8 :



DELETE FROM categories WHERE catid=8;

Сега ще премахнем и категорията "Български", която вече е излишна :

DELETE FROM categories WHERE catid=7;

В крайна сметка получаваме следния резултат :

 

Можехме да премахнем двата записа в таблицата само с един ред код, указвайки, че искаме да изтрием редовете, чиито стойности за catid са 7 или (OR) 8 :



DELETE FROM categories WHERE catid=7 OR catid=8 ;



Попълваме директорията

Нека сега добавим по няколко линка във всяка подкатегория на директорията. Сайтовете, които ще използваме в примера са подбрани случайно.



INSERT INTO links VALUES (NULL, 6, 'http://slaviweb.hit.bg', 'Слави Web', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 5, 'http://milena.hit.bg/', 'Милена', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 5, 'http://lili.dir.bg/', 'Лили Иванова', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 6, 'http://valdobrev.hit.bg/', 'Стефан Вълдобрев', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 3, 'http://www.remapool.com/btr/', 'БТР', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 3, 'http://wickeda.hit.bg/', 'Уикеда', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 3, 'http://www.geocities.com/Hollywood/Screen/2009/', 'Нова Генерация', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 3, 'http://bulgarianspace.com/music/artists/pbb/', 'Подуене Блус Бенд', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 4, 'http://www.paynermusic.com/', 'Payner Music.com/', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 4, 'http://www.bol.bg/kamusic/', 'KA Music', 'admin', 'admin@site.com', 0);
INSERT INTO links VALUES (NULL, 4, 'http://bghiphop.hit.bg/producers_sniper.htm', 'Sniper Records', 'admin', 'admin@site.com', 0);


Резултатът виждате на следното изображение :

 

Понеже това е първоначалното "зареждане" на директорията, всички линкове бяха вкарани с подател admin, който притежава e-mail адрес admin@site.com. За дата на този етап поставихме нула, по късно ще покажем какви са вариантите за попълване на това поле.



Изграждане на директорията

PHP дава възможност да постигнете резултата, който искате, по различни начини. За да направят директорията, която сега ще изградим, някои ще напишат кода в поне 10 файла, други ще съберат всичко в един. Някои ще използват функции с които да рисуват отделните части от интерфейса, други ще включат HTML кода направо в PHP блоковете.

Нашият вариант ще се състои от 4 файла - два, които ще представляват общия интерфейс и два,.съдържащи PHP кода. Ще имаме header.php, footer.php, index.php и edit.php. Първите два файла ще се грижат за общия вид на директорията, index.php ще показва линковете, а в edit.php ще добавяме, редактираме или изтриваме линкове.




Общият интерфейс

Когато правите голям сайт е добра идея да използвате един и същ HTML код за оформянето на страниците в него. Най-малкото това ще ви спести пренаписванеот на големи количества код, когато се наложи да промените нещо. Подробно този въпрос разгледахме в 5-а част на самоучителя. Сега ще създадем header.php, който ще съдържа "горната" и "лявата" части от интерфейса, но и ще изпълнява допълнителни функции, като например връзка с базата данни :



//това е header.php

//име на хоста, на който работи mysql сървъра


$bd_host="";
//име на базата данни
$bd="php_test";
//потребителско име
$bd_user="potrebitel";
//парола за това потребителско име
$bd_pass="parola";
//осъществяне на връзката с базата данни
$link=mysql_connect ($bd_host, $bd_user, $bd_pass);
//избираме базата данни,с която ще работим
mysql_select_db ($bd, $link);
//следва интерфейсът
echo "\n\nPC World - Увод в PHP - Примерна директория\n\n\n\n";
echo "\"pc\n

\nУвод в PHP - Директория\n

\n
\n ";
?>


Връзка с базата данни

Преди да направите каквото и да било с базата данни и информацията, съхранявана там, трябва да осъществите връзка с mysql сървъра. За целта трябва да знаете името му, портът на който слуша, трябва да имате потребителско име с някакви права и парола. Информация за тези неща, както и за имената на базите дани, с които можете да оперирате, ще получите от системния си администратор.

Връзката със сървъра става чрез mysql_connect () :



$vryzka=mysql_connect ("име на хост", "потребител", "парола");

Както забелязахте, в примерния файл (header.php) оставихме променливата $bd_host, съдържаща името на хоста празна. В този случай PHP ще се опита да се свърже с mysql сървър, който работи на локалния компютър - localhost. Всъщност освен да оставим променливата празна, можем да й зададем точно такава стойност:

$bd_host="localhost";

В много случаи обаче ще е необходимо да се свързвате с mysql сървър, който не работи на локалната машина. Например

$bd_host="db.idg.bg";

В този случай се предполага, че базите данни се намират на адрес db.idg.bg, а сървърът слуша на порт 3306, който се използва по подразбиране за mysql. Ако на този хост има няколко mysql сървъра или по някаква причина се ползва друг порт (например 3305), връзката би могла да се направи така :

$vryzka=mysql_connect ("име на хост:порт", "потребител", "парола");

Пример:

$vryzka=mysql_connect ("db.idg.bg:3305", "potrebitel", "parola");

Забележете променливата $vryzka, която от този момент нататък става идентификатор на осъществената връзка. Когато искаме да отправим запитване към базата данни, ще използваме точно тази промелива, за да уточним към коя по-точно база данни се обръщаме. Възможно е в един скрипт да осъществим връзки към няколко бази дани, намиращи се на различни mysql сървъри. Тогава идентификаторът е особено важен.

След като вече сме се свързали със сървъра, трябва да уточним с коя база данни искаме да работим:



mysql_select_db ("име на БД", "идентификатор на връзка");

Тук, както и във всички останали функции за работа с mysql, идентификаторът на връката не е задължителен. Ако сте отворили връзка само към един mysql сървър, то всички функции ще използват именно тази връзка.

След като приключим заявките към БД е добре да затворим връзката. Това става чрез функцията mysql_close ("идентификатор"). Нейното използване обаче не е задължително, защото PHP така или иначе ще затвори връзката след като изпълни текущия скрипт.

Ето и footer.php :

mysql_close ($link);
?>

Самоучител по PHP - Тестова директория


Поредица на PC World - Bulgaria




Каталог: wp-content -> uploads -> 2014
2014 -> Роля на клъстерите за подобряване използването на човешките ресурси в малките и средни предприятия от сектора на информационните технологии
2014 -> Докладна записка от Петър Андреев Киров Кмет на община Елхово
2014 -> Биография: Цироза е траш група от град Монтана. Началото й дават Валери Геров (вокал/китара), Бойко Йорданов и Петър Светлинов (барабани) през 2002година
2014 -> Албум на Първични Счетоводни Документи 01. Фактура
2014 -> Гр. Казанлък Утвърдил
2014 -> 1. Do you live in Madrid? A
2014 -> Брашно – тип „500” седмична справка: средни цени за периода 3 10 септември 2014 Г
2014 -> Права на родителите: Да изискват и получават информация за развитието, възпитанието и здравословното състояние на детето, както и информация за програмите, по които се извършва възпитателно-образователната работа в одз№116


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница