Forum » Programiranje » [SQL in PHP] Preprost PHP koledarček, ki je povezan z MySQL bazo
[SQL in PHP] Preprost PHP koledarček, ki je povezan z MySQL bazo
R33D3M33R ::
V želji, da se naučim MySQL sem si zadal nalogo sprogramirati preprost koledarček, ki bi imel evente shranjene v SQL bazi (bi jih zmetal v tekstovno datoteko in si prihranil muke, ampak SQL se moram enostavno naučiti). Dodajat vnose znam brez težav. Težave se pojavijo pri zajemanju podatkov. In sicer sem si zamislil takole:
Imam tabelo s polji:
ID | Dogodek oz Opis | Datum | Ponavljaj
Datum je tipa DATE in ima vnose tipa LLLL.MM.DD
Ponavljaj ima vrednosti 1 ali 0 in sicer se dogodek s ponavljaj = 1 zgodi vsako leto.
Iz tabele bi torej moral izbrati vse vnose za mesec, ki ga koledar prikazuje. Pa mi rata izbrati enega, drugih ne. Nekaj sem se mučil s AND in OR operatorji pa mi ne rata. Torej kako bi nastavil query, da bi mi izbral vsa polja, ki ustrezajo pogojem:
mesec je trenutni mesec
če je ponavljaj nastavljen na 1 leto ni važno, v nasprotnem primeru je leto trenutno leto
Recimo tole sem sestavil za začetek:
mi vrne:
Kar pa ni OK, ker je v tabeli še en vnos s septemberskim datumom.
Ni mi tudi jasno v čem je fora ključev 0,1,2 in 3, ker so duplicirani.
Razmišljal sem tudi, da bi namesto * napisal datum AND dogodek ,bi bilo verjetno bolje pa ne potegne. Hmnja.
Hvala za pomoč!
Imam tabelo s polji:
ID | Dogodek oz Opis | Datum | Ponavljaj
Datum je tipa DATE in ima vnose tipa LLLL.MM.DD
Ponavljaj ima vrednosti 1 ali 0 in sicer se dogodek s ponavljaj = 1 zgodi vsako leto.
Iz tabele bi torej moral izbrati vse vnose za mesec, ki ga koledar prikazuje. Pa mi rata izbrati enega, drugih ne. Nekaj sem se mučil s AND in OR operatorji pa mi ne rata. Torej kako bi nastavil query, da bi mi izbral vsa polja, ki ustrezajo pogojem:
mesec je trenutni mesec
če je ponavljaj nastavljen na 1 leto ni važno, v nasprotnem primeru je leto trenutno leto
Recimo tole sem sestavil za začetek:
$sql = "SELECT * FROM koledarcek WHERE datum LIKE '____-$mesec-__'"; $result = mysql_query($sql, $db); $vrstica = mysql_fetch_array($result); print_r($vrstica);
mi vrne:
Array
(
[0] => 1
[id] => 1
[1] => 0000-09-23
[datum] => 0000-09-23
[2] => Začetek jeseni
[dogodek] => Začetek jeseni
[3] => 1
[ponavljaj] => 1
)
Kar pa ni OK, ker je v tabeli še en vnos s septemberskim datumom.
Ni mi tudi jasno v čem je fora ključev 0,1,2 in 3, ker so duplicirani.
Razmišljal sem tudi, da bi namesto * napisal datum AND dogodek ,bi bilo verjetno bolje pa ne potegne. Hmnja.
Hvala za pomoč!
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
overlord_tm ::
SELECT datum, dogodek FROM koledarcek WHERE datum LIKE '____-$mesec-__
Namesto AND uporabiš ,
Fora klučev je pa ker mysql_fetch_array deluje kot kombinacija mysq_fetch_row (ki ti vrne indexe 1, 2, ..) in mysql_fetch_assoc (bol uporabno, namesto številk so indeki imena stolpcev v tabeli)
Namesto AND uporabiš ,
Fora klučev je pa ker mysql_fetch_array deluje kot kombinacija mysq_fetch_row (ki ti vrne indexe 1, 2, ..) in mysql_fetch_assoc (bol uporabno, namesto številk so indeki imena stolpcev v tabeli)
Ziga Dolhar ::
Namesto "Like" uporabi lepo MySQL Date funkcije. Točno ime poglej v dokumentaciji, WHERE stavek pa se bo glasil nekako takole: WHERE MONTH(datum) = $mesec.
https://dolhar.si/
arjan_t ::
SELECT * FROM koledar WHERE DATE_FORMAT(datum, '%c.%Y') = '9.2007' OR DATE_FORMAT(datum, '%c') = '9' AND ponavljaj = 1
R33D3M33R ::
U hvala za odgovore. Bom se poigral s temi predlogi pa sporočim kako mi gre.
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
R33D3M33R ::
arjan_t: sem uporabil kar tvojo kodo in res dela to kar bi pričakoval, vendar sem še vedno dobival le en rezultat, zato sem se besno vrgel v branje dokumentacije in opazil, da mysql_fetch_array() ne dela tisto kar sem mislil. Namreč ne meče vse rezultate v array, ampak vrže le en rezultat v array in premakne kazalec naprej.
Popravljena koda zgleda torej tako:
in izvrže le rezultat:
Torej sem se znebil odvečne krame
Popravljena koda zgleda torej tako:
$sql = "SELECT * FROM koledarcek WHERE DATE_FORMAT(datum, '%c.%Y') = '9.2007' OR DATE_FORMAT(datum, '%c') = '9' AND ponavljaj = 1"; $result = mysql_query($sql, $db); while ($vrstica = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("datum: %s dogodek: %s", $vrstica["datum"], $vrstica["dogodek"]); }
in izvrže le rezultat:
datum: 0000-09-23 dogodek: Začetek jeseni
datum: 2001-09-11 dogodek: Terroristični napad
Torej sem se znebil odvečne krame
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
R33D3M33R ::
Torej učim se in učim in mi kar gre :)
Zdaj me zanima kateri datatype bi bilo pametno uporabiti za polje dogodek, če bo notri verjetno tudi HTML koda?
Aja, overlord_tm: bom kar mysql_fetch_array($result, MYSQL_ASSOC) uporabil, ker lahko na hitro spremenim, če potrebujem indekse. Ima pa PHP toliko dupliciranih funkcij, da boli glava.
Zdaj me zanima kateri datatype bi bilo pametno uporabiti za polje dogodek, če bo notri verjetno tudi HTML koda?
Aja, overlord_tm: bom kar mysql_fetch_array($result, MYSQL_ASSOC) uporabil, ker lahko na hitro spremenim, če potrebujem indekse. Ima pa PHP toliko dupliciranih funkcij, da boli glava.
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Zgodovina sprememb…
- spremenil: R33D3M33R ()
R33D3M33R ::
Ja, varchar vs. text debate sem že gledal. A se močno pozna hitrost med text in varchar?
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | HTML in SQL pomoč (strani: 1 2 )Oddelek: Programiranje | 7743 (6621) | def0r |
» | PHP in JS problem :(Oddelek: Programiranje | 1747 (1555) | l0g1t3ch |
» | [PHP]rezultat SQL querija -> dvodimenzionalen ARRAY ??Oddelek: Izdelava spletišč | 1228 (1186) | Ziga Dolhar |
» | Kaj je narobe tu...(php)Oddelek: Programiranje | 1205 (1103) | teac |
» | MySQL & PHP napaka..Oddelek: Programiranje | 1751 (1566) | lordgreg |