Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL + PHP]Zabawa z datą
Forum PHP.pl > Forum > Przedszkole
henio
Zastanawiam się jak zrobić zapytanie do bazy danych MySQL, które wyświetli wszystkie rekordy w określonym miesiącu np. marcu. A w bazie danych mam rekordy np.
2006-07-28
2006-07-29
2006-03-18
i tak dalej.

Nie jest to typ danych data
c0cr0ach
Rozwiązanie Twojego problemu jest proste przy założeniu, że data jest typu varchar.

  1. SELECT * FROM tabela WHERE substr(DATA, 7, 1)='3';
sagittariuspl
@c0cr0ach tylko, że datę zapisuje się w zmiennej `date`

spróbuj z waukiem where i podaj dolna datę i górną, np. `data`>'2006-02-28' AND `data`<'2006-04-01'

pisane 'z palca' więc nie wiem jak działa, ale założenie dobre
henio
Cytat(c0cr0ach @ 16.06.2007, 18:34:43 ) *
Rozwiązanie Twojego problemu jest proste przy założeniu, że data jest typu varchar.

  1. SELECT * FROM tabela WHERE substr(DATA, 7, 1)='3';


To działa. Mogę jeszcze się dowiedzieć co oznaczają liczby 7 i 1
mike
Cytat(henio @ 17.06.2007, 09:31:10 ) *
To działa. Mogę jeszcze się dowiedzieć co oznaczają liczby 7 i 1
Możesz.
Manual MySQL: substring()
c0cr0ach
Cytat
@c0cr0ach tylko, że datę zapisuje się w zmiennej `date`


Wiem o tym.
PS. Przeczytaj w całości pierwszy post henia w tym temacie.

Pozdrawiam smile.gif
sagittariuspl
a tak, nie doczytałem. mea culpa - sprawiedliwość po Twojej stronie
henio
Kiedy doszedłem przy dodawaniu do terminarza meczów z miesięcy dwucyfrowych (październik i listopad) wystąpił błąd. Mianowicie nie wyświetlają się mecze z tych miesięcy.

Fragmenty kodu:
  1. <?php
  2. include("funkcje.php");
  3. include("baza.php");
  4. naglowek("Terminarz");
  5. @$klub = @$_POST['klub'];
  6. @$miejsce = @$_POST['miejsce'];
  7. @$miesiac = @$_POST['miesiac'];
  8. @$kolejka = @$_POST['kolejka'];
  9. @$czy = @$_POST['czy'];
  10. if($miesiac != "Obojętne")
  11. {
  12. if($miesiac == "Lipiec 2006")
  13. { $miesiac = 7; }
  14. elseif($miesiac == "Sierpień 2006")
  15. { $miesiac = 8; }
  16. elseif($miesiac == "Wrzesień 2006")
  17. { $miesiac = 9; }
  18. elseif($miesiac == "Pazdziernik 2006")
  19. { $miesiac = 10; }
  20. elseif($miesiac == "Listopad 2006")
  21. { $miesiac = 11; }
  22. elseif($miesiac == "Marzec 2007")
  23. { $miesiac = 3; }
  24. elseif($miesiac == "Kwiecień 2007")
  25. { $miesiac = 4; }
  26. elseif($miesiac == "Maj 2007")
  27. { $miesiac = 5; }
  28. elseif($miesiac == "Czerwiec 2007")
  29. { $miesiac = 6; }
  30. }
  31. ?>


  1. <?php
  2. echo "<br />Wybierz miesiąc rozgrywania meczów: <select name='miesiac'>n";
  3. echo "<option>Obojętne</option>n";
  4. echo "<option>Lipiec 2006</option>n";
  5. echo "<option>Sierpień 2006</option>n";
  6. echo "<option>Wrzesień 2006</option>n";
  7. echo "<option>Pazdziernik 2006</option>n";
  8. echo "<option>Listopad 2006</option>n";
  9. echo "<option>Marzec 2007</option>n";
  10. echo "<option>Kwiecień 2007</option>n";
  11. echo "<option>Maj 2007</option>n";
  12. echo "<option>Czerwiec 2007</option>n";
  13. echo "</select>n";
  14. ?>


  1. <?php
  2. elseif($klub == "Wszystkie" && $miejsce == "Obojętne" && $miesiac != "Obojętne" && $kolejka == "Wszystkie")
  3. {
  4. $wynik = mysqli_query($mysql, "SELECT * FROM terminarz0607 WHERE substr(data, 7, 1)='".$miesiac."' ORDER BY data ASC, godzina ASC");
  5. echo "<table><tr><th colspan='4'>Terminarz</th></tr>";
  6. echo "<tr><th>Data</th><th>Mecz</th><th>Godzina</th><th>Wynik</th></tr>";
  7.  
  8. if ($wynik && $rekord = mysqli_fetch_assoc($wynik))
  9. {
  10. echo "<tr><td align='center' colspan='4'><b>".$rekord['kolejka']." kolejka</b></td></tr>";
  11. echo "<tr>n";
  12. echo "<td>".$rekord['data']."n";
  13. echo "</td><td>".$rekord['gospodarz']." vs ".$rekord['gosc']."</td>n";
  14. echo "<td>".$rekord['godzina']."</td><td>".$rekord['wynik']."</td></tr>n";
  15. $kolejkaa = $rekord['kolejka'];
  16. }
  17.  
  18. while ($wynik && $rekord = mysqli_fetch_assoc($wynik))
  19. {
  20. if($rekord['kolejka'] == 1)
  21. {
  22. echo "<tr>n";
  23. echo "<td>".$rekord['data']."n";
  24. echo "</td><td>".$rekord['gospodarz']." vs ".$rekord['gosc']."</td>n";
  25. echo "<td>".$rekord['godzina']."</td><td>".$rekord['wynik']."</td></tr>n";
  26. $kolejkaa = $rekord['kolejka'];
  27. }
  28. else
  29. {
  30. if($rekord['kolejka'] == $kolejkaa)
  31. {
  32. echo "<tr>n";
  33. echo "<td>".$rekord['data']."n";
  34. echo "</td><td>".$rekord['gospodarz']." vs ".$rekord['gosc']."</td>n";
  35. echo "<td>".$rekord['godzina']."</td><td>".$rekord['wynik']."</td></tr>n";
  36. }
  37. else
  38. {
  39. echo "<tr><td align='center' colspan='4'><b>".$rekord['kolejka']." kolejka</b></td></tr>";
  40. echo "<tr>n";
  41. echo "<td>".$rekord['data']."n";
  42. echo "</td><td>".$rekord['gospodarz']." vs ".$rekord['gosc']."</td>n";
  43. echo "<td>".$rekord['godzina']."</td><td>".$rekord['wynik']."</td></tr>n";
  44. }
  45. }
  46. @$kolejkaa = $rekord['kolejka'];
  47. }
  48. echo "</table>n";
  49. }
  50. ?>


Proszę o jakąś poradę.
nospor
wlacz myslenie
przeciez substr(data, 7, 1) zwraca ci jedną cyfre. jesli masz 2007-03-12 to zwroci ci 3,
a jak masz swoj październik:2007-10-12 to zwroci ci 0, a to przeciez 0 nie jest rowne 10.

teraz kicnij sobie w spokoju i pomysl jak to ominac
henio
Cytat(nospor @ 29.06.2007, 13:15:43 ) *
wlacz myslenie
przeciez substr(data, 7, 1) zwraca ci jedną cyfre. jesli masz 2007-03-12 to zwroci ci 3,
a jak masz swoj październik:2007-10-12 to zwroci ci 0, a to przeciez 0 nie jest rowne 10.

teraz kicnij sobie w spokoju i pomysl jak to ominac

substr(data, 7, 1) zamiast tego mozna by użyć substr(data, 7, 2) ?
sagittariuspl
nie biggrin.gif pomysl co bedzie wtedy z datami miesięcy od 1-9. ja bym to wrzucił do tablicy... piękna funkcja z opisem w manualu
henio
Cytat(sagittariuspl @ 29.06.2007, 17:10:43 ) *
nie biggrin.gif pomysl co bedzie wtedy z datami miesięcy od 1-9. ja bym to wrzucił do tablicy... piękna funkcja z opisem w manualu



Wydaje mi się, ze powinno być zamiast liczby 7 liczba 6 i zamiast cyfry 1 cyfra 2 i wtedy zamiast
  1. <?php
  2. $miesiac = 9;
  3. ?>


  1. <?php
  2. $miesiac = 09;
  3. ?>


Wówczas powinno być ok. Jeśli Twoim zdaniem jest inaczej to napisz to zamim wdroże to do skryptu, bo tak niepotrzebnie nadłoże pracy
Kicok
Cytat
Wówczas powinno być ok.


I będzie OK, tylko do zmiennej $miesiac musisz przypisywać stringi typu: '01', '02', '07', '11' zamiast zwykłych liczb.
henio
Cytat(Kicok @ 30.06.2007, 06:36:59 ) *
I będzie OK, tylko do zmiennej $miesiac musisz przypisywać stringi typu: '01', '02', '07', '11' zamiast zwykłych liczb.

To miałem na myśli pisząc, że zamiast $miesiac = 9 powinna równać się 09

Zastosowałem mój pomysł i działa jak należy.
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.