Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> podział rekordów na tabele z wykorzystaniem listy rozwijanej
blusss1
post 7.02.2010, 21:30:30
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.11.2009

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


Witam,
Za pomocą dwóch list rozwijanych metodą $_POST pobieram dane z bazy 'temperatura':
pobieranie danych wygląda następująco:

  1. $query='SELECT * FROM temperatura WHERE data_pom BETWEEN "'.$_POST['data'].'" AND "'.$_POST['data1'].'"';
  2. $results=mysql_query($query);


Mogę w ten sposób pobrać wszystkie rekordy pomiędzy 'data' i 'data1' i wyświetlić je za pomocą pętli:

  1. while($wynik = mysql_fetch_array($results))
  2. {
  3. echo '<tr class="t_np">';
  4. echo "<td>" . $wynik['data_pom'] . "</td>";
  5. echo "<td>" . $wynik['godz_pom'] . "</td>";
  6. echo "<td>" . $wynik['temp_wew'] . "<sup>o</sup>C</td>";
  7. echo "<td>" . $wynik['temp_zew'] . "<sup>o</sup>C</td></tr>";
  8. }


np. między data=2010-01-01, a data1=2010-01-02 pętla zwróci w jednej tabeli 48 rekordów(po 24 z każdego dnia).

chciałbym aby rekordy były oddzielone według daty (po 24 rekordy w tabeli). Jeżeli zaznaczymy w liście rozwijanej daty między 3-ma dniami, chciałbym aby utworzyły się 3 tabele po 24 rekordy. Wie ktoś jak stworzyć zapytanie do takiego polecenia?

pozdrawiam

Ten post edytował blusss1 8.02.2010, 11:54:56
Go to the top of the page
+Quote Post
Mchl
post 7.02.2010, 22:35:56
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Prościej to chyba z poziomu PHP dzielić.
Go to the top of the page
+Quote Post
blusss1
post 8.02.2010, 10:26:36
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.11.2009

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


Dokładnie, chodzi mi o warunek if else. Tabele domyślnie są już utworzone w moim kodzie. Całość wygląda następująco:

  1. <table width="600px" border="0" bgcolor="#666666" cellspacing="1" align="center">
  2. <tr>
  3. <td align="center" colspan="4">
  4. <?php
  5. echo "POMIAR TEMP " .$_POST['data']. " " .$_POST['data1']. "<br>";
  6. ?>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td align="center">
  11. <p style="margin:0; padding:0;">Data_pomiaru</p>
  12. </td>
  13. <td align="center">
  14. <p style="margin:0; padding:0;">Godzina pomiaru</p>
  15. </td>
  16. <td align="center" width="100px"><p style="margin:0; padding:0;">Wewnątrz</p></td>
  17. <td align="center" width="100px"><p style="margin:0; padding:0;">Na zewnątrz</p></td>
  18. </tr>
  19. [/html]
  20. [php]<?php
  21. while($wynik = mysql_fetch_array($results))
  22. {
  23. if($wynik['temp_id']%2){
  24. echo '<tr>';
  25. }
  26. else{
  27. echo '<tr class="t_np">';
  28. }
  29. echo "<td>" . $wynik['data_pom'] . "</td>";
  30. echo "<td>" . $wynik['godz_pom'] . "</td>";
  31. echo "<td>" . $wynik['temp_wew'] . "<sup>o</sup>C</td>";
  32. echo "<td>" . $wynik['temp_zew'] . "<sup>o</sup>C</td></tr>";
  33. }
  34. ?>
  35. </table>


W pętli while oprócz wyświetlenia rekordów jest warunek który na zmianę wstawia czarno-białe rekordy. Myślę że i tu musiałbym dodać jakiś warunek przed tworzeniem całej tabeli, aby skrypt automatycznie wyłapał rekordy o tej samej dacie. Jednak nie wiem do końca jak to rozwiązaćquestionmark.gif

Ten post edytował blusss1 8.02.2010, 11:48:57
Go to the top of the page
+Quote Post
nospor
post 8.02.2010, 10:31:38
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Zacznij wkoncu uzywac bbcode!
2) przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
blusss1
post 8.02.2010, 14:29:26
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.11.2009

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


Przepraszam za to, posty oczywiście zostały już poprawione ... nadal czekam na pomysł rozwiązania ...
Go to the top of the page
+Quote Post
tehaha
post 8.02.2010, 16:45:20
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


rozumiem, że chcesz aby dla każdej daty była oddzielna tabelka tak?
Go to the top of the page
+Quote Post
altruista2
post 8.02.2010, 18:03:08
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Po pierwsze to co robisz to jest strzał w głowę:
  1. $query='SELECT * FROM temperatura WHERE data_pom BETWEEN "'.$_POST['data'].'" AND "'.$_POST['data1'].'"';
  2. $results=mysql_query($query);
  3.  
  4. echo "POMIAR TEMP " .$_POST['data']. " " .$_POST['data1']. "<br>";

Poczytaj do poduszki smile.gif :
http://pl.wikipedia.org/wiki/Cross-site_scripting
Temat: SQL Injection Insertion
http://segfaultlabs.com/files/pdf/bezpiecz...-zagrozenia.pdf

A jeśli chodzi o sam problem:

to do zapytania dodaj:
  1. ORDER BY data_pom

przed pętlą (niby niepotrzebne, ale lepiej wszystko inicjować):
  1. $ld = -1;

i na początku pętli:
  1. if($wynik['data_pom'] != $ld) {
  2. $ld = $wynik['data_pom'];
  3. echo '</table><table>';
  4. }

Tyle smile.gif

Ten post edytował altruista2 8.02.2010, 18:09:58


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
blusss1
post 15.02.2010, 15:15:42
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.11.2009

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


Dzięki już sobie poradziłem, jednak nie do końca tak jak pisał kolega wyżej:
1. Do zapytania dodać:
  1. ORDER BY data_pom

Po co dodawać to do zapytania skoro skrypt już wyświetla datę rosnąco? Poza tym jeżeli dodam to do zapytania, to dodatkowo robi się zamieszanie w godzinie pomiaru aktualnej daty i godziny nie są wyświetlane w odpowiedniej kolejności ...

2. Zmienna:
  1. $ld = -1;

oraz warunek:
  1. if($wynik['data_pom'] != $ld) {
  2. $ld = $wynik['data_pom'];
  3. echo '</table><table>';
  4. }


data_pom jest wyświetlana w formie '2010-01-29' zgodnie z powyższym warunkiem zmienna o wartości '$ld=-1' będzie zawsze różna od data_pom questionmark.gif? Czyli po każdorazowym wejściu w pętlę będzie się zamykać tabela i otwierać nowa...

Skrypt już działa, tabele są tworzone na nowo i wszystkie rekordy o tej samej dacie znajdują się razem. Jednak nie tak jak radził kolega wyżej:
  1. $ld =-1;

Gdyż to rozwiązanie nic nie dało. Zamiast tego, zastosowałem:
  1. $ld = $_POST['data'];

Poza tym warunek if jak najbardziej zadziałał. Plus za pomoc, dzięki i pozdrawiam, mam tylko jeszcze małe pytanie odnośnie zabezpieczeń, mógłbyś sprecyzować o co dokładnie chodziło z tym "strzałem w głowę"??

Ten post edytował blusss1 15.02.2010, 15:34:24
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 Wersja Lo-Fi Aktualny czas: 18.08.2025 - 16:06