[ -pixi- @ 17.05.2007. 22:08 ] @
Nisam znao dali da ovdje postavim ovo pitanje ili pod MySQL, ali evo ipak sam odlucio ovdje.

Znaci imam neke rezervacije koje medju ostalim sadrze polja od_datuma i do_datuma. Trebam da selektujem sve rezervacije koje su vece od nekog odredjenom datuma, ali mi nesto ne radi kako treba. Evo php kode koju koristim:

Code:

$od_mjeseca = 6;
$od_dana = 26;
$od_godine = 2007;

$od_datuma = mktime(0, 0, 0, $od_mjeseca, $od_dana, $od_godine);
$od_datuma = date("Y n j", $od_datuma);

$query = "SELECT * FROM rezervacije WHERE od_datuma > '$od_datuma';";

$rezultat = mysql_query($query) or die('Error, query failed');


ali kad $query ispisem sa echo onda mi ispise:
Citat:
SELECT * FROM rezervacije WHERE od_datuma > '2007 6 26';


Pokusao sam poslije da ubacim sledeci kod:
Code:
$query = "SELECT * FROM rezervacije WHERE od_datuma > '2007-6-26';";


Ali ni to nije pomoglo, zato molim ako neko zna zasto ovaj zadnji kod nece da radi kad ga koristim iz php a kada ga koristim direktno u MySql console onda radi kako treba

U naprijed vam puno Hvala
[ Miroslav Ćurčić @ 18.05.2007. 09:59 ] @
Jel radi ovako:

Code:
$od_datuma = mktime(0, 0, 0, $od_mjeseca, $od_dana, $od_godine);

$query = "SELECT * FROM rezervacije WHERE od_datuma > $od_datuma";
[ -pixi- @ 18.05.2007. 18:46 ] @
To ranije nisam pokusavao, ali evo sad sam pokusao i ni to neradi tom sintaksom $query mi bude ovakav:

$query = SELECT * FROM rezervacije WHERE od_datuma > '1182808800';

koliko ja znam mktime pravi integer koji je broj sekundi od 1970 ili tako nesto, zato to u sustini nebi trebalo da radi. Ipak hvala na odgovoru. Nadam se mVeliki da imas jos kojiu ideju ili neko drugi ako moze?
[ glavince @ 18.05.2007. 21:09 ] @
A u kom formatu je upisan "od_datuma" u bazi?
[ -pixi- @ 18.05.2007. 21:24 ] @
Pa kao sto rekoh u prvoj poruci kada mi je sledeci:
Code:
$query = "SELECT * FROM rezervacije WHERE od_datuma > '2007-6-26';";
onda radi.. ja ne znam jeli ti mislis na taj format, UTF-8 Unicode ili nesto drugo!?
[ Whois @ 18.05.2007. 23:34 ] @
format zapisa datuma u mysql ti je yyyy-mm-dd hh:mm:ss zbog toga nece da ti radi ni jedan primer.

1. izmeni
$od_datuma = date("Y n j", $od_datuma);

u

$od_datuma = date("Y-m-d", $od_datuma);


2. a ovo: $query = "SELECT * FROM rezervacije WHERE od_datuma > '2007-6-26';";

u ovo:

$query = "SELECT * FROM rezervacije WHERE od_datuma > '2007-06-26';";
[ -pixi- @ 19.05.2007. 00:12 ] @
Format mi se prepravio ali mi jos uvjek dobijam poruku: Error, query failed Format je sad kako treba biti, samo sto rezultat ovoga query:
Code:
$result  = mysql_query($query) or die('Error, query failed');
bude Error, query failed
[ afwt @ 19.05.2007. 09:24 ] @
Onda ti ne valja upit. Ili nema tabele, ili nema polja, ali u svakom slucaju nemoguce je reci na slepo.

Procitaj sta radi funkcija mysql_error() i koristi nju da skontas sta ne valja u upitu. Samo tako ces znati.
[ glavince @ 20.05.2007. 15:57 ] @
Ako ti je format u bazi datetime t.e. yyyy-mm-dd hh:mm:ss

kod bi trebao da bude sledeci:
Code:

$od_datuma = '2007-6-26';
$query = "SELECT * FROM rezervacije WHERE date_format(od_datuma,'%Y-%m-%d') > '".$od_datuma."'";

[ -pixi- @ 20.05.2007. 22:19 ] @
Citat:
Onda ti ne valja upit. Ili nema tabele, ili nema polja, ali u svakom slucaju nemoguce je reci na slepo.

Procitaj sta radi funkcija mysql_error() i koristi nju da skontas sta ne valja u upitu. Samo tako ces znati.


Evo znaci pobjednickog odgovora :D hehe nije skroz ali mi je pomogao da shvatim u cemu je problem. Znaci sa ovom sintaksom:
Code:
SELECT * FROM rezervacije WHERE od_datuma > '2007-06-26';
Dobio sam, koristeci mysql_error(), sledecu poruku: Unknown column 'od_datuma' in 'where clause'
Poslije cega sam prepravio svoj select u:
Code:
SELECT * FROM rezervacije WHERE 'od_datuma' > '$od_datuma';

i odmah je cudo proradilo :). Znaci jedino sto je bilo potrebno je da stavim 'od_datuma' pod navodnike i sve je bilo uredu.
Hvala svima na pomoci i afwt-u na ideji da koristim mysql_error(). Ovakve stvari stvarno covjeka naljute jer je pitanje o dva znaka koja cine svu razliku a koliko sam ja mogao da vidim u primjerima googl-ajuci nisu bile potrebni navodni znaci.

Eto naucise i experti nesto hehe :) Hvala PoZ
[ Miroslav Ćurčić @ 21.05.2007. 11:28 ] @
Mislim da nisi dobio ništa,
trebalo ti je filtriranje liste po vrednosti kolone od_datuma a ti si mu sad zadao da poredi dva konstatna stringa čime dobijaš isti odgovor za sve redove tabele.
Lepo ti piše da kolona (polje) s tim imenom ne postoji, najverovatnije si pogrešio u nekom slovu.
[ -pixi- @ 22.05.2007. 22:04 ] @
mVeliki moze biti da si upravu jer i ako ne dobije mysql error onda mi pokaze da ima vise polja u bazi nego sto bi trebalo da ima. Tako da izgleda jos nisam rjesio svoj problem. Cini mi se da si upravu da poredim char-vrijednost 'od_datuma' sa vrijednosti koju ima odredjeno polje.
Znaci kad maknem navodnike od_datuma onda mi kaze da: Unknown column 'od_datuma' in 'where clause' a polje postoji u biranoj tabeli, tako da ne razumim zasto dobijam ovu poruku. Ponovo molim da dodjete sa nekim predlozima za korigovanje ovog select query-a.

Hvala unaprijed
[ dakipro @ 22.05.2007. 22:51 ] @
Uzmi iz phpMyAdmin-a i Exportuj strukturu te tabele, pa postuj ovde sql naredbu za pravljenje te tabele, jer ovo nije nikakva nauka, vec vrlo verovatno neki trivijalni propust, mozda ne tvojom krivicom. Znaci, daj ovde strukturu baze, pa da vidimo sta se tu sve desava.
[ -pixi- @ 23.05.2007. 19:03 ] @
Evo i strukture pravljena uz pomoc PhpMyAdmin:


Code:

-- 
-- Structure-dump for table `rezervacije`
-- 

CREATE TABLE `rezervacije` (
  `id_rezervacije` varchar(7) NOT NULL,
  `id_sobe` int(11) NOT NULL,
  `lezaja` tinyint(10) NOT NULL,
  `status` tinyint(4) NOT NULL,
  `ime` varchar(50) NOT NULL,
  `prezime` varchar(50) NOT NULL,
  `adresa` varchar(100) NOT NULL,
  `telefon` varchar(20) NOT NULL,
  `email` varchar(50) NOT NULL,
  `komentar` varchar(500) NOT NULL,
  `od_datuma` date NOT NULL,
  `do_datuma` date NOT NULL,
  `registrovno_dana` date NOT NULL,
  PRIMARY KEY  (`id_rezervacije`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[ pajko111 @ 23.05.2007. 19:53 ] @
Sefe probaj ovo

Code:

$od_mjeseca = 6;

$od_dana = 26;
$od_godine = 2007;
$od_datuma = mktime(0, 0, 0, $od_mjeseca, $od_dana, $od_godine);
$od_datuma = date("Y-m-d", $od_datuma);
echo $od_datuma;//Treba da ti ispise 2007-06-26
$query="SELECT * FROM rezervacije WHERE od_datuma > '$od_datuma'";
$result = mysql_query($query) or die('Error, query failed');


Kod mene ovo radi.
U bazi je format polja DATETIME ali trebalo bi da moze i DATE kao sto je kod tebe.
Pretpostavljam da je ceo problem u tome sto si prevideo da imas dva puta ; u queriju.

Nadam se da je bilo od pomoci:)
[ -pixi- @ 23.05.2007. 22:21 ] @

Eto pokusao sam da konvertujem DATE u DATETIME ali ni to nije pomoglo! Ako si pratio temu onda sam gore ranije napisao da mi je query tacan i da radi u consol-i. Ali iz PHP-a mi neradi... :S
[ BorisMB @ 23.05.2007. 23:16 ] @
Citat:
pajko111: Sefe probaj ovo

Code:

$od_mjeseca = 6;

$od_dana = 26;
$od_godine = 2007;
$od_datuma = mktime(0, 0, 0, $od_mjeseca, $od_dana, $od_godine);
$od_datuma = date("Y-m-d", $od_datuma);
echo $od_datuma;//Treba da ti ispise 2007-06-26
$query="SELECT * FROM rezervacije WHERE od_datuma > '$od_datuma'";
$result = mysql_query($query) or die('Error, query failed');


Kod mene ovo radi.
U bazi je format polja DATETIME ali trebalo bi da moze i DATE kao sto je kod tebe.
Pretpostavljam da je ceo problem u tome sto si prevideo da imas dva puta ; u queriju.

Nadam se da je bilo od pomoci:)


Burazeru kako sam razumio ti trebas da dobijes na izlazu koje su sve rezervacije koje su validne znaci koje nisi istekle a ti u upitu koristis kljuc od_datuma
Citat:
-pixi-:
CREATE TABLE `rezervacije` (
`id_rezervacije` varchar(7) NOT NULL,
`id_sobe` int(11) NOT NULL,
`lezaja` tinyint(10) NOT NULL,
`status` tinyint(4) NOT NULL,
`ime` varchar(50) NOT NULL,
`prezime` varchar(50) NOT NULL,
`adresa` varchar(100) NOT NULL,
`telefon` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`komentar` varchar(500) NOT NULL,
`od_datuma` date NOT NULL,
`do_datuma` date NOT NULL,
`registrovno_dana` date NOT NULL,
PRIMARY KEY (`id_rezervacije`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/code]

a ti imas i kolonu do_datuma to znaci da je greska samog upita tj. da si selektovo pogresan kljuc jer normalno je da je svaki da posle dana rezervacije veci od od dana rezervacije znaci ide
Code:
 $query="SELECT * FROM rezervacije WHERE do_datuma > '$datum'";

ja cu samo da ti dam predlog ako dautmu koristis samo za ovo ovde to jeste da ti nije potreban u obliku 10.05.2007 preporucio bih ti da vrijednos datuma stavis u int tip int[8] to je maksimalna duzina godine i da ide u obliku 20070510 svaki naredni dan ima vecu vrijednos od ove. to sam tako koristio ja u jedoj lokalnoj aplikaciji za jednu prodavnicu gdje je admin imao jedu opciju "istekle porudzbine" na koju dobija listu svih isteklih porudzbina koje nisu uplacene i imao je da svakom racunu koji nije naplacen ostampa prijavu i da jos jedno dugme sa koima automacki stampa sve istekle neplacene porudzbine
kod je isao nesto ovako:
$query="SELECT * FROM racuni WHERE rok - '$datuma' < 0 ";
covjek mi se nije ni jednom pozalio za vec 11 mjeseci
to ti je moj predlog a pogledaj jesam li bio upravu za kljuc u tvom upitu