Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyświetlaniem wyników dla ZMIENNEJ ilości towarów
Forum PHP.pl > Forum > PHP
damianprz


Na screenie widać tabele i część rekordów

  1. $zapytanko="SELECT produkty.id_towaru, produkty.id_daty, popyt, data.data, towary.nazwa FROM produkty
  2. INNER JOIN data ON (produkty.id_daty=data.id)
  3. INNER JOIN towary ON (produkty.id_towaru=towary.id) WHERE produkty.id_towaru='2'";
  4.  
  5. $rezultat = mysql_query($zapytanko)
  6. or die("Błąd zapytania");
  7.  
  8. $zapytanko2="SELECT id FROM towary";
  9.  
  10. $rezultat2 = mysql_query($zapytanko2)
  11. or die("Błąd zapytania");
  12.  
  13. $ile=mysql_num_rows($rezultat2);
  14. echo "Mamy ".$ile." wiersze";
  15.  
  16. echo "<table id='tabela'>";
  17. echo '<tr><td>data</td><td>towar</td><td>popyt</td></tr>';
  18.  
  19. for ($i=0; $i <$ile; $i++)
  20. {
  21. $wiersz = mysql_fetch_array($rezultat);
  22. echo '<tr>';
  23.  
  24. echo '<td>'.$wiersz['data'].'</td>';
  25. echo '<td>'.$wiersz['nazwa'].'</td>';
  26. echo '<td>'.$wiersz['popyt'].'</td>';
  27. echo '</tr>';
  28. }
  29. echo '</table>';


To zapytanie i echa pokazuje tabelkę, która widoczna jest na screenie
Taki kod może pokazać mi wyniki tylko dla Id=2 bo mamy w selekcie WHERE produkty.id_towaru='2'
Czyli robię linka do tej strony który nazywa się np. Pokaż popyt w poszczególnych dniach dla towaru o Id=2 i klikając na niego wejdę na stronę w powyższym kodem i zostanie wyświetlona tabelka z popytem dla srubek.

Teraz pytanie:
Czy da się wygenerować jakoś takie linki dla każdego towaru?
I nie chodzi mi o to żeby zrobić 4 linki i 4 strony php z których każda pokazuje to dla wybranego Id od 1 do 4
Tylko chodzi mi o to, że liczba towarów może wzrosnąć np przez dodanie 5. towaru i żeby nie być zmuszonym tworzyć wtedy linka
Pokaż popyt w poszczególnych dniach dla towaru o Id=5 i tworzyć całej strony z kodem:
  1. $zapytanko="SELECT produkty.id_towaru, produkty.id_daty, popyt, data.data, towary.nazwa FROM produkty
  2. INNER JOIN data ON (produkty.id_daty=data.id)
  3. INNER JOIN towary ON (produkty.id_towaru=towary.id) WHERE produkty.id_towaru='5'";


W ogóle czy jest takie coś możliwe?
Bo nie można pod SELECTA wziąźć zmiennej np. $i
  1. $zapytanko="SELECT produkty.id_towaru, produkty.id_daty, popyt, data.data, towary.nazwa FROM produkty
  2. INNER JOIN data ON (produkty.id_daty=data.id)
  3. INNER JOIN towary ON (produkty.id_towaru=towary.id) WHERE produkty.id_towaru='$i'";


Czekam na opinie.
Fixus
możesz generować linki wykorzystując zapytanie

  1. #
  2. $zapytanko2="SELECT id FROM towary";
  3. #
  4.  
  5. #
  6. $rezultat2 = mysql_query($zapytanko2)
  7. #
  8. or die("Błąd zapytania")
  9.  
  10. while($item = mysql_fetch_array($rezultat2) {
  11. // generowanie linkow
  12. }
  13.  


linki generujesz z parametrem id a na docelowej stronie masz funkcję która pobiera ten parametr i generuje odpowiednią tabelkę

o to ci chodzilo ?
thek
Możesz generować linki pobierając z $_GET lub $_POST parametr smile.gif Wystarczy tylko zapytanie spreparować. To co mówisz że pewnie się nie da zrobić... można zrobić w prosty sposób smile.gif
  1. $zapytanko="SELECT produkty.id_towaru, produkty.id_daty, popyt, data.data, towary.nazwa FROM produkty INNER JOIN data ON (produkty.id_daty=data.id) INNER JOIN towary ON (produkty.id_towaru=towary.id) WHERE produkty.id_towaru=".$GET['id'];
Oczywiśce najpierw zmienną _GET przefiltruj przed możliwym atakiem XSS smile.gif Nic trudnego smile.gif
damianprz
Myślałem że w SELEKCIE nie można używać ani zmiennych $ ani też _GET czy _POST
Spoko

Co do propozycji kolegi Fixusa
Nie za bardzo wiem jak wygenerować te linki

  1. $zapytanko3="SELECT id FROM towary";
  2.  
  3. $rezultat3 = mysql_query($zapytanko3)
  4.  
  5. or die("Błąd zapytania");
  6.  
  7. while ($item = mysql_fetch_array($rezultat3))
  8. {
  9. echo "<A HREF=przeglad_stanu_zapasu.php id='$i'>towar ".$i." <BR>";
  10. };


Jak wstawie $i to wyświetla mi 4 linki Towar 4 (bo wyżej przy zapytanku licze coś forem od 1 do i=4)
Jak wstawie $item to wyskakują 4 linki Towar Array
thek
Można... A linki stworzysz wrzucając zmienną do pętli for zamiast while smile.gif
  1. for($i=1; $i<=4; $i++) {
  2. echo '<A HREF="przeglad_stanu_zapasu.php?id='.$i.'">towar '.$i.'<>/a<br />';
  3. };

Gdy zaś przejdziesz do pliku mającego wyświetlić wyniki (przegląd_stanu_zapasu.php) to zwyczajnie się odwołaj do zmiennej GET by wyciągnąć to id i sprawdź czy to nie próba XSS. Akurat w tym wypadku wystarczy sprawdzenie, czy id to liczba i jeśli tak to puść do bazy i sprawdź czy aby zapytanie zwraca Ci wyniki czy FALSE. Jeśli będzie FALSE to znaczy, że takiego towaru nie ma (ktoś podał id produktu, którego nie ma w bazie).
damianprz
Nie mam pojęcia co to XXS
nitek
tu -> xss
chodzi o zwykłe sprawdzenie, czy zmienna pobierana z $_GET zawiera to co chcesz - czyli w twoim przypadku liczbę.
Sprawdzenie możesz zrealizować jak tylko sobie wymyślisz winksmiley.jpg
damianprz
  1. $zapytanko3="SELECT * FROM towary";
  2. $rezultat3 = mysql_query($zapytanko3)
  3.  
  4. or die("Błąd zapytania");
  5.  
  6.  
  7. for($i=1; $i<=4; $i++) {
  8. $wiersz = mysql_fetch_array($rezultat3);
  9. echo '<A HREF="przeglad_2.php?id='.$i.'">towar '.$i.'</a>';
  10. echo " o nazwie: ".$wiersz['nazwa']."<BR>";
  11. };


(tę 4 zamienie tylko na zmienną która jest ilością towarów i będzie automat dla każdej ilości towarów! smile.gif )
generuje mi linki:
  1. towar 1 o nazwie: drewno
  2. towar 2 o nazwie: srubki
  3. towar 3 o nazwie: klej
  4. towar 4 o nazwie: farba


Po kliknięciu na link np trzeci wyskakuje tabela:

  1. data ................towar ....popyt
  2. 2009-07-01 ......klej .......20
  3. 2009-07-02 ......klej .......15
  4. 2009-07-03 ......klej .......25
  5. 2009-07-06 ......klej .......15


Czyli wszystko działa!! Yupii!!
Wielkie dzięki dla Fixus nitek i szczególnie dla mistrza PHP thek-a
thek
Do mistrza php jeszcze mi daleko smile.gif Po prostu rozumiem co chcę i co chcę uzyskać. A jeśli nie wiem to zazwyczaj wiem gdzie szukać by uzyskać interesujące mnie dane. Tak jak wiele spośród piszących tutaj osób. Najważniejsze w każdym języku programowania to umieć rozpisać dobrze algorytm i znać język choćby w podstawach. Odpowiedzi na resztę rzeczy można albo sobie samemu wymyślić (tak jak ja początkowo zrobiłem z liczeniem odchylenia z oryginalnego wzoru matematycznego), albo znaleźć poprzez zapytanie właściwej osoby (podane Ci gotowe funkcje AVG i STD). No i nieśmiertelny przyjaciel google winksmiley.jpg Nie na darmo na studiach ulubionym powiedzonkiem wśród informatyków u mnie było: "Google twoim przyjacielem" smile.gif
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.