Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Problem ze zmienna Php ktora wystepuje w zapytaniu SQL
Forum PHP.pl > Forum > Przedszkole
byczek1984
Witam
Mam problem, mam zmienna $godzina_orginal ktorej wartosc wynosi 8.00 - 8.45 i ta zmienna dodaje do zapytanie i to zapytanie nie dziala, wartosc zmiennej $liczba wynosi 0 i nie wiem gdzie jest problem, wszystko powinno dzialac... w tabeli mam kolumne o nazwie `godzina` i jest rowna '8.00 - 8.45' . Prosze o pomoc

  1. <?php
  2. $godzina_orginal='8.00 - 8.45';
  3. ?>


  1. $zapytanie="Select `$dzien`,`godzina` from plan_1a where `godzina`='$godzina_orginal' ";
  2. $wynik=mysql_query($zapytanie);
  3. $liczba=mysql_num_rows($wynik);
  4.  
  5. echo $liczba;
bregovic
Weź wrzuć:
  1. <?php
  2. ?>

Na samym końcu. Bo z tego co widzę to nie ma w tym kodzie żadnego problemu. A, i spróbuj dać:
  1. <?php
  2. $zapytanie= "Select `Poniedzialek`, `godzina` from plan_1a where `godzina`='".$godzina_orginal."';";
  3. ?>

Zamiast twojego.
No i koniecznie zacznij używać BBCode.
Ociu
Proszę dodać tag do tematu i odpowiednie bbCode do kodu.
nevt
czy Poniedzialek to na pewno nazwa kolumny w tabeli? a nie przypadkiem zwykły tekst? wtedy twoje zapytanie powinno wyglądać:
  1. <?php
  2. $zapytanie=("SELECT 'Poniedziałek', `godzina` FROM `plan_1a` WHERE `godzina`='$godzina_orginal';");
  3. ?>

a najlepiej popraw kod na:
  1. <?php
  2. $wynik=mysql_query($zapytanie) or die(mysql_error());
  3. ?>

pokaż tu rezultat...
byczek1984
Witam , nic nie pomaga, probowalem wszystkich metod i zadna nie daje efektu....
Pokaze wam moja tabele , moze tutaj jest cos zlego ze nie wykonuje zapytania sql

  1. CREATE TABLE `plan_1a` (
  2. `id_plan` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nr` varchar(20) NOT NULL DEFAULT '',
  4. `godzina` varchar(40) NOT NULL,
  5. `Poniedzialek` varchar(20) NOT NULL DEFAULT '',
  6. `Wtorek` varchar(20) NOT NULL DEFAULT '',
  7. `Sroda` varchar(20) NOT NULL DEFAULT '',
  8. `Czwartek` varchar(20) NOT NULL DEFAULT '',
  9. `Piatek` varchar(20) NOT NULL DEFAULT '',
  10. `Sobota` varchar(20) NOT NULL DEFAULT '',
  11. `Niedziela` varchar(20) NOT NULL DEFAULT '',
  12. PRIMARY KEY (`id_plan`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


P.s : natomiast jak podstawie aktualna godzina bez zadnego przypisywania do zmiennej To dziala: `godzina`='8.00 - 8.45' , natomiast jak dam
  1. `godzina`='$godzina_orginal';
nie pracuje....
JoShiMa
Problemem mogą być jakieś białe znaki na początku lub/i końcu stringu $godzina_orginal Spróbuj użyć wpierw trim()
bregovic
To znaczy nie otrzymujesz żadnego błędu po dodaniu "or die mysql_error()"?
Poza tym, dodaj tag do tematu, i użyj BBCode w oryginalnym poście.
byczek1984
Tak nie otrzymuje zadnego komunikatu o bledzie jak dodam "or die mysql_error()"

Probowalem uzyc funkcji trim() do usuwanie nie potrzebnych pustych przestrzeni ale tez nic nie zadzialalo:>
JoShiMa
No to jak już skonstruujesz sobie to zapytanie to je wyświetl i zobacz jak wygląda. Nam też pokaż.
bregovic
Może ja głupieję o poranku (ach to śledzenie wyborów winksmiley.jpg) ale właśnie wypróbowałem twój kod, i działa jak trzeba - zakładając że masz rekord z odpowiednią godziną...
nevt
czy przypadkiem w tej linijce:
  1. <?php
  2. $godzina_orginal='8.00 - 8.45';
  3. ?>

nie jest użyty znak '–' czyli MYŚLNIK zamiast znaku '-' czyli MINUS questionmark.gif albo odwrotnie, w bazie masz myślnik zamiast minusa?
byczek1984
Masz uzyty minus "-" tak jak w zmiennej... i nie trybi
bregovic
Pffft... może podaj pełen kod który próbujesz wykonać? Bo coś tu śmierdzi. A ja się dzisiaj myłem winksmiley.jpg
byczek1984
Hmm oki tutaj jest caly kod
tutaj zawartosc tabeli
  1. INSERT INTO `plan_1a` (`id_plan`, `nr`, `godzina`, `Poniedzialek`, `Wtorek`, `Sroda`, `Czwartek`, `Piatek`, `Sobota`, `Niedziela`) VALUES
  2. (1, '1', '8.00 - 8.45', 'Polski', 'Matematyka', 'Religia', 'W-F', 'Historia', 'Matematyka', 'Matematyka'),
  3. (2, '2', '8.55 - 9.40', 'Polski', 'Biologia', 'Matematyka', 'WOLNE', 'Matematyka', 'Historia', 'Matematyka'),
  4. (3, '3', '9.50 - 10.35', 'Matematyka', 'Biologia', 'Matematyka', 'Biologia', 'Matematyka', 'Niemiecki', 'Matematyka'),
  5. (4, '4', '10.50 - 11.35', 'Historia', 'Matematyka', 'Geografia', 'Fizyka', 'Historia', 'Geografia', 'Matematyka'),
  6. (5, '5', '11.45 - 12.35', 'Matematyka', 'WOLNE', 'Matematyka', 'Matematyka', 'Matematyka', 'Matematyka', 'Matematyka'),
  7. (6, '6', '12.40 - 13.25', 'Matematyka', 'WOLNE', 'Matematyka', 'Matematyka', 'Matematyka', 'Religia', 'Matematyka');



KOD PHP
  1. <?php
  2.  
  3. $dzien=dzien_tyg(date("w"));  //aktualny dzien w postaci slownej (funkcje dzien_ty()tutaj uzylem wlasne)
  4. $godzina=date("H:i"); //aktualna godzina, lecz ustawimy samoczynie zeby wiedzial ze wkoncu ten kod dziala:) daje na 8.00 - 8.45 (taka sama jaka jest w bazie danych)
  5. $godzina_orginal='8.00 - 8.45';
  6.  
  7.  
  8. echo $godzina_orginal;  //wyswietla mi tu 8.00 - 8.45
  9. ?>



  1. $zapytanie="Select `$dzien`,`godzina` from plan_1a where `godzina`='$godzina_orginal' ";
  2. $wynik=mysql_query($zapytanie);
  3. $liczba=mysql_num_rows($wynik);
  4. echo $liczba;


Glownie ten kod polega na tym ze stronka pobiera automatycznie aktualna godzine czasu, nastepnie ta godzine porownuje z godzinami jakim ma w bazie danych( jest to dzienniczek ucznia, i np jesli aktualna godz bedzie 8.17 to mam funkcje ktora mowi ze w tym czasi trwa lekcja od 8.00 - 8.45 i przypisuje do zmiennej $godzina_orginal='8.00 - 8.45' i nastepnie to dodaje do zapytanie w sql, ale zapytanie nie dziala jak napisze `godzina`='$godzina_orginal' wyswietla 0 natomiast jak napisz `godzina`='8.00 - 8.45' wyswietla prawde.... I nie wiem czemu nie dziala jak przypisze zmienna.... tak jakby ta zmienna $godzina_orginal nie ma wartosci w zapytaniu...
bregovic
I cease my case. U mnie, po zaimportowaniu MySQL'a i wykonaniu poniższego kodu, dostaję 1...
  1. <?php
  2. $dzien='Poniedzialek';
  3. $godzina_orginal='8.00 - 8.45';
  4.  
  5. $zapytanie="Select `$dzien`,`godzina` from plan_1a where `godzina`='$godzina_orginal' ";
  6. $wynik=mysql_query($zapytanie);
  7. $liczba=mysql_num_rows($wynik);
  8. var_dump($liczba);
  9. ?>
JoShiMa
I możemy sobie tak gdybać. Weź wyświetl to zapytanie po tym jak je już skonstruujesz, bo inaczej nie dojdziesz co jest nie tak. A poza tym wszystkie problemy biorą się z beznadziejnej konstrukcji tabeli. Chcesz analizować godziny a używasz varcharów zamiast time. Beznadzieja.
byczek1984
Nio wiem ze mozna uzyc Time zamiast varchar, tylko jak uzyje time to jak zapisze godzine : 8.00 - 8.45 do bazy danych....
JoShiMa
Cytat(byczek1984 @ 5.11.2008, 15:36:00 ) *
Nio wiem ze mozna uzyc Time zamiast varchar, tylko jak uzyje time to jak zapisze godzine : 8.00 - 8.45 do bazy danych....

W dwóch kolumnach typu time?
byczek1984
nio tak ale to znowu wiecej roboty... a czemu mi nie chce wyswietlac tak jak mam:> wszystko powinno sie zgadzac... wszystkiego probowalem usuwanie pustych przestrzeni, znakow kontrolnych itp trim() i jak podstawie jako zmienna nie wyswietli mi natomiast jak napisze :8.00 - 8.45 to mi zadziala
JoShiMa
Cytat(byczek1984 @ 5.11.2008, 16:06:33 ) *
a czemu mi nie chce wyswietlac tak jak mam:>


A nie zgadniemy póki sobie nie wyświetlisz zapytania....
byczek1984
Bo to zmienna: $godzina_orginal uzyskalem z ponizszych instrukcji:
  1. <?php
  2. if( ($godz_start_odstep[0]==$godz_roz[0]) && ($godz_start_odstep[1]<=$godz_roz[1]) OR ($godz_koniec_odstep[0]==$godz_roz[0]) && ($godz_koniec_odstep[1]>=$godz_roz[1]) )
  3.  {
  4.   echo '<h4> '.$godz_start_odstep[0].'.'.$godz_start_odstep[1].' - '.$godz_koniec_odstep[0].'.'.$godz_koniec_odstep[1].'</h4>';
  5.      $godzina_orginal= ''.$godz_start_odstep[0].'.'.$godz_start_odstep[1].' - '.$godz_koniec_odstep[0].'.'.$godz_koniec_odstep[1].'';
  6.    
  7.  }
  8. ?>

i pozniej po tych wszystkich czynnosciach jak dam
  1. <?php
  2. echo $godzina_orginal;
  3. ?>
wyswietla mi 8.00 - 8.45 , i to sie zgadza nastomiast jak ta zmienna dam do zapytania
  1. $dzien='Poniedzialek';
  2. $godzina_orginal=trim($godzina_orginal);
  3.  
  4. $zapytanie="Select `$dzien`,`godzina` from plan_1a where `godzina`='$godzina_orginal' ";
  5. $wynik=mysql_query($zapytanie);
  6. $liczba=mysql_num_rows($wynik);
  7.  
  8. echo $liczba;

wyswietla mi 0, i np jak dam
  1. `godzina`='8.00 - 8.45'
to mi zadziala ale jak dam
  1. `godzina`='$godzina_orginal'
to nie zadziala, czemu? przeciez zmienna $godzina_orginal ma wartosc 8.00 - 8.45 questionmark.gif
JoShiMa
Cytat(byczek1984 @ 5.11.2008, 16:25:11 ) *
to nie zadziala, czemu? przeciez zmienna $godzina_orginal ma wartosc 8.00 - 8.45 questionmark.gif

Najwyraźniej jest różnica w zapisie tego stringu w Twoim PHP i w bazie. Gdzieś są białe znaki, których nie widzisz. Oczywiście możesz się z tym bawić ruski rok jak lubisz, zamiast się przyłożyć i skonstruować bazę jak należy.

Innym już się jak widzę znudziło tłumaczenie Ci jak krowie na rowie, że te stringi muszą się różnić. Mnie się tez znudziło.
byczek1984
Oki dzieki wszystkim juz poradzilem z tym problemem.... okazalo sie ze w tabeli godziny powinny byc zapisaywane 8.00-8.45 lecz nie 8.00 - 8.45 (bez przestrzeni) pozdrowka
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.