ugrás a tartalomhoz

Naptárhoz események

chipi · 2007. Szep. 29. (Szo), 19.57
Sziasztok!

Írtam egy naptár sriptet és a következő gondba ütközök vagy már fél napja.

A naptárat úgy terveztem, hogy eseményeket bele tudjak tenni. A események adatbázisban vannam nap alapján elmentve. Ez szerintem eddig okés is, de amikor kikérem és az adott naphoz szeretném tenni.

A naptárnak a napjait egy ciklus segítségével töltöm fel. Ennek a ciklusnak a belső mutatóját használom keresésre. De sajnos egyet sem jelenit meg a naptár. Csak akkor jelenik meg az adott hír ha az adatbázisban 1 van írva a napokra.
 function kiemeles($szam1,$szam2){
 $i = 1;
	while ($i <= $szam1) {
	 	
		if($i == $szam1){
			echo "<strong>".$i."</strong>";
			
		}
		else{
			echo $i;
			
		} 
		$i++;
	} 

}

kiemeles (20,4);
Ez sajnos nem tudom használni adatbázishoz és nem tudom, hogy hogyan írja át, eddig eljutottam, hogy megírtam ezt hozzá, de utána kifutottam az ötletekböl :(

De lekérdeztem a ciklus belső mutatóját pl:

Belső mutató; Adatbázis esemény táblája, név oszlop;
1 3
2 4
3 7

Így azért bizonyolult bennem, hogy azért nem sikerül az összehasonlítás mert a belső számláló nem eggyezik a lekért adatt számával, de hogyan tudom megoldani, hogy müködjön?

Köszi!
 
1

Nem értem a problémát

janoszen · 2007. Szep. 29. (Szo), 20.10
Nem értem a problémát. Mi lenne, ha a feladatkiírást és nem az általad elképzelt megoldásmenetet vázolnád fel? Lehet hogy könnyebb lenne megérteni a dolgot.
2

Még 1x :)

chipi · 2007. Szep. 29. (Szo), 20.19
A gond az az benne, hogy nem tudja összehasonlítani a kikért adatot a ciklus belső számlálójával mert az adatokat mikor kikérem akkor a ciklus szép magához rendeli az kikért adatokat. aza tömbszerűen [1] => "2"; [2] => "6"; És itt akadtam el, nem tudom tudom hozzárendelni az adott naphoz a kikért dátumot, csak az ha a nap 1 akkor megjelenik jól, vagy ha 30 ig el lenne mentve a napok az adatbázisban akkor összehasonlitja szépen.
3

Nem érted

janoszen · 2007. Szep. 29. (Szo), 21.01
Most ugyanazt elmondtad még egyszer. Nem érted a kérdést. Próbáld meg úgy elmagyarázni a feladatot, mintha nem létezne az adatbázisod, nem létezne a naptárad, hanem csak a lényegi feladatot, mint hogy "hozzá akarom rendelni ezt ahhoz".

Te elképzeltél valamit, hogy az úgy kell működjön és megpróbálsz minket rávenni hogy mi is azon a gondolatmeneten induljunk el, ami nem is biztos hogy jó. Főleg hogy nem tudjuk hogy az adatbázisban mi az egy a kettő, stb.
5

Megpróbálom megint

chipi · 2007. Szep. 29. (Szo), 21.28
Egy olyat naptárat akarok amiben egy adott eseményt vissza lehessen nézni. -> Eseménynaptárat akarok
Azaz pl Január 20 án milyen esemény volt.

Megvan a naptár, adatbázis -> év, hó, nap, esemeny, oszloppal.

Nem tudom összekapcsolni ezt a 2 dolgot.

Remélem nem bonyolítottam el ismét :)
7

Naptár

janoszen · 2007. Szep. 30. (V), 10.39
Hmmm.. úgy tűnik az eseménytáblád jó, vagy legalábbis a célnak megfelel. Célszerű lenne a dátumot mondjuk DATE mezőben tárolni, nem külön számokban. Tehát valahogy így:

CREATE TABLE naptar
(
 id INT PRIMARY KEY AUTO_INCREMENT,
 datum DATE NOT NULL,
 esemeny TEXT
 ...további mezők...
);
Namost, ha valaki mondjuk felüt egy napot, akkor azt megkapod dátumformában. Az, hogy ez a dátum megfelelő legyen, a Te dolgod a PHP-ból (mondjuk megkapod GET paraméterként).

Ezek után egy SQL lekérést kell intézned, mondjuk így:
SELECT * FROM naptar WHERE datum='2007-09-30'
Ezek után PHP-ből már csak végig kell szaladnod az eredmény tömbön. (Lásd a választásod szerinti adatbázis kezelőfüggvényei a kézikönyvben.
4

Mi a cél != hogyan működjön

s_volenszki · 2007. Szep. 29. (Szo), 21.10
Szia!

Először is szeretném leszögezni, hogy jó szándékú a hozzászólásom! :)

Én azt szoktam mondani, hogy kétféle ügyfél létezik, egyszerű és bonyolult. Úgy ismered fel, melyik melyik, hogy az egyszerű azt megmondja mi a célja egy alkalmazással, a bonyolult el akarja magyarázni, hogyan működjön! Te, most, nekünk "ügyfél" vagy, és ha azt hajtogatod újra és újra, hogy mit mihez akarsz hozzárendelni, akkor te az ügyfelek utóbbi kategóriájába tartozol!

Azt mond el, mi a célod!

s_volenszki
6

A kiemeles függvény nem néz ki jónak

Kiskübi · 2007. Szep. 30. (V), 02.06
Szia!
A ,,kiemeles'' függvényed kiír valahány számot. Tehát jobb lenne úgy elnevezni, hogy ,,napok_kiirasa'', vagy ilyesmi (nem tudom, mit akarsz vele kiírni).
Nem tudjuk, mi az a ,,szam1'' és ,,szam2'', ezeket is jobb lenne úgy elnevezni, hogy értsük.

Azt látom, hogy a függvény kiír szam1 darab számot, és az utolsót kiemeli. Szerintem az ,,if($i == $szam1)'' feltételt ,,if($i == $szam2)''-nek akartad volna írni. De ettől még nem értjük, hogy mit akartál volna.

Ezt a feladatot többféleképpen lehet megoldani, pl. így:
Van egy táblád adatbázisban, pl. ,,esemeny'' néven. Mezők:
- id
- nev
- leiras
- datum
Algoritmus:
- egy hónapnyi eseményt betöltesz tömbbe (SELECT; WHERE-rel tudsz dátumra szűrni)
- naptár megjelenítése: 2 egymásba ágyazott ciklus. Külső végigmegy a hónap napjain, belső pedig a tömbön; ha a külső és belső ciklusváltozó által jelölt nap egyezik, akkor kiírod a napot kiemeléssel, linkkel, meg minden... ha nem, akkor sima nap kiírása a külső cikluváltozó alapján.

Így gondoltad? Mert jó lenne rájönni, hogy az _elképzelés_ rossz, vagy csak a _kódod_.
8

Pontossan

chipi · 2007. Szep. 30. (V), 16.38
ha a külső és belső ciklusváltozó által jelölt nap egyezik, akkor kiírod a napot kiemeléssel, linkkel, meg minden.


Igen, így akarom.
Hasonlóan magyaráztam én is, csak máskép sokkal :) Mert én a probléma gondolat menetét mondtam el.

ha az adatbázisban szerepel a 20 a és a naptár ciklusa 20 á hoz ér akkor szépen kiemeli nekem. Ha nem akkor csak szépen kiemelés nálkül kiíródik a szám.
9

Jaaa

janoszen · 2007. Szep. 30. (V), 16.57
Ja hogy Te ezt szeretnéd! A fenti példámra gondolva, valami ilyesmi lesz a megoldás:

SELECT DISTINCT(datum) FROM naptar
Ez visszaadja a napokat, amelyeken van esemény. Namost csak ezen kell végiglépni és a közbenső helyeket kitölteni. :)
11

Megoldottam!

chipi · 2007. Okt. 6. (Szo), 14.01
Hát végre megoldottam, kiszenvedtem magamból a megoldást még is :D
Köszönöm a segítséget mindenkinek!
A megoldás ez lett:
function ido_ell($ev, $ho, $nap, $ido){
$sql = "SELECT COUNT(id) as db FROM naptar WHERE ev='".$ev."' and ho='".$ho."' and nap='".$nap."' and ido = '".$ido."'";
$db = mysql_fetch_assoc(mysql_query($sql));
return $db["db"];
}
12

MySQL

janoszen · 2007. Okt. 6. (Szo), 14.29
Szerintem, egyrészt érdemes lenne a MySQL saját dátumkezelésének utánanézni, nem kell újra feltalálni a kereket, másrészt ki kellene escape-lni a változókat amiket beviszel.
10

Tervezd meg előbb az algoritmust

Kiskübi · 2007. Szep. 30. (V), 18.02
Nem látok Nálad két ciklust.
ha az adatbázisban szerepel a 20 a és a naptár ciklusa 20 á hoz ér akkor szépen kiemeli nekem.

Ne úgy indulj neki, hogy 1.) mik vannak az adatbázisban, 2.) mit hogyan írjunk ki; hanem fordítva:
1. Külső ciklus: ez megy végig a hónap napjain
2. Ezen belül egy másik: ez megy végig az adatbázisból egy hónapra lekérdezett eseményeken.
13

Események elrejtése

chipi · 2007. Okt. 7. (V), 20.07
Sziasztok!

Ismét egy provléma ütköztem, eddig oké minden, de elszeretném rejteni vagy is inkább más tartalmat jeleníttetek meg a naptáramban, az adatbázisból kikérem az adatokat és ha van találat akkor x idővel elöbbre elrejti a tartlmat. De az összehasonlítás nem megy valamiért.


	function vissza_nap(){
	return (date('Y-n-j, H:i:s',(time()+5*24*60*60)));
	}

		$dat_tomb = explode(",",vissza_nap());
 			$datum = $dat_tomb[0];
 			$ido = $dat_tomb[1];
		
	for($l=1; $l < $ido_num+1; $l=$l+1){
	
		$hasonlitas	=	$ev.'-'.$ho.'-'.$nap.' '.$idopontok[$l]["ido"];

			if($hasonlitas < $datum.$ido){
			echo 'Hamarossan';
			}else{
// itt a dátum többi része
}
}
14

MySQL saját dátumkezelése

janoszen · 2007. Okt. 7. (V), 21.08
Ezért mondtam, hogy használd a MySQL saját dátumkezelését, de nem hallgatsz. Most kb megvalósítottad azt, amit a MySQL és a PHP kapásból tud.
15

Na de még is megoldható máshogyan :)

chipi · 2007. Okt. 7. (V), 23.15
strtotime(); függvényel sikerült megoldani a problémát. :)
16

Valóban...

janoszen · 2007. Okt. 8. (H), 09.18
Igaz, de ha alapból a PHP dátumkezelését használtad volna. nem kellett volna fölös köröket futni.