Uoverskuelig forespørgelse (lidt php indover - men primært MySQL)
Jeg har lavet en større MySQL forespørgelse (end hvad jeg er vant til)...Der er desværre bare en fejl. Den siger min query ikke er korrekt, men nu har jeg kigget på den i en lille 1 time, søgt på nettet etc.
Nu tænkte jeg jer eksperter herinde skulle have en chance for at tjene nogle nemme point :)
Jeg ved godt jeg har skrevet emnet under MySQL, men alligevel vil jeg smide min forespørgelse ind som jeg har skrevet den i php. Håber i kan klare og se på det.
Jeg ønsker at finde alle "kioske" i et givent postnumme og derefter vil jeg tjekke om "kiosken" er åben. Hvis mode=all skal alle lukkede kiosker stadig listes, men hvis den er lukket skal det kunne mærkes.
Herefter er det tanken at alle funde "kiosker" skal udskrives...
Her er det i php:
<?php
include("includes/config.php");
$query = "SELECT open_day, COUNT(kiosk_id) AS intKiosks, kiosk_name, kiosk_id, zip_city, kiosk_address FROM jk_kiosks AS k ";
$query .= "JOIN jk_zipcodes AS z ON z.zip_zip=k.kiosk_zip ";
if($_GET['mode']!='all') {
$query .= "JOIN jk_openings AS o ON o.kiosk_id=k.kiosk_id AND ";
$query .= "o.open_day = ".date("N")." AND ";
$query .= "o.open_from <= ".date("dm")." AND ";
$query .= "o.open_to >= ".date("dm")." ";
} else {
$query .= "LEFT JOIN jk_openings AS o ON o.kiosk_id=k.kiosk_id AND ";
$query .= "o.open_day = ".date("N")." AND ";
$query .= "o.open_from <= ".date("dm")." AND ";
$query .= "o.open_to >= ".date("dm")." ";
}
$query .= "WHERE kiosk_zip = ".$_GET['zip']." ";
$query .= "GROUP BY kiosk_name, kiosk_id, zip_city";
$kiosks_query = mysql_query($query);
if($kiosks_query['intKiosks']>=1) {
// Et eller flere resultater ... Udskrives her - burde virke når query er korrekt
} else {
// Ingen "kioske" fundet ...
}
?>
Forespørgelsen hevet ud (mode er IKKE defineret):
"SELECT open_day, COUNT(kiosk_id) AS intKiosks, kiosk_name, kiosk_id, zip_city, kiosk_address FROM jk_kiosks AS k JOIN jk_zipcodes AS z ON z.zip_zip=k.kiosk_zip JOIN jk_openings AS o ON o.kiosk_id=k.kiosk_id AND o.open_day = ".date("N")." AND o.open_from <= ".date("dm")." AND o.open_to >= ".date("dm")." WHERE kiosk_zip = ".$_GET['zip']." GROUP BY kiosk_name, kiosk_id, zip_city"
date("dm") burde udskrive den aktuelle tid ... fx kl 12 bliver udskrevet 1200 og kl halv 2 bliver udskrevet 0130.
date("N") burde udskrive den aktuelle dag som et tal... Fx er mandag 1 og søndag 7.
$_GET['zip'] burde være aktuel zipcode.
Tabelstruktur: (den ryger fint ind i min database - men er der nogle fejl at spotte må de også gerne skrives):
CREATE TABLE `jk_kiosks` (
`kiosk_id` int(11) NOT NULL auto_increment,
`kiosk_username` varchar(20) NOT NULL default '',
`kiosk_password` varchar(32) NOT NULL default '',
`kiosk_name` varchar(80) NOT NULL default '',
`kiosk_url_name` varchar(80) NOT NULL default '',
`kiosk_address` varchar(80) NOT NULL default '',
`kiosk_zip` int(4) NOT NULL default '0',
`kiosk_phone` int(8) NOT NULL default '0',
`kiosk_mail` varchar(100) NOT NULL default '',
`kiosk_text` text NOT NULL,
`kiosk_active` varchar(32) NOT NULL default '',
`kiosk_jk_fee` int(2) NOT NULL default '0',
`kiosk_type` int(1) NOT NULL default '0',
`kiosk_timestamp` int(16) NOT NULL default '0',
PRIMARY KEY (`kiosk_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
INSERT INTO `jk_kiosks` (`kiosk_id`, `kiosk_username`, `kiosk_password`, `kiosk_name`, `kiosk_url_name`, `kiosk_address`, `kiosk_zip`, `kiosk_phone`, `kiosk_mail`, `kiosk_text`, `kiosk_active`, `kiosk_jk_fee`, `kiosk_type`) VALUES
(1, 'marks', 'marks123', 'Marks Diner', 'Marks_Diner', 'Min gade 1', '2750', '12345678', 'mail@just-kiosk.dk', 'Marks Diner er PERFEKT !', 2, 5, 1),
(2, 'znuggles', 'znuggles123', 'Znuggles Diner', 'Znuggles_Diner', 'Min gade 2', '2765', '12345678', 'mail@just-kiosk.dk', 'Znuggles Diner er PERFEKT !', 2, 5, 2);
CREATE TABLE `jk_openings` (
`open_id` int(11) NOT NULL auto_increment,
`open_day` int(1) NOT NULL default '0',
`open_from` varchar(4) NOT NULL default '',
`open_to` varchar(4) NOT NULL default '',
`kiosk_id` int(11) NOT NULL default '0',
PRIMARY KEY (`open_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
INSERT INTO `jk_openings` (`open_id`, `open_day`, `open_from`, `open_to`, `kiosk_id`) VALUES
(1, 1, 0800, 2000, 1),
(2, 2, 0800, 2200, 1),
(3, 3, 0800, 2000, 1),
(4, 4, 0800, 2200, 1),
(5, 5, 0800, 2000, 1),
(6, 6, 0800, 2200, 1),
(7, 7, 0800, 2000, 1),
(8, 1, 0800, 2001, 2),
(9, 2, 0800, 2002, 2),
(10, 3, 0800, 2003, 2),
(11, 4, 0800, 2004, 2),
(12, 5, 0800, 2005, 2),
(13, 6, 0800, 2006, 2),
(14, 7, 0000, 0000, 2);
CREATE TABLE `jk_zipcodes` (
`zip_id` int(11) NOT NULL auto_increment,
`zip_zip` int(4) NOT NULL default '0',
`zip_city` varchar(50) NOT NULL default '',
PRIMARY KEY (`zip_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
INSERT INTO `jk_zipcodes` (`zip_id`, `zip_zip`, `zip_city`) VALUES
(1, 800, 'Høje Taastrup'),
(2, 877, 'Valby'),
(3, 900, 'København C'),
(4, 1000, 'København K'),
......... osv ...
Håber ikke i dræber mig verbalt hvis jeg har gjort noget forkert. Hvis jeg har glemt nogle info er det heller ikke med vilje for at spilde jeres tid...
Ville gerne give mere end 200 point, for hvis jeg får 2 rigtig gode svar der løser 2 forskellige problemer ville jeg gerne havet kunne give lidt mere, men i må nøjes med hvad jeg kan give jer...
(Hvordan laver man en flot "kod-boks" herinde? bare et lille tillægs spg.)