Mam taky problem. Potrebujem spravit to, ze ak niekto klikne na niejaky odkaz tak si program zapamata cislo ake bolo v subore bezi.dat . To cislo sa ulozi do suboru stoj.dat a ak bude stoj.dat + 20 = bezi.dat tak sa nieco stane. Neviem ci ste ma pochopili co chcem ale dufam ze ano.
A este ze do suboru bezi.dat sa bude ripocitavat kazdu minutu 1.
Dakujem
Leopik
Fórum › PHP
Stoj.dat + 20 = bezi.dat
Ono by to teoreticky šlo pomoci cronu každou minutu zvyšovat (v crontab v Linuxu pokud se nepletu jde nastavit pro každou minutu) ale nevím zda ti to nějaký server povolí.. pokud bys to teda neměl celé u sebe na počítači (serveru).
mno k tomu čtení a zápisu z / do souboru: fopen, fscanf a fwrire - tam si to číslo přečteš, uložíš atd....
Možná být tebou bych pracoval s databází... tam bys to měl mnohem jednodušší...
Rozhodně se mi to zdá nějaké divné...
No ja by som aj mozno pracoval s databazou ale to som este nikdy neskusal...ako by to bolo s tatabazou?
ja bych se spis zeptal co chces udelat....
Ano, jak říká hrach. Napiš nám co chceš udělat. A třeba společně dojdeme na to jak na to...
Jinak o tom jak se k databázi připojit, jak se dotazovat a jak zpracovávat odpovědi je na netu napsáno hodně.
Například hledej zde: http://programujte.com/index.php?rubrika=296-webdesign&sekce=89-php&kategorie=174-php-a-mysql
nebo na google např http://www.google.cz/search?q=php+%2B+mysql
No bude to takto:
Registrovany uzivatel bude na stranke a klikne na odkaz. Celych 20 min. co na to klikol uz nebude moct kliknut znova na ten link a ked uplynie 20 min tak sa do suboru napr. uzivatel.dat pripise 1. Bude to taky bodovy system.....ten co si "naklika" najviac bodov bude mat niejake prava. A chcem to spravit tak ako som uz pisal ze klikne po 20 min sa mu pripise 1 do suboru a potom moze znova kliknut.
Mozno si budete mysliet ze to je trocha blbe ale...
to bys musel mít spooousty souborů, nebo by práce se nimi byla dost nepříjemná... na toto bych použil určitě databázi...
příklad sloupců:
id
uzivatel
time
body
mno a pak po kliknutí zkontroluješ zda time + 20min <= time() a pak když tak zvýšíš v db body nebo co budeš chtít..
Takto můžeš mít i přehled o tom kdo na tom je, a celé to budeš mít jednodušší
no tu mate tu tabulku mysql...no a teraz co s tym mam tam robit?
http://bs-travian.xf.cz/mysql.JPG
( http://bs-travian.xf.cz/mysql.JPG )
diki
Základy MYSQL:
http://tvorba-webu.cz/php/mysql.php
PhpMyAdmin
Je to jen ulehčení toho, co můžeš udělat kódem.
No uz mi nieco malo o MySQL vysvetlil kamos takze uz viem zhruba ako sa robia tabulky. No a teraz ako pisal ench....
to bys musel mít spooousty souborů, nebo by práce se nimi byla dost nepříjemná... na toto bych použil určitě databázi...
příklad sloupců:
id
uzivatel
time
body
mno a pak po kliknutí zkontroluješ zda time + 20min <= time() a pak když tak zvýšíš v db body nebo co budeš chtít..
a teraz ze to time + 20 <= time() to mam napisat v PHP? a co je to time() a time?
Diki
takže příklad je na tabulce:
CREATE TABLE `klik` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`uzivatel` varchar(30) NOT NULL,
`time` datetime NOT NULL,
`body` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = innodb;
vytvořil jsem nového uživatele:
INSERT INTO `test`.`klik` (
`id` ,
`uzivatel` ,
`time` ,
`body`
)
VALUES (
'1', 'BFU', NOW( ) , '0'
);
a teď jednoduchý odkaz s dotazem v php... (žádné zabezpečení, to si zvládneš sám, ne ;o) )
<a href="?akce=plus_bod&user_id=1" title="po kliknutí přidá bod">Klik</a>
<?php
$doba = 20 ; //v minutach
$MySQL_server="localhost";
$MySQL_db="test";
$MySQL_user="root";
$MySQL_user_password="*********";
$spojeni=mysql_connect($MySQL_server,$MySQL_user,$MySQL_user_password);
$spojenidb=mysql_select_db($MySQL_db);
mysql_query("SET NAMES 'cp1250'");
mysql_query("SET character_set_client=cp1250");
mysql_query("SET character_set_connection=cp1250");
mysql_query("SET character_set_results=cp1250");
if(isset($_GET["user_id"]) && isset($_GET["akce"])){
if(is_numeric($_GET["user_id"]) && $_GET["akce"] == "plus_bod"){
$id = $_GET["user_id"];
$dotaz = "SELECT date_add(k.time, interval 20 minute) as klik_limit FROM klik as k WHERE k.id=".$id;
if($result = mysql_query($dotaz)){
if(@mysql_num_rows($result) == 0){
echo "Uzivatel neni v db";
}else{
if($sql = @mysql_fetch_object($result)){
$dot_pridej_body = "UPDATE klik as k SET k.body=k.body+1 , k.time=now() WHERE date_add(k.time, interval 20 minute) <= now() AND k.id =".$id." LIMIT 1";
if($res_pridej_body = mysql_query($dot_pridej_body)){
switch(mysql_affected_rows($spojeni)){
case 0:
echo "nelze přidat body, přidat lze až v ".$sql->klik_limit;
break;
case 1:
echo "byl přidán bod, další kliknutí je možné za ".$doba." minut";
break;
default:
echo "nějaká chybička";
}
}
}
}
}else{
echo "Chyba ve zpracování";
}
}
}
?>
a este ze ten stredny kod mam dat do akeho suboru?
INSERT INTO `test`.`klik` (
`id` ,
`uzivatel` ,
`time` ,
`body`
)
VALUES (
'1', 'BFU', NOW( ) , '0'
);
To Anonymní uživatel : to je normální sql dotaz.
takže napíšeš něco takového:
$dotaz = "INSERT INTO `test`.`klik` (
`id` ,
`uzivatel` ,
`time` ,
`body`
)
VALUES (
'1', 'BFU', NOW( ) , '0'
);"
mysql_query($dotaz);
a to je celé :-) doporučuju pak ošetřit o to, zda se to zpracovalo, a podobné chyby...
ale kde to mam dat? do akeho suboru
Prepacte ze az o 13 dni zonova otvaram toto tema ale az teraz som sa nato niejako zameral. Skusal som to, este som to niejako doladil ale stale mi to nefunguje...Tabulky v MySQL mam, chyby na stranke kde to je to nevypisuje...proste len ked stlacim na klik nic sa nestane...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Dopocitani dat — založil Pepek7
Struktury dat — založil oxidián
[C#] Vypis dat z while do c# — založil gledy
C# - Filtrování dat — založil Malag
Kontrola dat — založil pejtrik
Moderátoři diskuze