Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] pomoc przy mapowaniu strony
Forum PHP.pl > Forum > Przedszkole
Micchaleq
Witam serdecznie,

zaczynam swoją przygodę od jakiegoś czasu z PHP/MYSQL .
Mój problem polega na rozwiązaniu problemy jak wykonać bazę danych a następnie kod php
w przypadku kiedy
na stronie ( w sklepie ) zamierzam mieć Producentów oraz Kategorie danego produktu


a w kodzie PHP w niedalekiej przyszłości chciałbym utworzyć linkowanie więc:

robie 2 zakładki KATEGORIE || PRODUCENCI
i teraz cały moj problem

Więc przypuśćmy ze mamy 3 tabele w myqsl produkt, producent i kategoria ( oczywiście produkt musi w tym przypadku przechowywac id_produktu oraz id_kategori )

jeżeli zostanie wybrana jakaś kategoria aby zostali wyświetleni producenci aby można było zawęzić wyszukiwanie.
Jak wybierzemy producenta aby zostały wyświetlone kategorie by znów zawęzić wyszukiwanie.

Należy pamiętać ty tylko o tym, że już przy wybraniu producentów bądź kategorie ( krok 1 ) należy wyświetlić wszystkie wyniki, ale chyba wiem jak to zrobić poprzez porostu id w linku. i jezeli to będzie id_kat to wyswietlamyy wszystkie o tych id_kat i odwrotnie

Prosze o pomoc i podanie przykładowego zapytania mysql przez php.

wydaje mi się ze trzeba będzie tu użyć IF
tylko trzeba by sprawdzić czy przeglądarka przesłała id_kategori lub czy id_producenta lub to i to tylko jak to zrobić?
Kużdo
Wybór kategorii, producenta, etc możesz zrobić albo jako formularz (jak w sklepach internetowych zaznaczanie "kwadratów") albo w formie linka... Tak czy siak musisz przekazać do skryptu jakąś zmienną która będzie wklejana do zapytania SQL i na tej podstawie wybierasz daną kategorię...

W IFie sprawdzasz czy jest jakiś parametr w GET (z linka) lub z POST (z formularza), jeżeli tak, to jaki, później wklejasz go do zapytania SQL i masz to co chciałeś...
Micchaleq
no tak to wiem, ale pozostaje kwestia 2 kroku gdzie są 2 informacje w linku

jeżeli napisze ifa
jeżeli jest id_kategori to wyswietlaj producentów
jezeli jednak jest id_producentów wyświetlaj kategorie
jezeli jednak jest id_prodeucentów && id_kategori to wyswietlaj tylko te

o ile się nie myle to konstrukcja ifa jest taka, że tylko jedno zapytanie możemy dać czyli

if(id_kat jest to wyswietlaj producentów ) {
include cos tam
}elseif( id_prod to wyswietlaj kat ){

include cos tam

}elseif(id_kat i id_prod to wyswietlaj te produkty ){

}else{
echo nie ma nic
}

o ile sie nie myle taka konstrukcja ifa odpada.

W ogóle idę w dobrym kierunku ?


Kużdo
  1. if(isset($kat)) {
  2. $sql = mysql_query("SELECT * FROM produkt WHERE id_kat = $kat");
  3. } elseif(isset($prod)) {
  4. $sql = mysql_query("SELECT * FROM produkt WHERE id_prod = $prod");
  5. } elseif(isset($kat) AND isset($prod)) {
  6. $sql = mysql_query("SELECT * FROM produkt WHERE id_kat = $kat AND id_prod = $prod");
  7. } else {
  8. $sql = mysql_query("SELECT * FROM produkt");
  9. }


Jeżeli jest przekazany parametr $kat czyli kategoria, to ma pobrać wszystkie produkty o takiej kategorii.
Jeżeli jest przekazany parametr $prod czyli producent, to ma pobrać wszystkie produkty o takim producencie.
Jeżeli są przekazane oba, to ma pobrać tylko o takich parametrach.
Jeżeli nie ma żadnego, to ma pokazać wszystkie produkty.

Oczywiście kod jest maksymalnie uproszczony, do tego przydałaby się walidacja parametrów, czy nie przekazują jakichś dziwnych danych itp itd...
Micchaleq
Witam serdecznie,

trochę się pozmieniało od rana więc wklejam jeszcze raz treść kodu i podaje nowe prostrze jak na początek założenia.

Dla ułatwienia na początek chciałbym poprostu aby skrypt najpierw pokazał mi producentów następnie kategorie i na koncu po wybraniu tego i tego wyświetlił mi produkty o takim id i takiej kat

poniższy skrypt działa prawie dobrze, jednak nie wyświetla tych ostatnich produktów i nie mam pojęcia dlaczego .

Czy mógłby mi ktoś powiedzieć gdzie mam bład?

  1. <?php
  2. include("../admin/global.php");
  3. baza();
  4. global $mysqli;
  5.  
  6. $wyswietlany_blok = "<h1>Moje kategorie</h1>
  7. <p>Wybierz kategorię, aby zobaczyć artykuły.</p>";
  8.  
  9. // najpierw pokazuje kategorie
  10. $pobierz_prod_sql = "SELECT id, nazwa_prod FROM
  11. sklep_prod ORDER BY nazwa_prod";
  12. $pobierz_prod_rez = mysqli_query($mysqli, $pobierz_prod_sql)
  13. or die(mysqli_error($mysqli));
  14.  
  15. $kategorie_sql = "SELECT id, nazwa_kat FROM sklep_kat";
  16. $kategorie_rez = mysqli_query($mysqli, $kategorie_sql) or die (mysql_error($mysqli));
  17.  
  18. if (mysqli_num_rows($pobierz_prod_rez) < 1) {
  19. $wyswietlany_blok = "<p><em>Nie istnieją żadne kategorie.</em></p>";
  20. } else {
  21. while ($prod = mysqli_fetch_array($pobierz_prod_rez)) {
  22. $id_prod = $prod['id'];
  23. $nazwa_prod = strtoupper(stripslashes($prod['nazwa_prod']));
  24.  
  25.  
  26. $wyswietlany_blok .= "<p><strong><a href=\"".$_SERVER["PHP_SELF"].
  27. "?id_prod=".$id_prod."\">".$nazwa_prod."</a></strong></p>"; // WYSWIETLA WSZYSTKIE KATEGORIE
  28.  
  29.  
  30. if (isset($_GET["id_prod"])) { //POCZATEK SPRAWDZANIA CZY JEST ID_PROD
  31. if ($_GET["id_prod"] == $id_prod) {
  32. $get_kat_sql = "SELECT * FROM
  33. produkty WHERE id_prod = '".$id_prod."'
  34. ORDER BY nazwa_prod";
  35. $get_kat_rez = mysqli_query($mysqli, $get_kat_sql)
  36. or die(mysqli_error($mysqli)); //KONIEC
  37.  
  38. if (mysqli_num_rows($get_kat_rez) < 1) { // WYŚWIETLA WSZYSTKIE KATEGORIE DLA PRODUCENTA PRODUCENTA
  39. $wyswietlany_blok = "<p><em>Nie ma artykułów w tej
  40. kategorii.</em></p>";
  41. } else {
  42. $wyswietlany_blok .= "<ul>";
  43. while ($kat = mysqli_fetch_array($kategorie_rez)) {
  44. $id_kat = $kat['id'];
  45. $nazwa_kat = $kat['nazwa_kat'];
  46. $wyswietlany_blok .= "<li><p><strong><a href=\"".$_SERVER["PHP_SELF"].
  47. "?id_prod=".$id_prod."?id_kat=".$id_kat."\">".$nazwa_kat."</a></strong></p></li>";
  48. }
  49. $wyswietlany_blok .= "</ul>"; // KONIEC WYSWIETLANIA PRODUKTÓW DANEGO PRODUCENTA
  50.  
  51. if (isset($_GET["id_prod"]) && isset($_GET["id_kat"])) { //POCZATEK
  52. if ($_GET["id_prod"] == $id_prod && $_GET["id_kat"] == $id_kat) {
  53. $get_items_sql = "SELECT * FROM
  54. produkty WHERE id_prod = '".$id_prod."' AND id_kat = '".$id_kat."'
  55. ORDER BY nazwa_prod";
  56. $get_items_rez = mysqli_query($mysqli, $get_items_sql) or die(mysqli_error($mysqli)); //KONIEC
  57. if (mysqli_num_rows($get_items_rez) < 1) {
  58. $wyswietlany_blok2 = "<p><em>Nie ma artykułów w tej kategorii.</em></p>";
  59. } else {
  60. $wyswietlany_blok2 = "<ul>";
  61. while ($items = mysqli_fetch_array($get_items_rez)) {
  62. $id_art = $items['id'];
  63. $nazwa_art = stripslashes($items['nazwa_prod']);
  64. $wyswietlany_blok2 .= "<li>".$nazwa_art."</li>";
  65. }
  66. $wyswietlany_blok2 .= "</ul>";
  67. }
  68. mysqli_free_result($get_items_rez);
  69. }
  70. }
  71. }
  72. }
  73. }
  74.  
  75. }
  76.  
  77. }
  78. // uwalnia pamięć
  79. mysqli_free_result($pobierz_prod_rez);
  80. // zamyka połączenie z bazą
  81. mysqli_close($mysqli);
  82. ?>
  83. <html>
  84. <head>
  85. <META http-equiv=content-type content="text/html; charset=iso-8859-2">
  86. <title>My Categories</title>
  87. </head>
  88. <body>
  89. <?php echo $wyswietlany_blok; ?>
  90. <?php echo $wyswietlany_blok2; ?>
  91. </body>
  92. </html>



W tych linijkach najprawdopodobnie jest bład :
  1. if (isset($_GET["id_prod"]) && isset($_GET["id_kat"])) { //POCZATEK
  2. if ($_GET["id_prod"] == $id_prod && $_GET["id_kat"] == $id_kat) {
  3. $get_items_sql = "SELECT * FROM
  4. produkty WHERE id_prod = '".$id_prod."' AND id_kat = '".$id_kat."'
  5. ORDER BY nazwa_prod";
  6. $get_items_rez = mysqli_query($mysqli, $get_items_sql) or die(mysqli_error($mysqli)); //KONIEC
  7. if (mysqli_num_rows($get_items_rez) < 1) {
  8. $wyswietlany_blok2 = "<p><em>Nie ma artykułów w tej kategorii.</em></p>";
  9. } else {
  10. $wyswietlany_blok2 = "<ul>";
  11. while ($items = mysqli_fetch_array($get_items_rez)) {
  12. $id_art = $items['id'];
  13. $nazwa_art = stripslashes($items['nazwa_prod']);
  14. $wyswietlany_blok2 .= "<li>".$nazwa_art."</li>";
  15. }
  16. $wyswietlany_blok2 .= "</ul>";
  17. }
  18. mysqli_free_result($get_items_rez);
  19. }
  20. }



Witam ponownie ,

bład był w 2 tworzeniu linku 2 razy było ? a powinno być &

Teraz niestety mam taki problem, że wyświetlane są produkty jedynie z ostatniej kategori danego producenta.
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.