Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] terminarz
Forum PHP.pl > Forum > Przedszkole
pioch
witam


Na jakiej zasadzie, w jaki sposob mozna uzyskać takie efekt jak na dołączonym zdjęciu...




prosze o pomoc...
Cienki1980
A w czym masz problem questionmark.gif Z wyciągnięciem danych czy z ułożeniem tego w taki sposób questionmark.gif
Wszystko zależy od tego jak masz dane zapisane w bazie. Potem wyświetlenie tego to już kwestia odpowiedniego ułożenia. Pokaż jak przechowujesz dane to może coś się wymyśli.
pioch
chodzi mi oto by samo sie zmieniało nastepna, poprzednia


wyświetlic dane umiem, ale musze recznie zmieniać kolejki,
np. poprzednia (kolejka 7 ), nastepna ( kolejka 8)
Cienki1980
Dalej nie wiem o co chodzi sad.gif. Co rozumiesz przez to, że ma się samo zmieniać questionmark.gif
plisek
Proponuje powalczyc z if'ami lub ze switch'em
bo jak rozumiem, nie imiesz wyswietlic napisu uzalezniajac go od daty

sprobuj opisac problem dokładniej, bo troche ciezko domyslac sie o co Ci chodzi, tymbardziej ze jasnowidzów Ci u nas deficyt ;/
pozdr
pioch
plisek samo sedno sprawy...

chciałbym uzaleznić to od daty, ale nie mam wiedzy jak to zrobić :/


moze podpowiesz..., lub jakiś przykład
Cienki1980
Zakładam, że informacje na temat kolejek ( czy też terminarzu .. jakokolwiek się to nazywa ) przechowujesz w bazie danych. Powinieneś mieć tam kolumnę wskazująca na daty danych spotkań i wg niej wyciągać dane i odpowiednio formatować.

Pokaż jak przechowujesz dane w bazie i jakbyś chciał je wyciągać to może coś lepszego pomyślimy
pioch
terminarz :

id,kolejka, kiedy, przeciwnik, gospodarz
Cienki1980
Zakładam, że pole 'kiedy' jest w formacie "rrrr-mm-dd".

Wyciągasz dane za pomocą zapytania gdzie sortujesz po dacie :
  1. SELECT * FROM terminarz ORDER BY kiedy DESC;


Wyciągasz wszystkie dane po czym w pętli wyświetlasz rekordy. Żeby nie wyświetlać za każdym razem daty wyświetlasz ją tylko w pierwszym <tr> a potem sprawdzasz z wierszem poprzednim czy data się zmieniła. Jeżeli jest taka sama to wyświetlasz tylko dane o meczu bez daty a w przypadku gdy jest inna od daty z wiersza poprzedniego wyświetlasz nowy wiersz z nowa data i wyswietlasz dalej dane.
pioch
Cienki1980 a moze podać przykład....

nie potrafie tego zrobic
maryaan
wybieraj po kolejce a nie dacie, moga byc rozne daty w jednej kolejce
Cienki1980
Będzie schematycznie, więc nie kopiuj całości tylko zobacz na jakiej zasadzie ma to działać:
  1. <?php
  2. $res=mysql_query("select * from terminarz order by kiedy desc");
  3. //jezeli tak jak maryaan mowi ze daty jednej kolejki moga byc rozne to sortuj po k
    olejce
  4. //czyli tak
  5. // $res=mysql_query("select * from terminarz order by kolejka desc");
  6.  
  7. $old_row=array();
  8.  
  9. echo "<table>";
  10. while($row=mysql_fetch_array($res))
  11. {
  12.  if($row['kiedy']!=$old_row['kiedy'])
  13. echo "<tr><td>".$row['kolejka']."</td><td>".$row['kiedy']."</td></tr>";
  14.  
  15.  echo "<tr><td>".$row['gospodarz']."</td><td>".$row['przeciwnik']."</td></tr>";
  16.  $old_row=$row;
  17. }
  18. echo "</table>";
  19. ?>
pioch
maryaan ma racje , przeciez kolejka moze byc rozłożona na 2, 3 dni nieraz ...

Cienki1980 dzieki za przykład , wykorzystam w newsach smile.gif)


więc zabawa jest od nowa, nowe okoliczności... ech

moze ktoś ma na to rozwiązanie...
maryaan
ale na co chcesz rozwiazanie? wybierasz dane z kolejki xx i dostajesz tablice zawierajaca liste spotkan, wyswietlasz, pobierasz nastepna kolejkie itd. Jesli tego nie potrafisz zrobic bez gotowca to ciezko bedzie cos wiekszego stworzyc
pioch
potrafie to zrobić....

ale chodzi mi oto ze musze " ręcznie " zmieniac id kolejki
a chciałbym aby to się zmieniało w zależności od daty !
Cienki1980
No ale w czym problem questionmark.gif
Wchodzisz na stronę. Skrypt php pobiera date aktualną za pomocą date(). Sprawdzasz czy w bazie są jakieś spotkania w tej dacie i np 3 dni plus/minus ... czyli w obrebie tygodnia. Na podstawie tych dwóch dat wyciągasz spotkania.
pioch
ale nie umiem tego własnie zrobić...

mozesz pokazac przykład
Cienki1980
Tym razem odeślę Ciebie do manuala:
Funkcja date() i przykład 3.

A w zapytaniu użyj np BETWEEN;
pioch
  1. SELECT * FROM terminarz BETWEEN data1 AND dat2 ORDER BY kolejka DESC



cos takiego
Cienki1980
Sprawdź czy zadziała ... zobacz jak tworzyć daty wstecz i do przodu ... a na pewno ruszysz do roboty.

A tak przy okazji. Jeżeli wyświetlasz wszystkie rekordy z tabeli terminarz ( a na pewno te ostatatnie - czyli z najwyższą kolejką ) to gdzie tu zmiana id_kolejki questionmark.gif Po wejściu na stronę zawsze będziesz miał najbardziej aktualne wpisy.
pioch
nie chce ruszyć,,,, ec hhh

daty zrobiłem tak


data1= = mktime (0,0,0,date("m") ,date("d")+5,date("Y"));



dat2= = mktime (0,0,0,date("m") ,date("d")+5,date("Y"));
Cienki1980
To co zrobiłeś zwróci Ci datę w postaci uniksowego znacznika czasu ( liczba sekund ). Obie daty robisz na +5 dni.

  1. <?php
  2. $data1=date("Y-m-d",mktime(0,0,0,date("m"),date("d")+5,date("Y")));
  3.  
  4. $data2=date("Y-m-d",mktime(0,0,0,date("m"),date("d")-5,date("Y")));
  5. ?>

Tak powinno być lepiej.
pioch
jednak po przemysleniu z tą data też jest kiepski pomysł....


wymysliłem lepszy , ale licze na pomoc bo nie wiem jak to wykonać

a więc do rzeczy...

mozna sprawdzic czy dane pole jest uzupełnione ( wynik meczu )

ostatnia kolejka ( to ostatni rekord z wpisanym wynikiem )
nastepna koleja ( to pierwszy rekord w którym nie jest wpisany wynik )

czy można sprawdzać czy dane pole jest uzupełnione czy puste ?
Cienki1980
Jeżeli dobrze rozumiem, to mecze np kolejki 10 są rozgrywane w jakichś tam datach, ale wszystkie mają wpis kolejka=10;
Jeżeli tak jest to możesz wyciągać dane w ten sposób
  1. SELECT * FROM terminarz ORDER BY kolejka DESC

Sprawdzająć w pętli wyświetlającej czy
  1. <?php
  2. $wynik=='';
  3.  //lub
  4.  isset($wynik);
  5. ?>

decydujesz czy wyświetlić wynik, czy wyświetlić kiedy będzie dane spotkanie rozgrywane.
pioch
właśnie oto mi chodzi....


ale tą zmienna $wynik chciałbym uzaleznić od pola w bazie danych...


czy idzie tak zrobić, aby sprawdzało czy jest wpis cxzy go brak
Cienki1980
  1. <?php
  2. $row=mysql_fetch_array($zapytanie);
  3. if($row['wynik']=='')
  4. {
  5.  // cos tam robisz
  6. }
  7. //lub
  8. if(isset($row['wynik']))
  9. {
  10.  // cos tam robisz
  11. }
  12. ?>

Już wiesz jak questionmark.gif
pioch
nio teraz wiem....


tyle ze mój wynik jest zawarty w 2 polach smile.gif

tzn $row['gol1'] i $row['gol2']

// edit

moge sprawdzic jedno pole..... np $row['gol1']
Cienki1980
Jeżeli wpisujesz wynik 2:0 jako gol1=2 a gol2=0 to wystarczy że będziesz sprawdzał tylko jedno pole, bo skoro jedno jest ustawione to znaczy, że to drugie też jest ustawione.
Jeżeli jednak wpisujesz taki wynik jako gol1=2 gol2='' to sprawdzaj oba pola jednocześnie.
  1. <?php
  2. if(isset($row['gol1']) && isset($row['gol2']))
  3. {
  4.  //wyswietlasz wyniki
  5. }
  6. else
  7. {
  8.  //wyswietlasz terminy
  9. }
  10. ?>
pioch
Jak połaczyć te 2 kody....

  1. <?php
  2.  
  3. $res=mysql_query("SELECT m.kiedy, m.kolejka, m.gol1, m.gol2 k1.id as id1, k2.id as id2, k1.na
    zwa as nazwa1, k2.nazwa as nazwa2 FROM mecz as m, druzyny as k1, druzyny as k2 WH
    ERE  k1.id = m.gospodarz AND
  4. k2.id = m.przeciwnik order by kiedy desc");
  5.  
  6. $old_row=array();
  7.  
  8. echo "<table width="200">";
  9. while($row=mysql_fetch_array($res))
  10. {
  11.  if($row['kiedy']!=$old_row['kiedy'])
  12. echo "<tr><td>".$row['kolejka']."</td><td>".$row['kiedy']."</td></tr>";
  13.  
  14.  echo "<tr><td><font class="LOGINHD11">".$row['nazwa1']."</td><td>.$row['gol1']."-.$row['gol2']."<td>".$row['nazwa2']."</td></tr>";
  15.  $old_row=$row;
  16. }
  17. echo "</table>";
  18.  
  19. ?>



z tym

  1. <?php
  2. if(isset($row['gol1']) && isset($row['gol2']))
  3. {
  4.  //wyswietlasz wyniki
  5. }
  6. else
  7. {
  8.  //wyswietlasz terminy
  9. }
  10. ?>
Cienki1980
Nie no to już za dużo ... napisałem co i jak nawet zrobiłem komentarze w tym krótkim kodzie co masz zrobić kiedy .. więc się trochę postaraj.
pioch
Cienki1980 nie chodzi mi o gotowca....

ale ja coś zle zrobiłem chyba


  1. <?php
  2.  
  3.  
  4. $res=mysql_query("SELECT m.kiedy, m.kolejka, m.gol1, m.gol2, k1.id as id1, k2.id as id2, k1.n
    azwa as nazwa1, k2.nazwa as nazwa2 FROM mecz as m, druzyny as k1, druzyny as k2 W
    HERE  k1.id = m.gospodarz AND
  5. k2.id = m.przeciwnik 
  6.  
  7. order by kolejka desc");
  8.  
  9.  
  10.  
  11. if(isset($row['gol1']) && isset($row['gol2']))
  12. {
  13. $old_row=array();
  14.  
  15. echo "<table width="200">";
  16. while($row=mysql_fetch_array($res))
  17. {
  18. if($row['kiedy']!=$old_row['kiedy'])
  19. echo "<tr><td>".$row['kolejka']."</td><td>".$row['kiedy']."</td></tr>";
  20.  
  21.  echo "<tr><td><font class="LOGINHD11">".$row['nazwa1']."</td><td>".$row['gol1']."-".$row['gol2']."</td><td>".$row['nazwa2']."</td></tr>";
  22.  
  23.  $old_row=$row;
  24. }
  25. echo "</table>";
  26. }
  27. else
  28. {
  29. $old_row=array();
  30.  
  31. echo "<table width="200">";
  32. while($row=mysql_fetch_array($res))
  33. {
  34. if($row['kiedy']!=$old_row['kiedy'])
  35. echo "<tr><td>".$row['kolejka']."</td><td>".$row['kiedy']."</td></tr>";
  36.  
  37.  echo "<tr><td><font class="LOGINHD11">".$row['nazwa1']."</td><td>".$row['nazwa2']."</td></tr>";
  38.  
  39.  $old_row=$row;
  40. }
  41. echo "</table>";
  42. }
  43.  
  44. ?>



wyświetaja mi sie wszytskie kolejki.....

niezależnie czy sa wpisane bramki czy nie :/

nie wiem w czym bład

stad moja prośba na spojrzenie fachowym okiem
Cienki1980
najpierw masz warunek if gdzie korzystasz ze zmiennej $row .. którą dopiero później ustawiasz.

Zrób najpierw pętlę while i wewnątrz tej pętli zrób warunek if($row['gol1'].... )
W zależności od tego wyświetlisz odpowiednie dane.
pioch
dzieki za porade poprawiłem kod


  1. <?php
  2.  
  3. $res=mysql_query("SELECT m.kiedy, m.kolejka, m.gol1, m.gol2, k1.id as id1, k2.id as id2, k1.n
    azwa as nazwa1, k2.nazwa as nazwa2 FROM mecz as m, druzyny as k1, druzyny as k2 W
    HERE  k1.id = m.gospodarz AND
  4. k2.id = m.przeciwnik AND kolejka ='1'
  5.  
  6. order by kolejka desc");
  7.  
  8.  
  9. $old_row=array();
  10.  
  11. echo "<table width="200">";
  12. while($row=mysql_fetch_array($res))
  13. {
  14. if(isset($row['gol1']) && isset($row['gol2']))
  15. {
  16.  
  17.  if($row['kiedy']!=$old_row['kiedy'])
  18. echo "<tr><td>".$row['kolejka']."</td><td>".$row['kiedy']."</td></tr>";
  19.  
  20. echo "<tr><td><font class="LOGINHD11">".$row['nazwa1']."</td><td>".$row['gol1']."-".$row['gol2']."</td><td>".$row['nazwa2']."</td></tr>";
  21.  
  22.  $old_row=$row;
  23. }
  24. else
  25. {
  26.  if($row['kiedy']!=$old_row['kiedy'])
  27. echo "<tr><td>".$row['kolejka']."</td><td>".$row['kiedy']."</td></tr>";
  28.  
  29.  echo "<tr><td><font class="LOGINHD11">".$row['nazwa1']."</td><td>".$row['nazwa2']."</td></tr>";
  30.  $old_row=$row;
  31. }
  32.  
  33. }
  34.  
  35. echo "</table>";
  36.  
  37. ?>



ale wyswietla tylko pierwsza kolejke z golami....

co trzeba zrobic by wyświetlalo ostatnia kolejke z bramkami i pierwsza bez bramek?
maryaan
Cytat(pioch @ 5.02.2007, 23:07:03 ) *
ale wyswietla tylko pierwsza kolejke z golami....
dales warunek
Kod
AND kolejka ='1'
to wyswietla tylko pierwsza....
Cytat
co trzeba zrobic by wyświetlalo ostatnia kolejke z bramkami i pierwsza bez bramek?
skonstruowac zapytanie ktore wybierze ostatnia kolejke z bramkami a pozniej pierwsza bez bramek, troche wlasnej inwencji bo i tak juz gotowca dostales na talerzu...
pioch
no dobrze dodałem limit 8 do zapytania ( 8 meczy ma dana kolejka ) i oczywiście usunołem kolejka ='1' przeoczenie....


ale nadal nie wyswietla kolejek bez wpisania gol1 and gol2 czyli tego drugiego warunku....
Cienki1980
Usuń $old_row=$row z linijek 22 i 30 i umieść to w 33 lini ( między klamrami )
pioch
nie pomaga...

nadal nie wyświetla kolejki w której nie ma wypełnionego pola gol1 i gol2
maryaan
ni ewiem czy ja zle widze czy Ty filtrujesz rekordy dopiero w php? blink.gif baza ma wybrac TYLKO te rekordy ktore chcesz wyswietlic, wybierasz paczke danych z rekordami z kolejki xxx i je wyswietlasz, pobierasz nastepna paczke, wyswietlasz ja itd.
pokaz stuktury tych tabel co masz w bazie bo ja sie szczerze mowiac zgubilem w tym co Ty robisz
pioch
struktura tebeli mecz

id, przeciwnik, gospodarz, kiedy, kolejka, gol1, gol2
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.