Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Co jest źle w tym kodzie?
Forum PHP.pl > Forum > Przedszkole
marian2299
Nie wyświetla żadnego błędu, ale pomimo tego że nie ma żadnego rekordu nie pokazuje "nic dzisiaj nie gramy",
  1. <?php
  2.  
  3. $dni = array('Mon' => 'poniedzialek', 'Tue' => 'wtorek', 'Wed' => 'sroda', 'Thu' => 'czwartek', 'Fri' => 'piatek', 'Sat' => 'sobota', 'Sun' => 'niedziela');
  4. $dzien = $dni[date('D')];
  5.  
  6. $zapytanie = "SELECT * FROM `ram_$dzien` ORDER BY `start` ASC" or die('Error 3');
  7. $wynik = mysql_query($zapytanie) or die('Error 4');
  8. while($wiersz = mysql_fetch_array($wynik))
  9. {
  10. $ifek = count($wynik);
  11. $godzina = date("G:i");
  12. if ($ifek = 0) {
  13. echo "Nic dzisiaj nie gramy";
  14. }
  15. else if(($wiersz[1] >=$godzina) AND ($godzina<$wiersz[2])) {
  16. echo "<font color="red"><strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/></color>"; }
  17.  
  18. else {
  19.  echo "<strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/>";
  20. }
  21.  
  22. }
  23.  
  24. ?>
blooregard
Cytat
if ($ifek = 0) {

Pomyliłeś przypisanie z porównaniem ( = z == )
Pr0100
  1. <?php
  2. $zapytanie = "...." or die('Error 3');
  3. ?>


bez sensu, zmienna $zapytanie zawsze zostanie zadeklarowana
marian2299
Niestety, nadal nie działa.
Pr0100, jak to "zawsze zostanie zadeklarowana" ?
Spawnm
  1. <?php
  2. echo "<font color="red"><strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/></color>";
  3. ?>

zmień na
  1. <?php
  2. echo "<font color=\"red\"><strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/></color>";
  3. ?>
Pr0100
z
  1. <?php
  2. echo "<font color="red"><strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/></color>"
  3. ?>


na
  1. <?php
  2. echo '<font color="red"><strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/></color>'
  3. ?>


oraz

z
  1. <?php
  2. echo "<strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/>";
  3. ?>


na
  1. <?php
  2. echo '<strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/>';
  3. ?>
marian2299
To nic nie dało, i domyśliłbym się gdyby był jakiś rekord, ale nie wyświetliło.
Tylko nadal nie pokazuje "nic dzisiaj nie gramy" ;/.
Spawnm
Pr0100 -> uzasadnij , w "" zamiast wyświetlić $nazwa_zmiennej wyświetla jej wartość.
piotrooo89
zamiast count używaj: http://pl.php.net/manual/en/function.mysql-num-rows.php choć jest to najmniej wydajny sposób.

//EDIT

zapytanie powinno wyglądać tak:

  1. <?php
  2. $zapytanie = "SELECT * FROM `ram_$dzien` ORDER BY `start` ASC";
  3. $wynik = mysql_query($zapytanie) or die(mysql_error());
  4. ?>
marian2299
Nadal nic nie wyświetla (strona się ładuje).
Dodam rekord i zobaczę czy się wyświetli.
Teraz zrobiło się coś dziwnego.
Audycje wyświetliły się, ale:
12:20-14:50 - BABCIA
Prowadzi: asdasd

16:50-19:40 - asdas
Prowadzi: MAMKA

A miało być odwrotnie. Audycje trwające miały być czerwone.
Jak usunę nadal nie pokazuje "Nic dzisiaj nie gramy"

Teraz mój kod wygląda tak:
  1. <?php
  2.  
  3. $dni = array('Mon' => 'poniedzialek', 'Tue' => 'wtorek', 'Wed' => 'sroda', 'Thu' => 'czwartek', 'Fri' => 'piatek', 'Sat' => 'sobota', 'Sun' => 'niedziela');
  4. $dzien = $dni[date('D')];
  5.  
  6. $zapytanie = "SELECT * FROM `ram_$dzien` ORDER BY `start` ASC";
  7. $wynik = mysql_query($zapytanie) or die(mysql_error());
  8. while($wiersz = mysql_fetch_array($wynik))
  9. {
  10. $ifek = mysql_num_rows($wynik);
  11. $godzina = date("G:i");
  12. if ($ifek == 0) {
  13. echo "Nic dzisiaj nie gramy";
  14. }
  15. else if(($wiersz[1] >=$godzina) AND ($godzina>$wiersz[2])) {
  16. echo "<font color=\"red\"><strong>$wiersz[1]-$wiersz[2]</strong> - $wiersz[3]<br />Prowadzi: <strong>$wiersz[4]</strong><br/><br/></color>"; }
  17.  
  18. else {
  19.  echo '<strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/>';
  20. }
  21.  
  22. }
  23.  
  24. ?>
piotrooo89
  1. <?php
  2. $zapytanie = "SELECT * FROM `ram_$dzien` ORDER BY `start` ASC";
  3. $wynik = mysql_query($zapytanie) or die(mysql_error());
  4.  
  5. $ifek = mysql_num_rows($wynik);
  6. $godzina = date("G:i");
  7.  
  8. if ($ifek == 0)
  9. {
  10.    echo "Nic dzisiaj nie gramy";
  11. }
  12. else
  13. {
  14.    while($wiersz = mysql_fetch_array($wynik))
  15.    {
  16.        if (($wiersz[1] >= $godzina) AND ($godzina >= $wiersz[2]))
  17.        {
  18.            echo '<font color="red"><strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />
  19.            Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/></color>';
  20.        }
  21.        else
  22.        {
  23.            echo '<strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />
  24.            Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/>';
  25.        }
  26.    }
  27. }
  28. ?>


i teraz powiedz mi do czego odwoluje się $wiersz[1] i $wiersz[2]. do godziny rozpoczęcia i zakończenia? jeśli tak to pokombinuj z warunkiem.
marian2299
Wiersz[1] to godzina rozpoczęcia XX:XX, a wiersz[2] zakończenia.
Pr0100
Cytat
Pr0100 -> uzasadnij , w "" zamiast wyświetlić $nazwa_zmiennej wyświetla jej wartość.


z przyzwyczajenia nie stosuje echo "$tablica[klucz]", napisałem post minute po tobie, nie twierdze że twój sposób jest gorszy od mojego.
prszakal
1) Nie należy mieszać kodu PHP z kodem HTML
2) Nie dość, że mieszasz PHP z HTML to jeszcze używasz znaczników, które zostały już zdeprecjonowane
3) Do sprawdzenia zawartości tablicy zastosuj print_r lub var_dump
4)
Cytat
Teraz zrobiło się coś dziwnego.
Audycje wyświetliły się, ale:
12:20-14:50 - BABCIA
Prowadzi: asdasd

16:50-19:40 - asdas
Prowadzi: MAMKA
A miało być odwrotnie. Audycje trwające miały być czerwone.
Jak usunę nadal nie pokazuje "Nic dzisiaj nie gramy"
To są właśnie uroki nieprawidłowych rozwiązań.

pozdrawiam
prszakal
marian2299
Sory, ale każdy podaje inny sposób mówiąc "ten jest najlepszy". A nikt nie daje rozwiązania, tylko mieszacie...
piotrooo89
podałem Ci rozwiązanie jak na tacy. dopisałem pobaw się warunkiem wyświetlania godziny (przez pobaw rozumiem, zobacz jak działają większe, mniejsze, równe).
marian2299
  1. <?php
  2. $dni = array('Mon' => 'poniedzialek', 'Tue' => 'wtorek', 'Wed' => 'sroda', 'Thu' => 'czwartek', 'Fri' => 'piatek', 'Sat' => 'sobota', 'Sun' => 'niedziela');
  3. $dzien = $dni[date('D')];
  4. $query = mysql_query("SELECT * FROM ram_".$dzien." ORDER BY start DESC");
  5. $godzina = date("G:i");
  6. $ifek = mysql_num_rows($query);
  7.  
  8.  
  9. if ($ifek == 0)
  10. {
  11.  
  12.   echo "Nic dzisiaj nie gramy";
  13.  
  14. } else {
  15.    while($wiersz = mysql_fetch_array($query))
  16.      {
  17.          if (($godzina >= $wiersz[1]) AND ($godzina < $wiersz[2]))
  18.            {
  19.               echo '<font color="#FF0000"><strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />
  20.                     Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/></font>';
  21.             } else {
  22.               echo '<strong>'.$wiersz[1].'-'.$wiersz[2].'</strong> - '.$wiersz[3].'<br />
  23.                     Prowadzi: <strong>'.$wiersz[4].'</strong><br/><br/>';
  24.             }
  25.       }
  26. }
  27. ?>

Tak wygląda kod, praktyka:
8:00-10:00 - MaxiPoranek z MaxiStacją!
Prowadzi: DJ Bąbel

15:50-18:00 - Go Poznań! Go!
Prowadzi: Gural


11:00-14:00 - W rytm Brequela
Prowadzi: Kariu$

Czemu audycja o 11 jest po audycji o 15 ?

Jak zmieniłem DESC na ASC to było:

15:50-18:00 - Go Poznań! Go!
Prowadzi: Gural


11:00-14:00 - W rytm Brequela
Prowadzi: Kariu$

8:00-10:00 - MaxiPoranek z MaxiStacją!
Prowadzi: DJ Bąbel
Kojak
A pole start w bazie danych jakiego masz typu? Jeśli Varchar to wszystko jasne.. on nie sortuje według znaków tylko według kodu ASCII danego znaku. I dlatego tak się dzieje. W tym przypadku masz dwa wyjścia: albo zmienić kolumnę na typu INT ewentualnie musisz otrzymane wyniki posortować.
marian2299
No nie wierzę. Jesteś wielki. Tylko sortowanie w drugą stronę zmienię. Tyle się męczyłem. Dałbym ci z 10 pomógł.
Dobra dzięki wszystkim, już was "nagradzam".
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.