» »

[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:

$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 ;)
:(){ :|:& };:

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)

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 ;)
:(){ :|:& };:

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:
$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 :D
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

overlord_tm ::

Uporabi mysql_fetch_assoc ;)

BV imeti vse duplirano v arrayu ;)

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. :\
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

Zgodovina sprememb…

arjan_t ::

ja varchar (do 255 znakov) ali text (če je res dosti texta)

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 ;)
:(){ :|:& };:


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

HTML in SQL pomoč (strani: 1 2 )

Oddelek: Programiranje
517069 (5947) def0r
»

PHP in JS problem :(

Oddelek: Programiranje
81629 (1437) l0g1t3ch
»

[PHP]rezultat SQL querija -> dvodimenzionalen ARRAY ??

Oddelek: Izdelava spletišč
81146 (1104) Ziga Dolhar
»

Kaj je narobe tu...(php)

Oddelek: Programiranje
51126 (1024) teac
»

MySQL & PHP napaka..

Oddelek: Programiranje
211643 (1458) lordgreg

Več podobnih tem