Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Pętla i zamiast 3x dany text to 1x
Forum PHP.pl > Forum > Przedszkole
MnicH.
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
spoon-pl
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...
f1xer
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
drzalek
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.
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.