Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Zapytanie do bazy
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam. Mam kolejne pytanko do Was... Robie sobie takie menu do stronki. Mam narzucone odgornie, ze strona musi dzialac w oparciu o baze danych:/ Moze na poczatek troche kodu:
  1. <HTML>
  2. <HEAD>
  3. <TITLE>
  4. BIP
  5. </TITLE>
  6. <meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-2">
  7. <link rel="stylesheet" type="text/css" href="css.css">
  8. </HEAD>
  9. <BODY>
  10. <div align="center">
  11. <div id="strona">
  12. <div id="naglowek">
  13. </div>
  14. <div id="menu">
  15. <ul>
  16. <li><a href="index.php?url=kat100">Kategoria 1</a></li>
  17. <li><a href="index.php?url=kat200">Kategoria 2</a></li>
  18. </ul>
  19. </div>
  20. <div id="teksty">
  21. <?php
  22. $connect = mysql_connect("localhost", "root", "krasnal") or die ("Sprawdź połączenie z bazą danych.");
  23. if (!isset($_REQUEST["url"]))
  24. $url="kat100";
  25. else
  26. $url=$_REQUEST["url"];
  27. switch ($url)
  28. {
  29. case "kat100":
  30. echo "strona glowna";
  31. break;
  32. case "kat200":
  33. $query = "SELECT kategoria, tekst FROM Menu WHERE kategoria='kat200'";
  34. $results = mysql_query($query) or die(mysql_error());
  35. echo "$tekst";
  36. break;
  37. default:
  38. echo "zadna opcja nie dziala wiec nic nie zobaczysz...";
  39. }
  40. ?>
  41. </div>
  42. </div>
  43. </div>
  44. </BODY>
  45. </HTML>

Baza danych nazywa sie bip, mam w niej tabele Menu i w niej dwie kolumny kategoria i tekst. NIe wiem co jest zle w tym zapytaniu do bazy ale po kliknieciu powinna sie pojawic moim zdaniem zawartosc pola $tekst ale niestety nic sie nie pojawia. Sprawdzilem zawartosc zmiennej $results ale tam wyskoczylo mi $resource#id5 wiec chyba jesdnak zapytanie jest zle...:/ Jesli widzicie w tym jakis blad to pomozcie bo mi sie pomysly juz powoli koncza:/ Pozdrawiam, Łukasz.
nospor
Cytat
ale tam wyskoczylo mi $resource#id5

rety... manual zamkneli? Zobacz w manualu co zwraca mysql_query, a dowiesz sie ze jest to dobry wynik. Nastepnie doczytaj dalej w tym manuala jak dobrac sie do wynikow twojego zapytania, bo:
echo "$tekst";
to nie jest poprawne.

http://pl2.php.net/manual/pl/function.mysql-query.php
a pobierasz tym:
http://pl2.php.net/manual/pl/function.mysql-fetch-array.php
przejrzyj przyklady
lukash82
Ok. Dzieki za szybko podpowiedz. Zamienilem teraz
  1. <?php
  2. echo "$tekst";
  3. ?>

na cos takiego:
  1. <?php
  2. while ($row = mysql_fetch_array($results)) 
  3. { 
  4. extract($row);
  5. echo "$tekst";
  6. }
  7. ?>

No i niby cos sie ruszylo, ale teraz az za bardzo... Tzn wyswietla mi tekst ze wszystkich wierszy kolumny tekst a nie tylko tam gdzie kategoria=kat200. Jak to ograniczyc tylko do tej kategorii?
nospor
no skoro w zapytaniu masz:
kategoria='kat200'
i wyswietla ci wszystkie rekordy, znaczy ze wszystkie rekordy spelniaja ten warunek smile.gif

pokaz kod po zmianach bo moze jeszcze cos namotales
lukash82
NO wlasnie sie domyslam ze cos z tym kat200 bedzie nie tak ale nie wiem co... Kod po zmianach wyglada tak:
  1. <HTML>
  2. <HEAD>
  3. <TITLE>
  4. BIP
  5. </TITLE>
  6. <meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-2">
  7. <link rel="stylesheet" type="text/css" href="css.css">
  8. </HEAD>
  9. <BODY>
  10. <div align="center">
  11. <div id="strona">
  12. <div id="naglowek">
  13. </div>
  14. <div id="menu">
  15. <ul>
  16. <li><a href="index.php?url=kat100">Kategoria 1</a></li>
  17. <li><a href="index.php?url=kat200">Kategoria 2</a></li>
  18. </ul>
  19. </div>
  20. <div id="teksty">
  21. <?php
  22. $connect = mysql_connect("localhost", "root", "krasnal") or die ("Sprawdź połączenie z bazą danych.");
  23. switch ($url)
  24. {
  25. case "kat100":
  26. echo "strona glowna";
  27. break;
  28. case "kat200":
  29. $query = "SELECT kategoria, tekst FROM Menu WHERE kategoria='kat200'";
  30. $results = mysql_query($query) or die(mysql_error());
  31. while ($row = mysql_fetch_array($results)) 
  32. { 
  33. extract($row);
  34. echo "$tekst";
  35.  
  36. }
  37. break;
  38. default:
  39. echo "zadna nie dziala wiec nic nie zobaczysz...";
  40. }
  41. ?>
  42. </div>
  43. </div>
  44. </div>
  45. </BODY>
  46. </HTML>


Acha, no i sa tylko narazie dwa wiersze w bazie danych. Do kategorii pierwszej tez bede chcial zrobic takie zapytanie ale narazie nie chce zaciemniac kodu... Wynik powinien byc rowny tylko jednemu wierszowi bo tak teraz jest a on mi wywala obydwa...
nospor
nie:
  1. <?php
  2. extract($row);
  3. echo "$tekst";
  4. ?>

a:
  1. <?php
  2. echo $row['tekst'];
  3. ?>

smile.gif

Edit:
hmm, choc w zasadzie to bez roznicy. Najwyrazniej jednak oba rekordy spelniaja ten warunek. Napewno masz oba rozne w tym polu? sprawdz
lukash82
Tak tez juz probowalem, Niestety wynik jest ten sam czyli zwraca mi wszystkie wartosci z kolumny tekst a wedlug zapytania powinno mi zwrocic tyko tam gdzie kategoria=kat200. Co do niecheci do manuala to czytam go gdy jest mi potrzebny ale jakos niebardzo mi potem idzie wykorzystywanie go w praktyce:/ Masz moze jeszcze jakis pomysl jak to rozwiazac? Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.