« 1 2 »
Autor Zpráva
mercy
Profil
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
nemohlo by se to ukádat do databáze? bylo by to jednodušší
mercy
Profil
to by taky samozřejmě šlo, databázi sice taky mám, ale s tou už pracovat vůbec neumím..
Alphard
Profil
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
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
mercy
au... Rýchlo si zavolaj toho kamatráta na pomoc, sám sa do toho PHP nepúšťaj!
mercy
Profil
díky za pomoc :-/
tiso
Profil
mercy - to bola dobre mienená rada, jedna z tých: "zápalky nepatria deťom do rúk". Keď budeš starší, pochopíš...
mercy
Profil
very funny indeed.. :-/
btw, kolik je ti, chlapče?
tiso
Profil
mercy 20-30
mercy
Profil
chováš se jak 15-ti letý fracek..
Alphard
Profil
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
díky :-) to s tím mysql_query jsem už taky zjistil.. zkusím si s tím zase pohrát
Alphard
Profil
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
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
tiso: potřebuješ si dodat sebevědomí na začátečníkovi? posluž si, ubožáku..
mercy
Profil
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"].",&nbsp;";
endwhile;
mysql_query('DELETE FROM online WHERE time > 300');

?>

Stránka se mi tentokrát už zobrazí normálně..
djlj
Profil
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
djlj: Uvozovkami to asi nebude.. Ani žádná chyba se mi nevypsala.
Alphard
Profil
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
Fajn, teď už mi to jede.. Díky :-)
mercy
Profil
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
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
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
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
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
283 259 877 - moje icq

...pokud je nekdo te lasky, muzete mi pomoct... mockrát děkují
djlj
Profil
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 *
[b][b][b][b][b][b][b][b][b]nechapu to :'([/b][/b][/b][/b][/b][/b][/b][/b][/b]
djlj
Profil
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.
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.