Научи ме

Програмиране => Уроци => PHP за начинаещи => Темата е започната от: gatakka в 23 Декември 2009, 11:54:54

Титла: Адресна книга (част 2)
Публикувано от: gatakka в 23 Декември 2009, 11:54:54
** Тази тема дискутира:: Адресна книга (част 2) (http://nau4i.me/c/78) **
Автор: Гатака
Титла: Отг: Адресна книга (част 2)
Публикувано от: Out в 07 Март 2010, 22:07:00
За редактиране.. само , че ако не дадеш Save.. просто трие всичко което има в файла това успях аз да направя.. с нулевите ми познания :)
$edit = file_get_contents( ' data.txt ' );
echo  ' <form method= " post "  action= " edit.php " >
    <textarea rows= " 20 "  cols= " 100 " name= " text " > ' .$edit. '
Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 22 Март 2011, 15:45:34
Код: PHP
  1. if($_POST['submit']==1){
  2.  
  3.    $name = trim($_POST['name']);
  4.    $mail = trim($_POST['mail']);
  5.    $phone = trim($_POST['phone']);
  6.  
  7.    if(strlen($name)>3 && strlen($mail)>5) {
  8.  
  9.      $tmp = 'name:'.$name.';mail:'.$mail.';phone:'.$phone.';';
  10.          
  11.    file_put_contents('data.txt',$tmp. "\n",FILE_APPEND);
  12.    
  13.    echo 'Data was saved!';
  14.    
  15.    }else { echo 'wrong data!'; }
  16. }
  17.  

това ми е кода но когато записва информацията ,тя не е на нов ред? по специялно \n не работи..?
Титла: Re:Адресна книга (част 2)
Публикувано от: kerkenez в 22 Март 2011, 16:09:21
Пробвай с \n\r
Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 22 Март 2011, 16:54:31
И това не се получава...

Преди време (година-две) ги знаех тези неща и се получаваха , сега да не са сменили php към по нова версия и да не са валидни вече ?
Титла: Re:Адресна книга (част 2)
Публикувано от: jazzman в 22 Март 2011, 17:36:16
Цитат
file_put_contents('data.txt',nl2br("$tmp \n"),FILE_APPEND);
Пробвай с functon nl2br.
Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 22 Март 2011, 18:38:21
Нищо не стана.

Знам ,че се опитвате да помогнете ,но имам чувството ,че пишете само за да показва отдоло при профила ви по-голям брой мнения , просто никакъв адекватен отговор освен този с вариантите ,но се занимавам от вчера с PHP и не мога да го приложа.
Функцията nl2br(); не върши работа тук.
Титла: Re:Адресна книга (част 2)
Публикувано от: jazzman в 22 Март 2011, 19:09:24
Нещо си наакал положението.
Дай да видим изхода, нормално  ;)
Титла: Re:Адресна книга (част 2)
Публикувано от: echeveria в 22 Март 2011, 19:30:06
\n \r  са неща които работят в конзолна версия на рнр. Няма как браузера да разбере че това значи нов ред.
Оф тва било за фаилове не за браузер. Извинявам се!
Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 22 Март 2011, 19:40:40
index.php
Код: PHP
  1. <?
  2. ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html>
  5.  <head>
  6.  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7.      <title> Test </title>
  8.  </head>
  9.      <body>
  10. <?       
  11.  
  12. if($_SESSION['is_logged']==TRUE) {
  13.  
  14. echo '<a href=add.php>Add</a> | <a href=logout.php>Logout</a>';
  15.  
  16. }else {
  17. if($_GET['error']==1){ echo 'Error!'; }
  18.  
  19. ?>
  20. <form method="post" action="login.php">
  21. <p>Useraname</p><input type="text" name="login" /><br>
  22. <p>Pass</p><input type="password" name="pass" /><br><br>
  23. <input type="submit" value="login" /><br>
  24.  
  25. </form>
  26. <?
  27. }
  28. ?>
  29. </body>
  30. </html>
  31.  

login.php
Код: PHP
  1. <?
  2.  
  3. $pass=$_POST['pass'];
  4. $log=$_POST['login'];
  5.  
  6. if(strlen(trim($log))>3 && strlen(trim($pass))>3)
  7. {
  8.  
  9.  
  10.   if($log=='iliqn' && $pass=='12345') {
  11.  
  12.  
  13.   $_SESSION['is_logged']=TRUE;
  14. header('Location: index.php');
  15.  
  16.  
  17.  
  18. } else { header('Location: index.php?error=1'); }
  19.  
  20.  
  21.  
  22. } else { header('Location: index.php?error=1'); }
  23.  
  24. ?>
  25.  
logout.php
Код: PHP
  1. <?
  2. header('Location: index.php');
  3. ?>
  4.  
add.php
Код: PHP
  1. <?
  2.  
  3. if($_SESSION['is_logged']==TRUE) {
  4.  
  5. if($_POST['submit']==1){
  6.  
  7.    $name = trim($_POST['name']);
  8.    $mail = trim($_POST['mail']);
  9.    $phone = trim($_POST['phone']);
  10.  
  11.    if(strlen($name)>3 && strlen($mail)>5) {
  12.  
  13.      $tmp = 'name:'.$name.';mail:'.$mail.';phone:'.$phone.';';
  14.          
  15. file_put_contents("data.txt",$tmp."\n",FILE_APPEND);
  16.    
  17.    echo 'Data was saved!';
  18.    
  19.    }else { echo 'wrong data!'; }
  20. }
  21. ?>
  22. <form method="post" action="add.php">
  23. <input type="hidden" name="submit" value="1" />
  24. <p>Name</p><input type="text" name="name" />
  25. <p>Email</p><input type="text" name="mail" />
  26. <p>Mobile</p><input type="text" name="phone" /><br /><br />
  27. <input type="submit" value="Add" name ="set" />
  28. </form>
  29. <?
  30. }
  31. else { header('Location: index.php'); }
  32.  
  33. ?>
  34.  
Титла: Re:Адресна книга (част 2)
Публикувано от: echeveria в 22 Март 2011, 19:57:56
Тоя код си работи само дето махнах това:
Код: PHP
  1. <?php
  2.  
  3.  
  4.  
  5. if($_POST['submit']==1){
  6.  
  7.    $name = trim($_POST['name']);
  8.    $mail = trim($_POST['mail']);
  9.    $phone = trim($_POST['phone']);
  10.  
  11.    if(strlen($name)>3 && strlen($mail)>5) {
  12.  
  13.      $tmp = 'name:'.$name.';mail:'.$mail.';phone:'.$phone.';';
  14.          
  15. file_put_contents("data.txt",$tmp."\n",FILE_APPEND);
  16.    
  17.    echo 'Data was saved!';
  18.    
  19.    }else { echo 'wrong data!'; }
  20. }
  21. ?>
  22. <form method="post" action="add.php">
  23. <input name="submit" value="1" type="hidden">
  24. <p>Name</p><input name="name" type="text">
  25. <p>Email</p><input name="mail" type="text">
  26. <p>Mobile</p><input name="phone" type="text">
  27. <?php
  28.  
  29. <input value="Add" name="set" type="submit">
  30. </form>

Така че сети се къде е грешката!



Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 22 Март 2011, 20:11:32
Не работи ! :)

Напрао си дигнах нервите с тея простотии , неска цял ден са заминамавам с това  ,ако до 2 часа не ги разбера как стават ги заебавам и php -та и сякви простотии. :)
Титла: Re:Адресна книга (част 2)
Публикувано от: echeveria в 22 Март 2011, 20:28:46
Не работи ! :)

Напрао си дигнах нервите с тея простотии , неска цял ден са заминамавам с това  ,ако до 2 часа не ги разбера как стават ги заебавам и php -та и сякви простотии. :)
Аз казвам че работи! Хич не знам при теб какво къде кога и как!
Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 22 Март 2011, 20:39:53
Мерси ,все пак :)
Титла: Re:Адресна книга (част 2)
Публикувано от: kerkenez в 23 Март 2011, 09:40:22
Зависи и с какъв текстов редактор отваряш .txt файла.
Примерно ако ползваш скапания notepad вграден в Windows(7) е 100% сигурно, че няма да ти показва новите редове - затова използвай Notepad++ !
Титла: Re:Адресна книга (част 2)
Публикувано от: iliqn в 23 Март 2011, 11:48:11
Зависи и с какъв текстов редактор отваряш .txt файла.
Примерно ако ползваш скапания notepad вграден в Windows(7) е 100% сигурно, че няма да ти показва новите редове - затова използвай Notepad++ !
Мерси!
Титла: Re:Адресна книга (част 2)
Публикувано от: Krusteff в 20 Април 2011, 20:15:04
Става и с WordPad ( Windows XP )
Титла: Re:Адресна книга (част 2)
Публикувано от: wuser в 20 Април 2011, 21:28:00
Кръстев не знаеш, какво говориш. Врайтера е най-безумното животно на тоя свят, а за код е направо ужас.
Титла: Re:Адресна книга (част 2)
Публикувано от: Krusteff в 24 Април 2011, 14:07:10
Казах, че може с него да види "\n" , а не да пише на него.
Титла: Re: Адресна книга (част 2)
Публикувано от: House M.D. в 08 Февруари 2012, 07:08:13
Откакто изгледах всичките серии, винаги съм се чудел как става магията с редактиране на текстов файл. Някой би ли ми обяснил?
Титла: Re: Адресна книга (част 2)
Публикувано от: echeveria в 08 Февруари 2012, 09:29:34
Еми най лесния начин е да си направиш срипт който да чете целия файл в текстарея на браузера, да си го редактваш и да го презапишеш върху стария отгоре.
това е малко старомодно:
http://www.dreamincode.net/forums/topic/9866-textarea-editor/
http://stackoverflow.com/questions/5660369/looking-for-a-tutorial-on-how-to-create-a-simple-text-editor
Титла: Re: Адресна книга (част 2)
Публикувано от: xezzy в 09 Юли 2012, 02:19:21
Има ли такова чудо(функция), която да търси реда(който аз кажа) във текстовия файл и там да слага текста... нещо от този сорт...
Титла: Re: Адресна книга (част 2)
Публикувано от: jazzman в 09 Юли 2012, 02:28:22
Има ли такова чудо(функция), която да търси реда(който аз кажа) във текстовия файл и там да слага текста... нещо от този сорт...
За търсене на текст всеки текстови редактор си има search engine, oбикновено се стартира с Ctrl+F.  A да сложи текста точно между две думи някъде в файла, аз често позлвам regEx в Netbeans.
Титла: Re: Адресна книга (част 2)
Публикувано от: xezzy в 09 Юли 2012, 02:54:39
ще ти обясня целия случай, защото явно така не се разбира
имам един файл data.txt и имам 3 форми... име, емайл и телефон... при въвеждане не е задължително да се въведе телефон и тук идва проблема, който е, как след това ако реша да редактирам телефона... понеже моите знания са доста ограничени аз се опитвам да го направя така - при въвеждане на име, емайл и телефон да проверява във data.txt дали името и емайла са там и ако са там да допише телефона... всичко съм направил само ми остава да накарам да впише телефона на точното място... демек ми трябва функция, която да и кажа на кой ред(аз съм си направил променлива, която вади от масива реда, тоест това си е автоматично) и тя да впише там на определения ред информацията, която и кажа...
Титла: Re: Адресна книга (част 2)
Публикувано от: jazzman в 09 Юли 2012, 03:16:43
ще ти обясня целия случай, защото явно така не се разбира
имам един файл data.txt и имам 3 форми... име, емайл и телефон... при въвеждане не е задължително да се въведе телефон и тук идва проблема, който е, как след това ако реша да редактирам телефона... понеже моите знания са доста ограничени аз се опитвам да го направя така - при въвеждане на име, емайл и телефон да проверява във data.txt дали името и емайла са там и ако са там да допише телефона... всичко съм направил само ми остава да накарам да впише телефона на точното място... демек ми трябва функция, която да и кажа на кой ред(аз съм си направил променлива, която вади от масива реда, тоест това си е автоматично) и тя да впише там на определения ред информацията, която и кажа...

Не ти трябва функция а релативна база данни. В противен случай много има да си скубеш косите, особено ако файла стане много голям. Иначе в твоят случай, трябва да ми дадеш откъс от data.txt за да видя как е структуиран.
Титла: Re: Адресна книга (част 2)
Публикувано от: Stan в 09 Юли 2012, 10:03:33
Най-подходящия начин е да го направиш с бази данни както те е посъветвал @jazzman.Все пак, ако държиш да го правиш с файл трябва да се запознаеш по-добре с начина на четене на файл от php и що е то файлов указател.Като идея ми хрумва следното: записваш името и имейла от контактната форма на нови редове, ако полето за телефон е празно записваш след тях на нов ред примерно "empty".Тъй като името и имейла са задължителни ти е достатъчно да провериш след даден имейл дали има въведен телефон, ако е empty(празно) презаписваш този ред с даден телефон.
Титла: Re: Адресна книга (част 2)
Публикувано от: xezzy в 09 Юли 2012, 12:06:04
мерси много, аз знам, че попринцип с база данни е начина да се направи това, но просто в определения видео урок са ни поставили като задача да го направим на текстов документ...
Титла: Re: Адресна книга (част 2)
Публикувано от: HD в 09 Юли 2012, 12:29:27
Ми що не го направиш с mongo db?
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 25 Септември 2012, 18:43:51
Искам да попитам има ли урок за работа с база данни в PHP защото не мога да намеря.
Примерно как да въведем данни в базата от PHP кода, как да вземем информация от базата.
Титла: Re: Адресна книга (част 2)
Публикувано от: HD в 25 Септември 2012, 18:48:34
Разбира се, че има. В секцията за mysql. И само един съвет, който сме го казвали хиляди пъти.  Преди да започнеш да пишеш каквото и да е, хубаво е да се изгледат уроците за php, заедно с адресната книга, след това да се гледат mysql уроците и накрая да се направят примерните приложения и най-накрая да се обърне внимание на  ООП.  По този начин ще си изградиш основа, за което в последствие като закопаеш няма да съжаляваш.
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 25 Септември 2012, 21:56:58
Точно в този ред ги карам нещата но никъде в уроците за MySQL не видях пример как да въбедем или изкараме данни от
базата посредством PHP код. В уроците е показано как да работим с базата данни в самата нея посредством phpmyadmin или директно със SQL код.
Но аз искам да видя как от ето тук <?php .........................?> да комуникирам с базата данни.
Преимерно в браузара имам едно поле за въвеждане на име и бутон. Как аз с PHP код да кажа "това име да се запише в тази база данни в тази таблица в тази колона" и след това как да кажа "изкараи ми в браузара от тази база данни от тази таблица всички които са с име Иван". Подобен на този пример урок търся. 
Титла: Re: Адресна книга (част 2)
Публикувано от: xxTTcc в 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. }


Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 26 Септември 2012, 17:44:05
Да подобно нещо исках да видя.
Благодаря.
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 26 Септември 2012, 19:55:03
Още едно въпросче.
Понеже базата данни ми е в друга папка как да укажа пътя до нея?
Титла: Re: Адресна книга (част 2)
Публикувано от: xxTTcc в 26 Септември 2012, 19:58:19
Още едно въпросче.
Понеже базата данни ми е в друга папка как да укажа пътя до нея?

Искаш да кажеш, че php файла с връзката ти с базата данни ли е в друга папка?
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 26 Септември 2012, 20:55:01
php файла ми е в една папка а базата данни  е в друга папка
Титла: Re: Адресна книга (част 2)
Публикувано от: xxTTcc в 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);
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 26 Септември 2012, 21:10:23
Сега започват да ми се изясняват нещата  :)

Затова исках видео урок. Как става връзката с база данни и след това как се комуникира с нея посредством php кода.
Отново благодаря.
И все пак няма да е лошо ако някой направи такъв урок.
Титла: Re: Адресна книга (част 2)
Публикувано от: xxTTcc в 26 Септември 2012, 21:25:29
Може и да направя един. Само един съвет. Преди да почнеш да си изграждаш някакви навици, изгледай всички уроци. И този за темплейтните системи. Идеята ми е че тези примери, които ти дадох, са базови.
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 26 Септември 2012, 21:53:59
Вече всичко работи както трябва. Разбирасе че ще изгледам първо всички уроци преди да предприема нещо.
Просто исках да разбера как става комуникацията между PHP  и базата данни.
Благодаря ти отново  :)
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 26 Септември 2012, 22:17:59
Значи започнах със серията утоци PHP за начинаещи след което започнах серията за MySQL и сега серията ООП(в момента съм
е прекъснал защото реших че първо трябва да разбера как да комуникирам с MySQL посредством PHP код).
Но селед като преминах всички уроци за PHP и MySQL никъде не беше показано как двете работят по между им.
Мисля че ще е много полезно да се добави урок или серия уроци за това как PHP комуникира с базата данни.
Не зная дали терминологията(комуникират, работят) ми е точна но ако погледнете по горните постове ще разберете за какво говоря.
Титла: Re: Адресна книга (част 2)
Публикувано от: Avalanche в 27 Септември 2012, 16:24:29
Значи започнах със серията утоци PHP за начинаещи след което започнах серията за MySQL и сега серията ООП(в момента съм
е прекъснал защото реших че първо трябва да разбера как да комуникирам с MySQL посредством PHP код).
Но селед като преминах всички уроци за PHP и MySQL никъде не беше показано как двете работят по между им.
Мисля че ще е много полезно да се добави урок или серия уроци за това как PHP комуникира с базата данни.
Не зная дали терминологията(комуникират, работят) ми е точна но ако погледнете по горните постове ще разберете за какво говоря.
Може би серията от уроци как да си направим форум (http://nau4i.me/jupgrade/index.php/php2/9-2009-11-30-10-03-04) ще ти помогне. Има доста примери как се работи с MySQL DB, но кодът не е ОО.
Титла: Re: Адресна книга (част 2)
Публикувано от: HD в 27 Септември 2012, 17:39:14
Мога да те посъветвам е преди да скочиш на уроците за обектно ориентирано програмиране е хубаво да направиш няколко проекта, които да са изцяло процедурни, за да схванеш как се работи с цикли, масиви и най- общо казано да разбереш основните неща.  И нека админите да премахнат коментарите, които не са по темата, тъй като са в грешен раздел.
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 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
Титла: Re: Адресна книга (част 2)
Публикувано от: Stan в 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. Успех !
Титла: Re: Адресна книга (част 2)
Публикувано от: ppenev в 04 Октомври 2012, 17:00:19
Благодаря за изчерпателния анализ. Надявам се за напред да се подобрят нещата. :)
Титла: Re: Адресна книга (част 2)
Публикувано от: sisoweb в 15 Ноември 2012, 16:17:40
Защо при зареждане на страницата ми излиза "Wrong data"
Код: PHP
  1. <?php
  2. if($_SESSION['is_logged']==TRUE)
  3. {
  4.     if($_POST['subbmitForm']==1)
  5.     {
  6.         $name= trim($_POST['name']);
  7.         $email= trim($_POST['email']);
  8.         $mobile= trim($_POST['mobile']);
  9.         if(strlen($name)>3 && strlen($email)>8)
  10.         {
  11.             $tmp='name-'.$name.'; email-'.$email.'; mobile-'.$mobile.';';
  12.             file_put_contents('data.txt', $tmp , FILE_APPEND);
  13.             ?>
  14.         <script type="text/javascript">
  15.             alert("Data saved");
  16.         </script>
  17.         <?php
  18.         }
  19.     }else{
  20.         ?>
  21.         <script type="text/javascript">
  22.             alert("Wrong data");
  23.         </script>
  24.         <?php
  25.     }
  26.     ?>
  27.     <form method="post" action="add.php">
  28.         Name : <input type="text" name="name" /><br/>
  29.         <input type="hidden" value="1" name="subbmitForm">
  30.         Email : <input type="text" name="email" /><br/>
  31.         Mobile : <input type="text" name="mobile" /><br/>
  32.         <input type="submit" value="Add">
  33.     </form>
  34.     <?php
  35. }else{
  36.     header('Location: index.php');
  37. }
  38.  
  39. ?>
  40.    
  41.  
  42.  
  43.  
Титла: Re: Адресна книга (част 2)
Публикувано от: jazzman в 15 Ноември 2012, 20:39:33
Ами най-простото и първо нещо, което би могъл да е видиш е статуса от $_SESSION['is_logged'].
Титла: Re: Адресна книга (част 2)
Публикувано от: HanKrum в 15 Ноември 2012, 20:42:21
По точно $_POST['subbmitForm'] не е == на 1.
Между 4 и 5 ред сложи
Код: PHP
  1. ...
  2. var_dump($_POST['subbmitForm']);
  3. exit('Прекъсване');
  4. ...
да видим какво ще ти даде.
Титла: Re: Адресна книга (част 2)
Публикувано от: jazzman в 15 Ноември 2012, 20:47:42
Цитат
Защо при зареждане на страницата ми излиза "Wrong data"

Наборе, нещо не четеш май както требе  ;D
Титла: Re: Адресна книга (част 2)
Публикувано от: HanKrum в 15 Ноември 2012, 21:09:38
Нали това казвам, защото ако не е събмитнато $_POST['subbmitForm'] не е 1 и затова се изпълнява:
Код: HTML
  1. <script type="text/javascript">
  2.     alert("Wrong data");
Титла: Re: Адресна книга (част 2)
Публикувано от: sisoweb в 15 Ноември 2012, 21:15:14
По точно $_POST['subbmitForm'] не е == на 1.
Между 4 и 5 ред сложи
Код: PHP
  1. ...
  2. var_dump($_POST['subbmitForm']);
  3. exit('Прекъсване');
  4. ...
да видим какво ще ти даде.
Дава ми NULL Прекъсване
Титла: Re: Адресна книга (част 2)
Публикувано от: HanKrum в 15 Ноември 2012, 21:54:59
А сега без exit('Прекъсване'); но ми дай резултата преди събмитване и след.
Титла: Re: Адресна книга (част 2)
Публикувано от: sisoweb в 15 Ноември 2012, 22:10:46
А сега без exit('Прекъсване'); но ми дай резултата преди събмитване и след.
Преди е нул , а след string(1) "1"
Титла: Re: Адресна книга (част 2)
Публикувано от: HanKrum в 15 Ноември 2012, 22:27:17
Ами тези въпроси ти ги зададох, за да се сетиш сам, тъй като не си, ти давам правилния код:
Код: PHP
  1. <?php
  2. if ($_SESSION['is_logged'] == TRUE) {
  3.     if ($_POST['subbmitForm'] == 1) {
  4.         $name = trim($_POST['name']);
  5.         $email = trim($_POST['email']);
  6.         $mobile = trim($_POST['mobile']);
  7.         if (strlen($name) > 3 && strlen($email) > 8) {
  8.             $tmp = 'name-' . $name . '; email-' . $email . '; mobile-' . $mobile . ';';
  9.             file_put_contents('data.txt', $tmp, FILE_APPEND);
  10.             ?>
  11.             <script type="text/javascript">
  12.                 alert("Data saved");
  13.             </script>
  14.             <?php
  15.         } else {
  16.             ?>
  17.             <script type="text/javascript">
  18.                 alert("Wrong data");
  19.             </script>
  20.             <?php
  21.         }
  22.     }
  23.     ?>
  24.     <form method="post" action="add.php">
  25.         Name : <input type="text" name="name" /><br/>
  26.         <input type="hidden" value="1" name="subbmitForm">
  27.         Email : <input type="text" name="email" /><br/>
  28.         Mobile : <input type="text" name="mobile" /><br/>
  29.         <input type="submit" value="Add">
  30.     </form>
  31.     <?php
  32. } else {
  33.     header('Location: index.php');
  34. }
елс-а с JS трябва да е на проверката за валидност, а не на събмита ;)
ето го работещ: http://84.43.147.197/Testove/adr_kn/add.php
Титла: Re: Адресна книга (част 2)
Публикувано от: jazzman в 15 Ноември 2012, 23:19:47
Цитат
Защо при зареждане на страницата ми излиза "Wrong data"

Наборе, нещо не четеш май както требе  ;D

(http://lh5.ggpht.com/-rYimViMLmSs/ThNNXMx97vI/AAAAAAAAD5k/fqAsK_PHrC8/bullshit-meter-01_thumb.gif)
Титла: Re: Адресна книга (част 2)
Публикувано от: Tinyiso в 18 Март 2014, 20:27:43
Здравейте,имам малък проблем с кода на add.php от урока ,в моя случай не ми прави никакви проверки въпреки че $_SESSION['is_logged'] ми връща true.




Код: PHP
  1. <?php
  2. if ($_SESSION['is_logged']==true) {
  3.             if ($_POST['sbmit'] == 1){
  4.                     $name = trim($_POST['name']);
  5.                     $email = trim($_POST['email']);
  6.                     $phone = trim($_POST['mobile']);
  7.                     if (strlen($name) > 3 && strlen($email) > 5) {
  8.  
  9.                                     $tmp = 'name:' . $name . ';email:' . $email . ';mobile:' . $phone . ';';
  10.                                     file_put_contents('data.txt', $tmp . "\r \n", FILE_APPEND);
  11.                                     echo 'Data was saved!';
  12.                     }
  13.                     else{
  14.                                      echo "wrong data";
  15.                     }
  16.                     ?>
  17.                     <form method="post" action="add.php" >
  18.                         Name:<input type="text" name="name"><br>
  19.                         <input type="hidden" name="sbmit" value="1">
  20.                         Email:<input type="text" name="email"><br>
  21.                         Mobile:<input type="number" name="mobile"><br>
  22.                         <input type="submit" value="add">
  23.                     </form>
  24.                     <?php
  25.           } else {
  26.               header('Location:index.php');
  27.           }
  28. }
  29. else {
  30.     echo '<h1>LOGIN PLEASE!</h1>';
  31. }
  32.  
Титла: Re: Адресна книга (част 2)
Публикувано от: HanKrum в 18 Март 2014, 21:18:30
$_POST['sbmit']  не е ли $_POST['submit']
... доглеждайте бе хора, за да няма грешки copy/paste!!!
Титла: Re: Адресна книга (част 2)
Публикувано от: Avalanche в 18 Март 2014, 21:45:37
Всъщност наистина е sbmit. Време е да се запознаеш с методите за дебъг на кода. Преди въпросната проверка напиши един var_dump($_POST) и покажи какво се появява.
Титла: Re: Адресна книга (част 2)
Публикувано от: Tinyiso в 18 Март 2014, 23:16:19
 
Код: PHP
  1. var_dump($_POST);
array(0) { }
Код: PHP
  1. var_dump($_SESSION);
  array(1) { ["is_logged"]=> bool(true) } 
Титла: Re: Адресна книга (част 2)
Публикувано от: Avalanche в 19 Март 2014, 16:24:12
Ъхм, нещо си оплескал цялото нещо. Сега погледнах кода ти по-задълбочено и гледам че формата се намира в проверката дали тя самата е пратена, което на практика е лишено от логика, защото формата няма как да я пратиш, ако първо не я виждаш. Формата трябва да се намира в блока, където $_SESSION['is_logged'] == true, но извън блока $_POST['sbmit'] == 1, и също така след него (иначе ще имаш проблеми с хедърите). В кодът, който си споделил това място се намира между 28 и 29 ред (май). Успех!
Титла: Re: Адресна книга (част 2)
Публикувано от: kernel в 20 Февруари 2016, 12:50:16
Здравейте, имам проблем с add.php файла. Не създава файла data.txt и съответно ми вади Wrong data

<?php
session_start
();
if(
$_SESSION['is_logged']==TRUE)
{   
    if(
$_POST['formSubmit']==1)
    {
        
$name=  trim($_POST['name']);
        
$email=  trim($_POST['email']);
        
$phone=  trim($_POST['phone']); 
        if(
strlen($name)>&& strlen($email)>5)
        {
            
$tmp='name:'.$name.';email:'.$email.';mobile:'.$phone.';';
            
file_put_contents("data.txt"$tmp."\n",FILE_APPEND);
            echo 
'Data was saved';
        }
        else
        {
            echo 
'Wrong data';
        }
        
        
    }
    
?>

    <form method="post" action="add.php">
    <input type="hidden" name="formSubmit" value="1">
    Name:<input type="text" name="name"><br/>             
    Email:<input type="text" name="mail"><br/>
    Mobile:<input type="text" name="phone"><br/>
    <input type="submit" value="Add">
</form>
<?php
}
 else
{
    
header('Location: index.php');    
}
?>

Титла: Re: Адресна книга (част 2)
Публикувано от: Avalanche в 20 Февруари 2016, 13:08:50
Полето във формата се казва mail, а ти гледаш за email.
Титла: Re: Адресна книга (част 2)
Публикувано от: kernel в 20 Февруари 2016, 14:35:22
Да, оправих го, благодаря ти. Но сега не работи заради "\n" , замених го PHP_EOL , но въпреки това не работи (на windows съм)
Титла: Re: Адресна книга (част 2)
Публикувано от: Avalanche в 20 Февруари 2016, 15:22:31
Дефинирай "не работи". Пробвай да създадеш ръчно файла, трябва да ти показва някакви грешки
Титла: Re: Адресна книга (част 2)
Публикувано от: kernel в 20 Февруари 2016, 16:41:52
Открих грешката. Бях пропуснал едно = в цикъла foreach() на name. В index.php  :)
Титла: Re: Адресна книга (част 2)
Публикувано от: amxx в 30 Март 2016, 15:53:28
Здравейте.Имам нужда от малко помощ, правя всичко както е на видеото с foreach, нo ми се получава следния резултат :
Logout|Add

Array
(
   
)

Array
(
   
)

Array
(
   
)

Array
(
   

)

Array
(
   
)

Array
(
   
)

Array
(
   
)

Array
(
   

)

Array
(
   
)

Array
(
   
)

Array
(
   
)

Array
(
   

)

Name Email Phone

Ето го и кода:
Код: PHP
  1. <?php
  2. ?>
  3. <!DOCTYPE html>
  4. <html>
  5.     <head>
  6.         <meta charset="UTF-8">
  7.         <title></title>
  8.     </head>
  9.     <body>
  10.         <?php
  11.         if (isset($_SESSION['is_logged'])==true) {
  12.             echo '<a href="logout.php">Logout</a>|<a href="add.php">Add</a></br>';
  13.             $friends=file('data.txt');
  14.             echo '<table border=1><tr><td>Name</td><td>Email</td><td>Phone</td></tr>';
  15.             foreach ($friends as $v){
  16.                 $tmp=  explode(';', $v);
  17.                 foreach ($tmp as $vv){
  18.                     $tmp2=  explode(';', $vv);
  19.                     echo '<pre>'.print_r($tmp2,true).'</pre>';
  20.                 }
  21.                 //echo '<tr><td>Name</td><td>Email</td><td>Phone</td></tr>';
  22.             }
  23.             echo '</table>';
  24.         }  else {
  25.             // правим проверка дали е изпратена формата
  26.             // като проверяваме дали не е празен масива _POST, ако не е празен
  27.             // значи са изпратени данни и може да реализираме логиката за входа
  28.             if (!empty($_POST)) {
  29.                 $login=trim(addslashes($_POST['login']));
  30.                 $pass=trim(addslashes($_POST['pass']));
  31.                 if (strlen($login)>3 && strlen($pass)>3) {
  32.                     if ($login=="stefan" && $pass="asdasd") {
  33.                         $_SESSION['is_logged']=true;
  34.                         header('Location:index.php');
  35.                     }
  36.                 }else {
  37.                     echo 'wrong username/password'.'</br>';
  38.                 }
  39.             }
  40.             ?>
  41.                 <form method="post" action="index.php">
  42.                     Username:</br><input type="text" name="login"/></br>
  43.                     Password:</br><input type="password" name="pass"/></br>
  44.                     <input type="submit" value="Login"/>
  45.                 </form>  
  46.             <?php
  47.         }
  48.         ?>
  49.     </body>
  50. </html>
  51.  

Титла: Re: Адресна книга (част 2)
Публикувано от: kjufte в 30 Март 2016, 16:52:58
Не съм гледал урока и не знам какъв точно ти е проблема, но като ти гледам кода и output-а предполагам, че имаш грешка при цепенето на стринговете. Два пъти цепиш на ;, а стойностите ти в изхода изглежда да са разделени с :  ;)
Титла: Re: Адресна книга (част 2)
Публикувано от: amxx в 30 Март 2016, 18:23:20
Не съм гледал урока и не знам какъв точно ти е проблема, но като ти гледам кода и output-а предполагам, че имаш грешка при цепенето на стринговете. Два пъти цепиш на ;, а стойностите ти в изхода изглежда да са разделени с :  ;)

Мерси за бързия отговор.Точно там беше проблема вторите ";" трябваше да станат на ":".Благодаря отново :)