Autor | Zpráva | ||
---|---|---|---|
mercy Profil |
#1 · Zasláno: 3. 4. 2007, 16:38:34
Jsem naprostý začátečník v php a s pomocí kamaráda jsem udělal jednoduchý uživatelský systém (resp. kamarád mi ho udělal). Potřeboval bych vytvořit skript, který by mi ukládal jména přihlášených návštěvníků z proměnné $_SESSION[USER] do textového souboru, a z tohoto souboru aby pak šel vypsat seznam účastníků online. Přičemž chci, aby se mi vypsali jen uživatelé přihlášení v průběhu posledních 5 minut a ti staří by se z toho textového souboru smazali. Dokáže mi to někdo, pls, napsat. Díky. :-)
|
||
Alphard Profil |
#2 · Zasláno: 3. 4. 2007, 18:27:14
nemohlo by se to ukádat do databáze? bylo by to jednodušší
|
||
mercy Profil |
#3 · Zasláno: 3. 4. 2007, 18:28:12 · Upravil/a: mercy
to by taky samozřejmě šlo, databázi sice taky mám, ale s tou už pracovat vůbec neumím..
|
||
Alphard Profil |
#4 · Zasláno: 3. 4. 2007, 19:51:01
ale s tou už pracovat vůbec neumím
:-) do souboru se to bude snadno ukládat, ale komlikovanější bude: Přičemž chci, aby se mi vypsali jen uživatelé přihlášení v průběhu posledních 5 minut a ti staří by se z toho textového souboru smazali. v databázi vložíš pomocí insert: insert into tabulka (user, time) values ('$_SESSION[USER]', $time) http://www.linuxsoft.cz/article.php?id_article=809 vybereš pomocí select: select user from tabulka where time > ... http://www.linuxsoft.cz/article.php?id_article=818 a smazeš pomoci delete http://www.linuxsoft.cz/article.php?id_article=814 |
||
mercy Profil |
#5 · Zasláno: 4. 4. 2007, 16:25:43
Tak jsem se s tím zkusil poprat (zkompiloval jsem do toho ještě pár dalších věcí odjinud) a výsledek vypadá takto:
<? $uzivatel=$_SESSION[USER]; do { @$spojeni = MySQL_Connect("localhost"); if (!$spojeni): echo "Chyba databáze!"; break; endif; MySQL_Select_DB("databaze"); INSERT INTO online (user, time) values ($uzivatel, $time); SELECT user FROM online WHERE time > 300; DELETE FROM online WHERE time > 300; } while (false); ?> Jenže když si soubor s tímto skriptem nechám zobrazit, tak se objeví jen prázdná stránka. Kde dělám chybu? |
||
tiso Profil |
#6 · Zasláno: 4. 4. 2007, 16:38:04
mercy
au... Rýchlo si zavolaj toho kamatráta na pomoc, sám sa do toho PHP nepúšťaj! |
||
mercy Profil |
#7 · Zasláno: 5. 4. 2007, 09:05:05
díky za pomoc :-/
|
||
tiso Profil |
#8 · Zasláno: 5. 4. 2007, 09:49:47
mercy - to bola dobre mienená rada, jedna z tých: "zápalky nepatria deťom do rúk". Keď budeš starší, pochopíš...
|
||
mercy Profil |
#9 · Zasláno: 5. 4. 2007, 09:52:30 · Upravil/a: mercy
very funny indeed.. :-/
btw, kolik je ti, chlapče? |
||
tiso Profil |
#10 · Zasláno: 5. 4. 2007, 10:07:41
mercy 20-30
|
||
mercy Profil |
#11 · Zasláno: 5. 4. 2007, 10:27:46
chováš se jak 15-ti letý fracek..
|
||
Alphard Profil |
#12 · Zasláno: 5. 4. 2007, 11:04:33
mercy
tiso možná neměl tak špatný nápad :-) bude potřeba více studovat mysql_connect - jestli máš k databázi přihlašovací jméno a heslo, musí zde být uvedeno mysql_connect, mysql_select_db - nemá být v cyklu, stačí provést jednou INSERT INTO online (user, time) values ($uzivatel, $time); tabulku musíš samozřejmě vytvořit, $time se musí naplnit a celý dotaz bude v mysql_query('insert ...') WHERE time > 300 tato podmínka závisí na zvolení datového typu sloupce time, jestli bude int, tak bude time > (now()-300) select se bude zpracovávat pomocí něčeho jako mysql_fetch_array DELETE FROM online WHERE time > 300 zde musí být podmínka inverzní k selectu (po určitou hranici mažeš, dále zobrazuješ) |
||
mercy Profil |
#13 · Zasláno: 5. 4. 2007, 11:09:19
díky :-) to s tím mysql_query jsem už taky zjistil.. zkusím si s tím zase pohrát
|
||
Alphard Profil |
#14 · Zasláno: 5. 4. 2007, 11:09:46
teď jsem si všiml, já jsem uvedl odklazy přímo na MySQL, obsluha MySQL z PHP je dobře popsaná v jiném seriálu na linuxsoft, díly o DB začíbají zde: http://www.linuxsoft.cz/article.php?id_article=328
|
||
tiso Profil |
#15 · Zasláno: 5. 4. 2007, 13:25:08
mercy chováš se jak 15-ti letý fracek..
Vážne? Ak zvládaš hodnotenie cudzieho správania, skús sa najskôr pozreť na to svoje. Rovno si prečítaj úvodnú stránku na http://tiso.wz.cz |
||
mercy Profil |
#16 · Zasláno: 5. 4. 2007, 15:26:50
tiso: potřebuješ si dodat sebevědomí na začátečníkovi? posluž si, ubožáku..
|
||
mercy Profil |
#17 · Zasláno: 5. 4. 2007, 16:13:02
Udělal jsem to takhle, ale nic se mi do databáze nezapíše.. Přitom jsem přihlašovací údaje určitě napsal správně.
<? $uzivatel=$_SESSION[USER]; $time=time(); mysql_connect("localhost", "uziv", "heslo") or die("Nelze se připojit k MySQL: " . mysql_error()); mysql_select_db("databaze") or die("Nelze vybrat databázi: ". mysql_error()); mysql_query('INSERT INTO online (user, time) values ('$uzivatel', '$time')'); $vysledek=mysql_query('SELECT user FROM online WHERE time > (now()-300)'); while ($zaznam=mysql_fetch_array($vysledek)): echo $zaznam["user"].", "; endwhile; mysql_query('DELETE FROM online WHERE time > 300'); ?> Stránka se mi tentokrát už zobrazí normálně.. |
||
djlj Profil |
#18 · Zasláno: 5. 4. 2007, 16:15:22
mercy
Máš myslím blbě uvozovky. Já bych to napsal takto: mysql_query("INSERT INTO online (user, time) values ('".$uzivatel."', '".time()."')"); Případně si vypiš mysql_error. |
||
mercy Profil |
#19 · Zasláno: 5. 4. 2007, 16:27:31
djlj: Uvozovkami to asi nebude.. Ani žádná chyba se mi nevypsala.
|
||
Alphard Profil |
#20 · Zasláno: 5. 4. 2007, 16:45:18
Uvozovkami to asi nebude.
v řetězcích, které jsou v apostrofech, se nenahrazují proměnné mysql_query("INSERT INTO online (user, time) values ('$uzivatel', '$time')"); // jak již psal djlj $vysledek=mysql_query('SELECT user FROM online WHERE time > '.(time()-300)); // rada s now() nebyla pro tento případ nejšťastnější mysql_query('DELETE FROM online WHERE time < '.(time()-300)); |
||
mercy Profil |
#21 · Zasláno: 5. 4. 2007, 16:50:47
Fajn, teď už mi to jede.. Díky :-)
|
||
mercy Profil |
#22 · Zasláno: 5. 4. 2007, 17:02:29
Ještě bych měl jeden dotaz: Ta stránka je trochu víc komplikovaná a při klepnutí na jakýkoli odkaz se mi v "seznamu přihlášených" vypíše další jméno uživatele, takže jich tam mám třeba několik stejných za sebou.
Zkusil jsem tohle, ale nepomohlo to: mysql_query('DELETE FROM online WHERE user = ".$uzivatel."'); |
||
Figy Profil |
#23 · Zasláno: 5. 4. 2007, 22:06:40
Zdar...
...mam jeden dotaz udelal sem si v php skript na registrovani a prihlasovani lidi na stranku a mam dotaz, co se stane kdyz se bude chtit zaregistrovat nekdo dalsi a nvoli si stejny login jako nekdo jiz zaregistrovany ??? ...cim mam to- muto problemu predejit ??? ...predem dekuji na odpoved |
||
Alphard Profil |
#24 · Zasláno: 5. 4. 2007, 22:26:29 · Upravil/a: Alphard
mercy
Figy před vložením kontrolujte existenci vkládaného $result = mysql_query ("select count(*) as pocet from online where user = $uzivatel"); list ($pocet) = mysql_fetch_row ($result); if ($pocet > 0) // již existuje |
||
tiso Profil |
#25 · Zasláno: 5. 4. 2007, 22:35:18
mercy - nepotrebujem, ani to nerobím, z nás dvoch si jediný kto to tak chápe. Ja som Ťa len varoval, zariaď sa ako chceš...
|
||
Figy Profil |
#26 · Zasláno: 5. 4. 2007, 23:02:40
mam jaksi problem...
...sem totiz uplnej zacatecnik s php a moc to nechapu snazil sem se jet podle kurzu na internetu, ale nejde me to... proto se ptam... ...mohli by ste mi teda nekdo prosím poradit jak: 1) Jaky je obecny prikaz pro to, aby se mi data z formulare ulozily do databaze ? 2)Potreboval bych trochu vysvetlit co znamena to cos prave napsal... ...znam par prikazu v php a dokazu udelat skript, ale neumim vubec pracovat s databazi atd.... takze bych vam byl moc vdecny kdyby ste mi pomohli prekonat moje tezky zacatky... ...predem děkují |
||
Figy Profil |
#27 · Zasláno: 5. 4. 2007, 23:18:50
283 259 877 - moje icq
...pokud je nekdo te lasky, muzete mi pomoct... mockrát děkují |
||
djlj Profil |
#28 · Zasláno: 5. 4. 2007, 23:47:20
co se stane kdyz se bude chtit zaregistrovat nekdo dalsi
a nvoli si stejny login jako nekdo jiz zaregistrovany Nastav v databázi nick jako UNIQUE a pak jen při registraci odchytávej chybu. |
||
Anonymní Profil * |
#29 · Zasláno: 6. 4. 2007, 00:33:58
[b][b][b][b][b][b][b][b][b]nechapu to :'([/b][/b][/b][/b][/b][/b][/b][/b][/b]
|
||
djlj Profil |
#30 · Zasláno: 6. 4. 2007, 00:36:50
Anonymní
Tak to je smůla. Prvně se však zkus uklidnit. Pravděpodobně máš tik v pravé ruce, která neustále kliká na tlačítko ztučnění textu. |
||
Téma pokračuje na další straně.
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0