Автор Тема: Адресна книга (част 2)  (Прочетена 34408 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #30 -: 25 Септември 2012, 21:56:58 »
Точно в този ред ги карам нещата но никъде в уроците за MySQL не видях пример как да въбедем или изкараме данни от
базата посредством PHP код. В уроците е показано как да работим с базата данни в самата нея посредством phpmyadmin или директно със SQL код.
Но аз искам да видя как от ето тук <?php .........................?> да комуникирам с базата данни.
Преимерно в браузара имам едно поле за въвеждане на име и бутон. Как аз с PHP код да кажа "това име да се запише в тази база данни в тази таблица в тази колона" и след това как да кажа "изкараи ми в браузара от тази база данни от тази таблица всички които са с име Иван". Подобен на този пример урок търся. 

xxTTcc

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 21
  • -Получени: 10
  • Публикации: 414
  • Logged as root
Re: Адресна книга (част 2)
« Отговор #31 -: 25 Септември 2012, 22:45:13 »
Предполагам, че някъде там е казано, но все пак ще дам един елемтарен пример.

Имаш база данни където вкарваш име и фамилия. Тя е структорирана така

Таблица names
Колона ID, колона name, колона family.

Искаш да запишеш нещо в нея. И го правиш посредством post форма в html.

Първо трябва да обработиш променливите.

за input със name="ime" правиш следния код в php.

Код: PHP
  1. $name = $_POST['ime'];
  2. $family = $_POST['familia'];
  3.  
  4. //Ето я заявката към базата данни;
  5.  
  6. $query = "INSERT INTO names VALUES ('null', '$name', '$family')";
  7. $result = mysql_query($query);

Ако искаш да извлечеш после тая информация от базата, е горе долу същото

Код: PHP
  1. $query = "SELECT * FROM names"; //казваш - ИЗБЕРИ ВСИЧКО ОТ таблицата
  2. $result = mysql_query($query);


И сега трябва, да направиш цикъл, за да завъриш резултатите;



Код: PHP
  1. while($row = mysql_fetch_assoc($query))
  2. {
  3.     echo $row['name'];
  4.     echo $row['family']; //в квадратните скоби е името на колоната;
  5. }


Прочети правилата, потърси и попитай!

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #32 -: 26 Септември 2012, 17:44:05 »
Да подобно нещо исках да видя.
Благодаря.

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #33 -: 26 Септември 2012, 19:55:03 »
Още едно въпросче.
Понеже базата данни ми е в друга папка как да укажа пътя до нея?

xxTTcc

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 21
  • -Получени: 10
  • Публикации: 414
  • Logged as root
Re: Адресна книга (част 2)
« Отговор #34 -: 26 Септември 2012, 19:58:19 »
Още едно въпросче.
Понеже базата данни ми е в друга папка как да укажа пътя до нея?

Искаш да кажеш, че php файла с връзката ти с базата данни ли е в друга папка?
« Последна редакция: 26 Септември 2012, 20:00:08 от xxTTcc »
Прочети правилата, потърси и попитай!

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #35 -: 26 Септември 2012, 20:55:01 »
php файла ми е в една папка а базата данни  е в друга папка

xxTTcc

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 21
  • -Получени: 10
  • Публикации: 414
  • Logged as root
Re: Адресна книга (част 2)
« Отговор #36 -: 26 Септември 2012, 21:01:12 »
php файла ми е в една папка а базата данни  е в друга папка

Виж сега, значи, базата данни е нещо съвсем различно от php страницата. За да може да работиш с нея трябва да инициализираш връзка с mysql.

Правиш си един php фаел, кръщаваш го както искаш, по желание, common.php и след като въведеш редовете който съм показал по-надолу го инклудваш във всяка страница където искаш да правиш някви заявки.

В него трябва да имаш следния код:

Код: PHP
  1. $hostname = "localhost";
  2. $database = "database_name";
  3. $username = "database_user";
  4. $password = "database_password";
  5. $connect = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
  6. mysql_select_db($database);
« Последна редакция: 26 Септември 2012, 21:22:57 от xxTTcc »
Прочети правилата, потърси и попитай!

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #37 -: 26 Септември 2012, 21:10:23 »
Сега започват да ми се изясняват нещата  :)

Затова исках видео урок. Как става връзката с база данни и след това как се комуникира с нея посредством php кода.
Отново благодаря.
И все пак няма да е лошо ако някой направи такъв урок.

xxTTcc

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 21
  • -Получени: 10
  • Публикации: 414
  • Logged as root
Re: Адресна книга (част 2)
« Отговор #38 -: 26 Септември 2012, 21:25:29 »
Може и да направя един. Само един съвет. Преди да почнеш да си изграждаш някакви навици, изгледай всички уроци. И този за темплейтните системи. Идеята ми е че тези примери, които ти дадох, са базови.
Прочети правилата, потърси и попитай!

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #39 -: 26 Септември 2012, 21:53:59 »
Вече всичко работи както трябва. Разбирасе че ще изгледам първо всички уроци преди да предприема нещо.
Просто исках да разбера как става комуникацията между PHP  и базата данни.
Благодаря ти отново  :)

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #40 -: 26 Септември 2012, 22:17:59 »
Значи започнах със серията утоци PHP за начинаещи след което започнах серията за MySQL и сега серията ООП(в момента съм
е прекъснал защото реших че първо трябва да разбера как да комуникирам с MySQL посредством PHP код).
Но селед като преминах всички уроци за PHP и MySQL никъде не беше показано как двете работят по между им.
Мисля че ще е много полезно да се добави урок или серия уроци за това как PHP комуникира с базата данни.
Не зная дали терминологията(комуникират, работят) ми е точна но ако погледнете по горните постове ще разберете за какво говоря.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Адресна книга (част 2)
« Отговор #41 -: 27 Септември 2012, 16:24:29 »
Значи започнах със серията утоци PHP за начинаещи след което започнах серията за MySQL и сега серията ООП(в момента съм
е прекъснал защото реших че първо трябва да разбера как да комуникирам с MySQL посредством PHP код).
Но селед като преминах всички уроци за PHP и MySQL никъде не беше показано как двете работят по между им.
Мисля че ще е много полезно да се добави урок или серия уроци за това как PHP комуникира с базата данни.
Не зная дали терминологията(комуникират, работят) ми е точна но ако погледнете по горните постове ще разберете за какво говоря.
Може би серията от уроци как да си направим форум ще ти помогне. Има доста примери как се работи с MySQL DB, но кодът не е ОО.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Адресна книга (част 2)
« Отговор #42 -: 27 Септември 2012, 17:39:14 »
Мога да те посъветвам е преди да скочиш на уроците за обектно ориентирано програмиране е хубаво да направиш няколко проекта, които да са изцяло процедурни, за да схванеш как се работи с цикли, масиви и най- общо казано да разбереш основните неща.  И нека админите да премахнат коментарите, които не са по темата, тъй като са в грешен раздел.

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Адресна книга (част 2)
« Отговор #43 -: 29 Септември 2012, 23:11:11 »
Относно урока за адресната книга.
Аз реших поставената задача ( да направим така че да може да се редактират записите ) по следния начин:

Код: PHP
  1. function Friends()
  2. {
  3.   $a=  file('Friendlist.txt');
  4.   $b=0;
  5.   for($b=0;$b<count($a);$b++)
  6.     {
  7.       echo "$a[$b]<br/>";    
  8.     }
  9. }
  10. $a=Friends();
  11. echo "<form method=post action=edit.php>
  12.      <textarea name=address cols=80 rows=15 value=$a></textarea>
  13.      <input type=submit value=save>
  14.      </form>";
  15. if (strlen($_POST['address'])>3)
  16.     {
  17.     $b=$_POST['address'];
  18.     file_put_contents('Friendlist.txt', $b);
  19.     }
  20.  

Понеже не успях да изкарам директно записите в полето за текст ( до толкова ми стигат познанията засега ) те се показват над него и просто си ги копирам вътре след което всичко си работи както трябва. Задължително е обаче да се копират всички въведени до момента записи и тогава да правим промени където е нужно, защото ако копираме само този който ще променяме и натиснем запази във файла ще запазим само него и всичко друго ще бъде изтрито.В по горните постове гледах че някой питаше как ще стане ако липсва телефонен номер при мен става. Ако липсва запис на телефон ще се появи следното:
Name:peter,Phone:,Email:peter@penev.com
и просто попълваме телефона след двете точки на Phone.
Зная че реализацията и кода са зле но работят ( редакцията се получава по този малко странен начин  :) )
Очаквам вашите мнения добре ли съм се справил за начинаещ или нищо не става от мен  ;D ;D ;D

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Адресна книга (част 2)
« Отговор #44 -: 02 Октомври 2012, 21:04:54 »
До колко ти е добра логиката няма да коментирам.Това, че се замисляш как би могъл да прибавиш някаква функционалност към кода от урока обаче говори, че вървиш в правилна посока на развитие, така че продължавай така и занапред.
Понеже не успях да изкарам директно записите в полето за текст ( до толкова ми стигат познанията засега ) те се показват над него и просто си ги копирам вътре след което всичко си работи както трябва.

Това се получава така защото не връщаш някакъв резултат във функцията, а директно извеждаш такъв на екран посредством echo.За да присвои променливата $a всички записи от файла Friendlist.txt то трябва да ги върнеш в самата функция посредством езиковата конструкция return.Би трябвало да изгледаш и урока за това "как да не пишем код" за да схванеш начина по-който можеш с някакви елементарни навици да си оптимизираш кода по отношение на производителност.Примерно виж какво си направил ти във функцията Friends:
1. дефинирал си една променлива $b - напълно излишно след като я дефинираш отново в цикъла for
2.Можеше да изнесеш броя елементи в масива в една променлива, а не при всяко негово завъртане да караш пхп да брои елементите отново и отново в масива посредством функцията count():

Код: PHP
  1. //..
  2.   $count = count($a);
  3.   for($b=0;$b<$count;$b++)  {
  4.       echo "$a[$b]<br/>";    
  5.   }
  6. //..
3.В случая не се интересуваш от броя елементи в масива, а просто искаш да ги изведеш, затова можеше да използваш конструкцията foreach вместо цикъла for и да не броиш излишно броя елементи на масива.

За html частта също не бих коментирал, но е добре да знаеш че стойностите на атрибутите се ограждат в кавички(единични или двойни в зависимост от стила на писане).Важно е също да знаеш, че html елемента textarea няма атрибут с име value.Ако искаш да изведеш в него текст то би трябвало да го направиш между отварящия и затварящтия му таг (<textarea>инфо</textarea>)

Код: PHP
  1. function Friends() {
  2.   $a = file('Friendlist.txt');
  3.   $list = '';
  4.   foreach($a as $v)  {
  5.  
  6.       $list .= $v;    
  7.  
  8.     }
  9.     return $list;
  10. }
  11.  
  12. $a=Friends();
  13.  
  14. echo "<form method='post' action='edit.php'>
  15.      <textarea name='address' cols='80' rows='15'>$a</textarea>
  16.      <input type='submit' value='save'>
  17.      </form>";
  18.  
  19. if (strlen($_POST['address'])>3) {
  20.  
  21.                 $b=$_POST['address'];
  22.                 file_put_contents('Friendlist.txt', $b);
  23.  
  24. }

След като вкарахме стойностите в полето за текст както ти си го именувал трябва да помислиш за логиката си за редактиране на записите тъй като броя символи в $_POST['address'] ще бъде в почти всички случаи по-голям от 3. Успех !
« Последна редакция: 02 Октомври 2012, 21:14:15 от Stan »