Автор Тема: Галерия - част 1  (Прочетена 43113 пъти)

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

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част1
« Отговор #45 -: 29 Април 2012, 14:30:04 »
Значи, казах ти и в предишна твоя тема как да проверяваш за синтактични грешки в заявката - > http://nau4i.me/forum/index.php/topic,14497.msg31766.html#msg31766 , такива теми са дъвкани,дъвкани до писване, ползвай търсачката.Също провери си функцията run_q дали е 1 към 1 от урока.

bgludost

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 41
Re: Галерия - част1
« Отговор #46 -: 29 Април 2012, 14:44:32 »
Правих опити и с тази команда и ми показва mysql_error(): supplied resource is not a valid MySQL-Link resource in но немога да намеря кое в заявката ми е невалидно.

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част1
« Отговор #47 -: 29 Април 2012, 22:31:25 »
Сега като видях по-добре болежката, която ти дава mysql_fetch_assoc съм почти сигурен, че проблема е в функцията "run_q".Нали както ти казах в предишна тема че ако заявката не се изпълни правилно mysql_query ще върне булево false следователно болжеката ще бъде нещо от сорта :
"Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in .. "
при теб е:
"Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in.."
следователно в променливата $rs функцията "run_q" връща стринг, а не ресурс - дай кода на функцията.

bgludost

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 41
Re: Галерия - част1
« Отговор #48 -: 29 Април 2012, 22:47:24 »
Код: PHP
  1. <?php
  2. include 'common.php';
  3.  
  4.  if ($_SESSION['is_logged']===true) {
  5.      if ($_POST['fs']==1)
  6.      {
  7.          $new_name=  addslashes(trim($_POST['new_folder_name']));
  8.          if (strlen($new_name)>1)
  9.          {
  10.             $rs= ('SELECT COUNT(*) as cnt FROM user_catalogs WHERE user_id='.$_SESSION['user_id'].' AND name="'.$new_name.'"');
  11.             $res= mysql_query($rs);            
  12.             mysql_error($res);            
  13.             $row=  mysql_fetch_assoc($rs);            
  14.             print_r($row);
  15.            
  16.             if($row['cnt']==0)
  17.             {
  18.                 echo 'zapisyt uspeshen';
  19.               }
  20.             else
  21.             {
  22.                 echo 'Imeto syshtestvuva';
  23.             }
  24.          }
  25.  else {
  26.           echo $error[]='Въведете име';
  27.        }
  28.      }
  29.     $folders= ('SELECT * FROM user_catalogs WHERE user_id='.$_SESSION['user_id']);
  30.    
  31.     include 'tamplate/header.php';
  32.     include 'tamplate/new_folders.php';
  33.     include 'tamplate/footer.php';
  34.   } else {
  35.     header('Location: index.php');
  36.     exit;
  37. }
[/color]

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част1
« Отговор #49 -: 29 Април 2012, 23:05:01 »
Код: PHP
  1. if (strlen($new_name)>1)
  2.          {
  3.             $rs = 'SELECT COUNT(*) as cnt FROM user_catalogs WHERE user_id='.$_SESSION['user_id'].' AND name="'.$new_name.'"';
  4.             $res = mysql_query($rs);            
  5.             if(!$res) echo mysql_error();            
  6.             $row =  mysql_fetch_assoc($res);            
  7.             print_r($row);
  8.             if($row['cnt']==0)
  9.             {
  10.                 echo 'zapisyt uspeshen';
  11.              }
  12.          /...
  13.      }
  14.  

bgludost

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 41
Re: Галерия - част1
« Отговор #50 -: 30 Април 2012, 14:42:22 »
За да можем да покажем съдържанието от заявката на $folders правим функцията fetch_all , но защо ако не използваме и функцията rуn_q кода не сработва,след като функцията run_q не прави нищо повече от това да оправя еncoding ?
Код: PHP
  1. $folders =  fetch_all(run_q('SELECT * FROM user_catalogs WHERE user_id='. $_SESSION['user_id']));

Код: PHP
  1. function run_q($sql)
  2. {
  3.     mysql_query('SET NAMES UTF8');
  4. $rs=mysql_query($sql);
  5.     {
  6.     echo mysql_error().' SQL:  '.$sql; }
  7.     return $rs;
  8.    
  9.     }

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част1
« Отговор #51 -: 30 Април 2012, 15:03:50 »
но защо ако не използваме и функцията rуn_q кода не сработва,след като функцията run_q не прави нищо повече от това да оправя еncoding ?

Как да не прави ? - тази потребителска функция "run_q" връща ресурса от успешно изпълнение на заявката (return $rs), който се обработва от функцията mysql_fetch_assoc.Ако я няма подаваш един обикновен стринг на mysql_fetch_assoc и идват проблемите.

bgludost

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 41
Re: Галерия - част1
« Отговор #52 -: 30 Април 2012, 15:56:17 »
Преключих с част 1 най накрая :) Но преди да премина към част 2 искам да си оправя един малък проблем които виждам. Проблема е ,че ако съм нов потребител и не съм си въвеждал до сега папки, като вляза в страницата folders където трябва да запиша папка и да ми покаже ако имам папки ми излиза една грешка Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\gallery\tamplate\new_folders.php on line 8 и тя според мен излиза понеже нямаме запис и стойноста която отива към foreach в това условие е 0. foreach ($folders as $v)  { echo '<div>'.$v['name'].'</div>';} . Оправих този проблем като му сложих едно условие преди foreach и то е if($folders !=0) foreach ($folders as $v)  { echo '<div>'.$v['name'].'</div>';} ,но нз дали е правилно да се използва по този начин foreach в if.
« Последна редакция: 30 Април 2012, 16:23:29 от bgludost »

borovaka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 1
  • -Получени: 48
  • Публикации: 906
Re: Галерия - част1
« Отговор #53 -: 30 Април 2012, 19:27:21 »
@bgludost Напълно е правилно. Това си се казва валидиране на данните. По принцип преди да обработваш дадена информация, боло то входна или някаква друга, трябва да я валидираш и нормализираш и след това да я обработваш. Тези валидации и проверки са си точно if/else/switch проверки и много правилно си го направил. Може да се запознаеш и с вградените функции ( като isset, empty, is_array и други подобни) които биха ти помогнали при валидирането на информацията. Когато започнеш да се занимаваш с ООП, ще срещнеш някой шаблони и други врътки които ще използваш за да постигнеш независимост на информацията между отделните обекти ( това реализира полиморфизма, или с други думи няколко обекта от един и същи клас могат да имат различно поведение при различни ситуации). Та така, продължавай в същия дух и не се отказвай.
Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

bgludost

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 41
Re: Галерия - част1
« Отговор #54 -: 30 Април 2012, 20:09:35 »
Мерси мн за отговора borovak. За сега имам доста голямо желание да се занимавам с това и се надявам да не зацикля някъде и да ме откаже това. Нямам търпение да мина на ООП защото за мн ситуации чета че там се оправят по лесно. Но да стигна до там и да видя дали ще мога да го разбера изобщо :)

minimalvoice

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 4
  • -Получени: 0
  • Публикации: 60
    • Уеб съвети за начинаещи
Re: Галерия - част1
« Отговор #55 -: 29 Септември 2012, 13:25:54 »
Когато се оптам да добавя папка ми извежда: Duplicate entry '0' for key 'PRIMARY' SQL: INSERT INTO user_catalogs (user_id,name) VALUES (3,"kino") . Какъв е проблема?
http://webtipsbg.info - Уеб съвети за начинаещи

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част1
« Отговор #56 -: 29 Септември 2012, 14:13:12 »
Ами най-вероятно не си задал auto_increment на съотвентния primary key на някоя от таблиците и се дублира дадена негова стойсност.Провери си структурата на таблицата user_catalogs в phpmyadmin дали имаш зададен auto_increment на user_id ако той е primary key.

ppenev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 19
Re: Галерия - част1
« Отговор #57 -: 10 Октомври 2012, 22:21:58 »
Едно нещо не ми стана ясно. Как изпозваме променлива в даден файл когато тя е дефинирана в друг файл( двата файла не са включени един вдруг ). За да стане по ясно, говоря конкретно за променливата folders дефинирана във файла folders.php , която ни изкарва всички каталози на даден потребител от базата данни. Та тази променлива изведнъж е хващаме във файла user_folders.php намиращ се в съвсем друга папка, и е завъртаме в цикъл ( foreach($folders as $v) ).
Като файлът folders.php не е включен във файлът user_folders.php.
Моля някой по напреднал да ми обясни как става това.

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част1
« Отговор #58 -: 11 Октомври 2012, 10:28:15 »
Едно нещо не ми стана ясно. Как изпозваме променлива в даден файл когато тя е дефинирана в друг файл( двата файла не са включени един вдруг ). За да стане по ясно, говоря конкретно за променливата folders дефинирана във файла folders.php , която ни изкарва всички каталози на даден потребител от базата данни. Та тази променлива изведнъж е хващаме във файла user_folders.php намиращ се в съвсем друга папка, и е завъртаме в цикъл ( foreach($folders as $v) ).
Като файлът folders.php не е включен във файлът user_folders.php.
Моля някой по напреднал да ми обясни как става това.

Напротив,вгледай се по-внимателно в кода и ще видиш, че са включени един в друг - user_folders.php е включен в folders.php.Тъй като user_folders.php представлява просто едно парче код няма никакво значение(по отношение на действие, а не функционалност като част от изграждане на елементарна "темплейтна система") дали то ще бъде написано директно във файла folders.php или както е в урока изнесено в отделен файл и в последствие вмъкнат във файла folders.php.

kernel

  • Newbie
  • *
  • Благодарности
  • -Казани: 2
  • -Получени: 1
  • Публикации: 42
Re: Галерия - част1
« Отговор #59 -: 06 Април 2013, 01:36:31 »
Реших да си припомня някой неща в пхп и почнах галерията обаче, рано рано ми се опъна излиза ми е те тоя нотис ->
Notice: Undefined index: is_logged in C:\xampp\htdocs\gallery\index.php on line 3
и в полетата логин и пасс като напиша каквото и да е без значение вярно или не, ми презарежда индекс.пхп и не ме отвежда никъде. Дайте малко помощ.