Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Pętla i zamiast 3x dany text to 1x
MnicH.
post 17.02.2009, 09:08:20
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 4
Dołączył: 16.02.2007
Skąd: Leszno

Ostrzeżenie: (20%)
X----


Witam,
mam mały problem z pętlą.
Napisałem kod:
  1. <?php
  2.  
  3. mysql_connect("localhost", "root", "");
  4. mysql_select_db ("testy");
  5.  
  6. $do_dd = '14';
  7. $do_mm = '02';
  8. $do_rr = '2009';
  9. $z_dd = '15';
  10. $z_mm = '02';
  11. $z_rr = '2009';
  12.  
  13. for($i=1;$i<4;$i++){
  14. $zapytanie = "SELECT * FROM pokoj_".$i;
  15. $rezultat = mysql_query ($zapytanie);
  16. while($pok = mysql_fetch_array($rezultat)){
  17.  
  18. if(($do_dd !== $pok['do_dd']) && ($z_dd !== $pok['z_dd']) && ($do_mm !== $pok['do_mm']) or ($z_mm !== $pok['z_mm'])){
  19. echo '<a href="#">Rezerwacja pokoju '.$i.'</a><br>';
  20. } else {
  21. echo 'Pokój '.$i.' zajęty<br>';
  22. }}}
  23. ?>

Baza Danych:
Kod
--
-- Struktura tabeli dla  `pokoj_1`
--

CREATE TABLE `pokoj_1` (
  `id` int(11) NOT NULL auto_increment,
  `do_dd` text,
  `do_mm` text,
  `do_rr` text,
  `z_dd` text,
  `z_mm` text,
  `z_rr` text,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=3;

--
-- Zrzut danych tabeli `pokoj_1`
--

INSERT INTO `pokoj_1` (`id`, `do_dd`, `do_mm`, `do_rr`, `z_dd`, `z_mm`, `z_rr`) VALUES(1, '11', '02', '2009', '13', '02', '2009'), (2, '14', '02', '2009', '15', '02', '2009');

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

--
-- Struktura tabeli dla  `pokoj_2`
--

CREATE TABLE `pokoj_2` (
  `id` int(11) NOT NULL auto_increment,
  `do_dd` text,
  `do_mm` text,
  `do_rr` text,
  `z_dd` text,
  `z_mm` text,
  `z_rr` text,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=3;

--
-- Zrzut danych tabeli `pokoj_2`
--

INSERT INTO `pokoj_2` (`id`, `do_dd`, `do_mm`, `do_rr`, `z_dd`, `z_mm`, `z_rr`) VALUES (1, '11', '08', '2009', '13', '08', '2009'), (2, '14', '08', '2009', '15', '08', '2009');

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

--
-- Struktura tabeli dla  `pokoj_3`
--

CREATE TABLE `pokoj_3` (
  `id` int(11) NOT NULL auto_increment,
  `do_dd` text,
  `do_mm` text,
  `do_rr` text,
  `z_dd` text,
  `z_mm` text,
  `z_rr` text,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=3;

--
-- Zrzut danych tabeli `pokoj_3`
--

INSERT INTO `pokoj_3` (`id`, `do_dd`, `do_mm`, `do_rr`, `z_dd`, `z_mm`, `z_rr`) VALUES (1, '11', '02', '2009', '13', '02', '2009'), (2, '14', '02', '2009', '15', '02', '2009');


Pętla wyświetla mi:
Kod
Rezerwacja pokoju 1
Pokój 1 zajęty
Rezerwacja pokoju 2
Rezerwacja pokoju 2
Rezerwacja pokoju 3
Pokój 3 zajęty


Chodzi mi o to że jeśli dane istnieją w tabeli obojętnie pod jakim ID to żeby nie wyświetlało mi tyle razy ile jest ID w bazie tylko raz o to co jest w zapytaniu:
Kod
Pokój 1 zajęty
Rezerwacja pokoju 2
Pokój 3 zajęty


--------------------
"This isn't Miami..., This isn't Music! This is power!!"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
spoon-pl
post 18.02.2009, 00:30:34
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 17.02.2009

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


problem zapewne tkwi w warunkach w IF'ie używająć operatorów logicznych && i || pamiętaj że w przypadku && gdy operand 1 jest false to reszta nie jest sprawdzana, odwrotnie jest przy || gdy operand1 jest true reszta jest pomijana...
Go to the top of the page
+Quote Post
f1xer
post 18.02.2009, 00:43:57
Post #3





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


ta twoja baza jest dziwna po co tabela dla każdego pokoju?? nie wystarczy tabela pokoje i tam dane o danym pokoju?? poza tym mysql ma typ daty nie musisz trzymać tego w 3 polach

Ten post edytował f1xer 18.02.2009, 00:44:08


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
drzalek
post 18.02.2009, 02:54:01
Post #4





Grupa: Zarejestrowani
Postów: 170
Pomógł: 18
Dołączył: 6.03.2007

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


Tak jak napisał kolega wyżej, cała baza jest zdaje się do wymiany. Wystarczy Ci jedna tabela, lub dwie np: jedna z pokojami (id, opis, cos_tam) i druga z rezerwacjami (id, data_poczatkowa, data_koncowa) - to oczywiście przykład, wszystko zależy od potrzeb. Mając poprawnie skonstruowaną bazę możesz stawiać odpowiednie warunki w zapytaniu SQL i na wstępie otrzymywać częściowo posortowane dane z bazy, a tak wyciągasz bez potrzeby wszystko z trzech tabel.
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: 26.06.2025 - 07:20