Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> query was empty
Ka-lolek
post
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


Witam,
mam taki skrypt:
  1. <?php
  2.  
  3. //utwórz połączenia z bazą danych
  4. $conn = mysql_connect(&#092;"localhost\", \"root\", \"root\") or die(mysql_error());
  5. $db = mysql_select_db(&#092;"MyDB\", $conn) or die(mysl_error());
  6. //polecenie sql
  7. $get_cats = &#092;"SELECT DISTINCT CATEGORY FROM MASTER_PRODUCTS ORDER BY CATEGORY\";
  8. $get_cats_res = mysql_query($sql, $conn) or die(mysql_error());
  9. //sprawdz czy są jakiekolwiek kategorie
  10. if(mysql_num_rows($get_cats_res) < 1) {
  11. $display_block = &#092;"<p>Przepraszamy, brak kategorii</p>\";
  12. } else {
  13. //jezeli nie bylo, to wyswietl odpowiedni tekst ^, a jezeli sa, to:
  14. //jezeli sa, to wyswietl je wraz z zawartoscia tych kategorii:
  15. while ($cat = mysql_fetch_array($get_cats_res))
  16. {
  17. $display_block .= &#092;"<p><strong>$cat[CATEGORY]</strong></p> <ul>\";
  18. //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  19. $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  20.  WHERE CATEGORY=$cat[CATEGORY]&#092;";
  21. $get_books_res = mysql_query($get_books, $conn) or die(mysql_error());
  22. while ( $book = mysql_fetch_array($get_books_res))
  23. {
  24. $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  25. <strong>$book[TITLE]</strong></a>
  26. <em>(by $book[AUTHOR])</em>&#092;";
  27. }
  28.  $display_block .= &#092;"</ul>\";
  29.  
  30.  }
  31. }
  32. ?>
  33. <html>
  34. <head>
  35. <title>SKLEP FIRMY XYZ: Widok według kategorii</title>
  36. </head>
  37. <body>
  38. <h1>Sklep firmy XYZ: Lista kategorii</h1>
  39. <? echo &#092;"$display_block\"; ?>
  40. </body>
  41. </html>


I pierwsze pytanie brzmi:
co jest w nim źle, ponieważ pojawia mi się błąd
Kod
query was empty

i nic więcej. Ani numeru lini , w której jest błąd - nic!:( Dlatego zwracam się z prośbą do was, bo skoro nie pisze mniej więcej miejsca gdzie mam szukać błędu, to pewnie go nie znajdę , bo jestem za mało obeznany w php:)

Drugie moje pytanie odnosi się tego, że Jabol i aleksander mowili, iz nazwy zmiennych w tablicy asocjacyjnej nalezy dawac w " lub ' .
zatem mialem tak napisane w tym fragmencie tego skryptu co powyzej (od powyzszego fragmentu rozni sie tym, ze zamiast $cat[CATEGORY] jest $cat['CATEGORY']) i ten skrypt nie działa: (zadzialal dopiero po usunieciu apostrofow dookola tych zmiennych tablicy asocjacyjnej)
  1. <?php
  2.  
  3. while ($cat = mysql_fetch_array($get_cats_res))
  4. {
  5. $display_block .= &#092;"<p><strong>$cat['CATEGORY']</strong></p> <ul>\";
  6. //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  7. $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  8.  WHERE CATEGORY=$cat['CATEGORY]'&#092;";
  9. $get_books_res = mysql_query($get_books, $conn) or die(mysql_error());
  10. while ( $book = mysql_fetch_array($get_books_res))
  11. {
  12. $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  13. <strong>$book['TITLE']</strong></a>
  14. <em>(by $book['AUTHOR'])</em>&#092;";
  15. }
  16.  $display_block .= &#092;"</ul>\";
  17.  
  18.  }
  19.  
  20. ?>



No , to by bylo na tyle. prosze o pomoc:)
Pozdrawiam
Ka-lolek
Go to the top of the page
+Quote Post
zbig13
post
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Ad. 1 A jak myślisz gdzie może być błąd jeśli "zapytanie jest puste"? Chyba tam gdzie sformułowałeś te zapytanie. Wydaje mi się, że zamiast:
  1. <?php
  2. $get_cats_res = mysql_query($sql, $conn) or die(mysql_error());
  3. ?>

powinno być
  1. <?php
  2. $get_cats_res = mysql_query($get_cats, $conn) or die(mysql_error());
  3. ?>

bo to w zmiennej $get_cats jest przechowywane zapytanie.

Ad 2. Błąd z tablicami asocjacyjnymi wynika z tego, że używając ich w łańcuchu znaków należy ująć je jeszcze w nawiasy klarowe { }:
  1. <?php
  2.  
  3. while ($cat = mysql_fetch_array($get_cats_res))
  4. {
  5. $display_block .= &#092;"<p><strong>{$cat['CATEGORY']}</strong></p> <ul>\";
  6. //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  7. $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  8.  WHERE CATEGORY={$cat['CATEGORY']}&#092;";
  9. $get_books_res = mysql_query($get_books, $conn) or die(mysql_error());
  10. while ( $book = mysql_fetch_array($get_books_res))
  11. {
  12. $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  13. <strong>{$book['TITLE']}</strong></a>
  14. <em>(by {$book['AUTHOR']})</em>&#092;";
  15. }
  16.  $display_block .= &#092;"</ul>\";
  17.  
  18.  }
  19.  
  20. ?>

Pozdrawiam!
Go to the top of the page
+Quote Post
Ka-lolek
post
Post #3





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


dzięki.
teraz niestety również pojawia mi się błąd, ale tym razem taki:

Kod
Unknown column 'Applications' in 'where clause'


skrypt wygląda tak:
  1. <?php
  2.  
  3. //utwórz połączenia z bazą danych
  4. $conn = mysql_connect(&#092;"localhost\", \"root\", \"root\") or die(mysql_error());
  5. $db = mysql_select_db(&#092;"MyDB\", $conn) or die(mysl_error());
  6. //polecenie sql
  7. $get_cats = &#092;"SELECT DISTINCT CATEGORY FROM MASTER_PRODUCTS ORDER BY CATEGORY\";
  8. $get_cats_res = mysql_query($get_cats, $conn) or die(mysql_error());
  9. //sprawdz czy są jakiekolwiek kategorie
  10. if(mysql_num_rows($get_cats_res) < 1) {
  11. $display_block = &#092;"<p>Przepraszamy, brak kategorii</p>\";
  12. } else {
  13. //jezeli nie bylo, to wyswietl odpowiedni tekst ^, a jezeli sa, to:
  14. //jezeli sa, to wyswietl je wraz z zawartoscia tych kategorii:
  15. while ($cat = mysql_fetch_array($get_cats_res))
  16. {
  17. $display_block .= &#092;"<p><strong>{$cat['CATEGORY']}</strong></p> <ul>\";
  18. //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  19. $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  20.  WHERE CATEGORY=$cat[CATEGORY]&#092;";
  21. $get_books_res = mysql_query($get_books, $conn) or die(mysql_error());
  22. while ( $book = mysql_fetch_array($get_books_res))
  23. {
  24. $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  25. <strong>$book[TITLE]</strong></a>
  26. <em>(by $book[AUTHOR])</em>&#092;";
  27. }
  28.  $display_block .= &#092;"</ul>\";
  29.  
  30.  }
  31. }
  32. ?>
  33. <html>
  34. <head>
  35. <title>SKLEP FIRMY XYZ: Widok według kategorii</title>
  36. </head>
  37. <body>
  38. <h1>Sklep firmy XYZ: Lista kategorii</h1>
  39. <? echo &#092;"$display_block\"; ?>
  40. </body>
  41. </html>
Go to the top of the page
+Quote Post
tiraeth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Proponuję zamiast mysql_error() wykorzystać poniższą funkcję:

  1. <?php
  2. function mysqlError($error, $file, $line)
  3. {
  4.  echo 'Message: '.$error.'<br />File: '.$file.'<br />Line: '.$line.'<br /><br />';
  5. }
  6. ?>


np.
  1. <?php
  2. $get_cats_res = mysql_query($get_cats, $conn) or die(mysqlError(mysql_error(), __FILE__, __LINE__));
  3. ?>

Dzięki temu będziemy wiedzieli gdzie wywali nam błąd...

Spróbuj tego zapytania:
  1. <?php
  2. $get_cats = &#092;"SELECT DISTINCT CATEGORY FROM `MASTER_PRODUCTS` ORDER BY CATEGORY\";
  3. ?>

Poza tym nie ustawiłeś trybu sortowania danych (ASC lub DESC) po ORDER BY (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Powinno być ORDER BY CATEGORY ASC lub DESC
Go to the top of the page
+Quote Post
Ka-lolek
post
Post #5





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


Hmmm zmieniłem
ten fragment:
  1. <?php
  2.  
  3.   while ($cat = mysql_fetch_array($get_cats_res))
  4.         {
  5.         $display_block .= &#092;"<p><strong>$cat[CATEGORY]</strong></p> <ul>\";
  6.         //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  7.         $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  8.                      WHERE CATEGORY = $cat[CATEGORY]&#092;";
  9.         $get_books_res = mysql_query($get_books, $conn)
  10.                         or die(mysqlError(mysql_error(), __FILE__, __LINE__));
  11.         while ( $book = mysql_fetch_array($get_books_res))
  12.               {
  13.               $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  14.                           <strong>$book[TITLE]</strong></a>
  15.                           <em>(by $book[AUTHOR])</em>&#092;";
  16.               }
  17.  
  18.  
  19. ?>

Na takie coś:
  1. <?php
  2.  
  3.   while ($cat = mysql_fetch_array($get_cats_res))
  4.         {
  5.         $category = $cat[CATEGORY];
  6.         $display_block .= &#092;"<p><strong>$category</strong></p> <ul>\";
  7.         //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  8.         $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  9.                      WHERE CATEGORY = '$category'&#092;";
  10.         $get_books_res = mysql_query($get_books, $conn)
  11.                         or die(mysqlError(mysql_error(), __FILE__, __LINE__));
  12.         while ( $book = mysql_fetch_array($get_books_res))
  13.               {
  14.               $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  15.                           <strong>$book[TITLE]</strong></a>
  16.                           <em>(by $book[AUTHOR])</em>&#092;";
  17.               }
  18.  
  19.  
  20. ?>

No i teraz działa. Tylko nie wiem czemu… czy nie jest dozwolone uzywanie tablic asocjacyjnych w warunkach where zapytania SQL?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
A może po prostu nie postawiłem potrzebnego ‘ lub „ Ew. {} przy $cat[CATEGORY](IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? (jak widać mam z tym problem:P) proszę o odpowiedz i dzieki za dotychczasowe.

Caly skrypt wyglada teraz tak:
  1. <?php
  2.  
  3.  
  4. function mysqlError($error, $file, $line)
  5. {
  6.    echo 'Message: '.$error.'<br />File: '.$file.'<br />Line: '.$line.'<br /><br />';
  7. }
  8.  
  9.  
  10. //utwórz połączenia z bazą danych
  11. $conn = mysql_connect(&#092;"localhost\", \"root\", \"root\") or die(mysql_error());
  12. $db = mysql_select_db(&#092;"MyDB\", $conn) or die(mysl_error());
  13. //polecenie sql
  14. $get_cats = &#092;"SELECT DISTINCT CATEGORY FROM MASTER_PRODUCTS ORDER BY CATEGORY ASC\";
  15. $get_cats_res = mysql_query($get_cats, $conn) or
  16.               die(mysqlError(mysql_error(), __FILE__, __LINE__));
  17. //sprawdz czy są jakiekolwiek kategorie
  18. if(mysql_num_rows($get_cats_res) < 1) {
  19. $display_block = &#092;"<p>Przepraszamy, brak kategorii</p>\";
  20. } else {
  21. //jezeli nie bylo, to wyswietl odpowiedni tekst ^, a jezeli sa, to:
  22. //jezeli sa, to wyswietl je wraz z zawartoscia tych kategorii:
  23.   while ($cat = mysql_fetch_array($get_cats_res))
  24.         {
  25.         $category = $cat[CATEGORY];
  26.         $display_block .= &#092;"<p><strong>$category</strong></p> <ul>\";
  27.         //pobierz z bazy danych ksiazki , ktore sa z danej kategorii
  28.         $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS
  29.                      WHERE CATEGORY = '$category'&#092;";
  30.         $get_books_res = mysql_query($get_books, $conn)
  31.                         or die(mysqlError(mysql_error(), __FILE__, __LINE__));
  32.         while ( $book = mysql_fetch_array($get_books_res))
  33.               {
  34.               $display_block .= &#092;"<li><a href=\"shop_iteminfo.php?id=$id\">
  35.                           <strong>$book[TITLE]</strong></a>
  36.                           <em>(by $book[AUTHOR])</em>&#092;";
  37.               }
  38.          $display_block .= &#092;"</ul>\";
  39.   
  40.          }
  41. }
  42. ?>
  43. <html>
  44. <head>
  45. <title>SKLEP FIRMY XYZ: Widok według kategorii</title>
  46. </head>
  47. <body>
  48. <h1>Sklep firmy XYZ: Lista kategorii</h1>
  49. <? echo &#092;"$display_block\"; ?>
  50. </body>
  51. </html>

Pozdro!

Ten post edytował Ka-lolek 31.07.2005, 19:57:35
Go to the top of the page
+Quote Post
zbig13
post
Post #6





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Cytat
A może po prostu nie postawiłem potrzebnego ‘ lub „ Ew. {} przy $cat[CATEGORY](IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

To jest możliwe. Po prostu w niektórych wypadkach zapytanie SQL źle interpretuje tablicę asocjacyjną bez znaków ' ' a tym bardziej gdy nie ująłeś jej w nawiasy klamrowe. Gdybyś zrobił tak:
  1. <?php
  2.  
  3. $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS WHERE CATEGORY = {$cat['CATEGORY']}\";
  4.  
  5. ?>

na pewno by podziałało.
Go to the top of the page
+Quote Post
Ka-lolek
post
Post #7





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


no , juz zanim to napisales , to sprawdzilem, ze taka wersja dziala:
  1. <?php
  2.  
  3. $get_books = &#092;"SELECT ID, TITLE, AUTHOR FROM MASTER_PRODUCTS WHERE CATEGORY = '$cat[CATEGORY]'\";
  4.  
  5. ?>

czyli pewnie to co podales tez by dzialalo...

aby uniknac takich bledow, czy moglby mi ktos wytlumaczyc jak i kiedy sie uzywa te {}, ", ' . Albo niech poda jakis przystepna strone , ktora o tym traktuje (w jezyku polskim, poniewaz ciezko mi sie czyta teksty naukowe po angielsku:/)
Go to the top of the page
+Quote Post
zbig13
post
Post #8





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Tu nie ma zbyt wiele do tłumaczenia, a co dopiero pisać o tym teksty naukowe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Znaki apsotrofu (' ') powinno sie stosować w nazwie każdej zmiennej superglobalnej (np. $_POST['']), tablicy asocjacyjnej itp, pod warunkiem, że klucz jest tekstem a nie liczbą. Czyli np. :
  1. <?php
  2.  
  3. $tablica['klucz'] = 'wartośc'; // Klucz jest łańcuchem znaków.
  4. $tablica[0] = 'wartość'; // Klucz jest cyfrą. Tu nie stosuje się apostrofów,
  5.  
  6. ?>

A jeśli chodzi o nawiasy klamrowe { } to używa się ich wtedy, gdy dana zmienna superglobalna lub tablica występuje w łańcuchu:
  1. <?php
  2.  
  3. $string = &#092;"Jakiś tekst {$tablica['klucz']}. I kolejny tekst\"; // Tablica, klucz jest łańcuchem.
  4. $string = &#092;"Jakiś tekst {$tablica[3]}. Dalszy ciąg tekstu\"; // Tablica, klucz jest cyfrą.
  5. $string = &#092;"Jakiś tekst {$_POST['zmienna']}. itd...\"; // Zmienna superglobalna.
  6.  
  7. ?>

Natomiast jeśli przypisujesz element tablicy lub zmienną superglobalną do zwykłej zmiennej to nie używasz nawiasów klamrowych.
  1. <?php
  2.  
  3. $imie = $_POST['imie']; // Zmienna superglobalna.
  4. $kowalski = $nazwiska[4]; // Tablica, klucz jest cyfrą.
  5.  
  6. ?>

Mam nadzieję, że teraz już jest wszystko jasne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zajrzyj jeszcze do manuala i poczytaj trochę o używaniu tablic i zmiennych superglobalnych.
Pozdrawiam!
Go to the top of the page
+Quote Post
Ka-lolek
post
Post #9





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


a jkezeli wyswietlam tablice asocjacyjna to robie tak?

  1. <?php
  2.  
  3. echo &#092;"Wartosc wynosi {$tablica['wartosc']}
  4.  
  5. ?>


tak mi sie wydaje, bo wtedy chyba wystepuje w lancuchu?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
zbig13
post
Post #10





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


tak, wszystko co jest zawarte między cudzysłowami lub apostrofami jest traktowane jako łańcuch znaków. Dlatego w tym przypadku tablicę też trzeba ująć w {}. A tak dla formalności to na końcu brakuje " i ; (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.08.2025 - 01:13