Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z wyświetlaniem wyników dla ZMIENNEJ ilości towarów
damianprz
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.08.2009
Skąd: Zamojsce

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




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.
Go to the top of the page
+Quote Post
Fixus
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


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 ?

Ten post edytował Fixus 28.08.2009, 21:12:12
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
damianprz
post
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.08.2009
Skąd: Zamojsce

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


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
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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).

Ten post edytował thek 28.08.2009, 21:57:32


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
damianprz
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.08.2009
Skąd: Zamojsce

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


Nie mam pojęcia co to XXS
Go to the top of the page
+Quote Post
nitek
post
Post #7





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


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


--------------------
Go to the top of the page
+Quote Post
damianprz
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.08.2009
Skąd: Zamojsce

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


  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
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 22:35