Autor Zpráva
undisputed
Profil
<style type="text/css">
ins{text-decoration:none;}
</style>
<?php
session_start();

$today = date("n j Y H:i:s");
echo $today;

$toyota  = date("n j Y H:i:s", time() + 600);
echo $toyota;
$to = date("H:i:s", time() + 60);
if(!isset($_SESSION['cas']))
{
$_SESSION['cas']=$toyota;


}
else {
echo "už existuje";
}
$sess=$_SESSION['cas'];

echo "<p>ostava<ins id='jedna' datetime='$sess'></ins></p>";



?>
<script type="text/javascript">
<!-- 
//predelavka http://www.geocities.com/SiliconValley/Lakes/8620/countdown.html
function toSt(n){
var s='';
if(n<10){s+='0';}
return s+n.toString();
}
function odpocet(kde){
var co=document.getElementById(kde).getAttribute('datetime');
var kdy=new Date(co);
var ted=new Date();
var jedu=Math.floor((kdy.getTime()-ted.getTime())/1000);
var den,hodin,minut,sekund;
if(jedu <= 0){
document.getElementById(kde).innerHTML='<?php include 'connect.php'; mysql_query("update tabulka set nieco='500' where id='5'"); ?>';
return;
}
var sec=toSt(jedu%60);
jedu=Math.floor(jedu/60);
var min=toSt(jedu%60);
jedu=Math.floor(jedu/60);
var hod=toSt(jedu%24);
jedu=Math.floor(jedu/24);
var dnu=jedu;
if(sec==1){sekund=' sekunda';}
else if(sec==2||sec==3||sec==4){sekund=' sekundy';}
else{sekund=' sekúnd';}
if(min==1){minut=' minuta';}
else if(min==2||min==3||min==4){minut=' minúty';}
else{minut=' minút';}
if(hod==1){hodin=' hodina';}
else if(hod==2||hod==3||hod==4){hodin=' hodiny';}
else{hodin=' hodín';}
if(dnu==1){den=' den';}
else if(dnu==2||dnu==3||dnu==4){den=' dni';}
else{den=' dní';}
   if(dnu==0){
 var tmp=' '+hod+hodin+', '+min+minut+', '+sec+ sekund; 
   }
   else 
var tmp=' '+dnu+den+', '+hod+hodin+', '+min+minut+', '+sec+ sekund;
document.getElementById(kde).innerHTML=tmp;
setTimeout("odpocet('"+kde+"')", 1000);   
}
function init(){
odpocet('jedna');
}
window.onload=init;
// -->
</script>

 


odpočet je tam 600 sekúnd nastavených nerozumiem prečo mi odpočítava len 2 minúty 40 sekúnd?

++ kde mám dať aby po skončení odpočtu sa zrušila session keď som to dal tam kde sa mi updatuje mysql tak to nefungovalo dobre išlo to stále od začiatku po obnovení stránky.

Ďakujem!
petr 6
Profil
Pravděpodobně to bude tím, že když odečítáš čas a čas+600 sekund, tak ten první čas je čas na tvém počítači a ten druhý je čas na serveru.
undisputed
Profil
a ako to zjednotiť?
petr 6
Profil
Buď oba časy v php, nebo oba v javascriptu.
_es
Profil
undisputed:
a ako to zjednotiť?
Ak potrebuješ na strane klienta odpočítavať 600 sekúnd, tak na to predsa serverový čas vôbec nepotrebuješ.
Witiko
Profil
_es:
On ale chce, aby se čas po znovunačtení stránky nevrátil zpět na 600 sekund. Proto jsem mu tu doporučil čas vygenerovat a následně uložit do session. Nevím, proč se nepokračuje v původním topicu, undisputed nejspíš uvážil, že je lepší jet ve více vláknech.
undisputed
Profil
ale veď čas tam mám len php nie?

$toyota  = date("n j Y H:i:s", time() + 600);
undisputed
Profil
Witiko:
V tej téme mi nikdo neodpísal,

a pozrite sa na ten skript ked obnovím stránku už sa to nenačíta znova(je tam session)

ja som chcel teraz vedieť prečo ked tam mám nastavené 10minút odpočet mi to odpočítava len 2:40
Witiko
Profil
undisputed:
V tej téme mi nikdo neodpísal,
To se neřeší vytvořením nového vlákna.

mi to odpočítava len 2:40
Nevím, protože nastavený čas na straně serveru je jiný než ten na straně klienta? Je dobré tenhle rozdíl srovnat pomocí něčeho takovéhleho:
<script>
  var rozdíl = (Date.now?Date.now():(new Date).getTime()) - <? echo time(); ?> * 1000; 
</script>
V proměnné rozdíl je pak rozdíl mezi časem serveru a klienta, stačí pak danou proměnnou k php scriptem vygenerovanému času přičíst.
undisputed
Profil
Ešte raz prosím k čomu pripočítať?u mňa k tej php premennej toyota?
petr 6
Profil
undisputed:
ale veď čas tam mám len php nie?
Ne. V proměnné kdy máš čas generovaný php na straně serveru (proměnná $toyota), ale v proměnné ted máš čas generovaný javascriptem na straně klienta.

A tyto dva časy odečítáš.
undisputed
Profil
Čiže tam kde mám ten odpočet=$php+js?to sa dá?
undisputed
Profil
<style type="text/css">
ins{text-decoration:none;}
</style>
<script>
  var rozdil = (Date.now?Date.now():(new Date).getTime()) - <? echo time(); ?> * 1000; 
</script>
<?php
session_start();

$today = date("n j Y H:i:s");
echo $today;

$toyota  = date("n j Y H:i:s", time() + 300);
echo $toyota;
$to = date("H:i:s", time() + 300);

if(!isset($_SESSION['cas']))
{
$_SESSION['cas']=$toyota;


}
else {
echo "už existuje";
}
$sess=$_SESSION['cas'];
$sess2=$_SESSION['cas2'];
echo "<p>ostava<ins id='jedna' datetime='$sess+<script>rozdil</script>'></ins></p>";



?>
<script type="text/javascript">
<!-- 
//predelavka http://www.geocities.com/SiliconValley/Lakes/8620/countdown.html
function toSt(n){
var s='';
if(n<10){s+='0';}
return s+n.toString();
}
function odpocet(kde){
var co=document.getElementById(kde).getAttribute('datetime');
var kdy=new Date(co);
var ted=new Date();
var jedu=Math.floor((kdy.getTime()-ted.getTime())/1000);
var den,hodin,minut,sekund;
if(jedu <= 0){
document.getElementById(kde).innerHTML='<?php include 'connect.php'; mysql_query("update drevo set uroven1='500' where nick='admin'"); ?>';
return;
}
var sec=toSt(jedu%60);
jedu=Math.floor(jedu/60);
var min=toSt(jedu%60);
jedu=Math.floor(jedu/60);
var hod=toSt(jedu%24);
jedu=Math.floor(jedu/24);
var dnu=jedu;
if(sec==1){sekund=' sekunda';}
else if(sec==2||sec==3||sec==4){sekund=' sekundy';}
else{sekund=' sekúnd';}
if(min==1){minut=' minuta';}
else if(min==2||min==3||min==4){minut=' minúty';}
else{minut=' minút';}
if(hod==1){hodin=' hodina';}
else if(hod==2||hod==3||hod==4){hodin=' hodiny';}
else{hodin=' hodín';}
if(dnu==1){den=' den';}
else if(dnu==2||dnu==3||dnu==4){den=' dni';}
else{den=' dní';}
   if(dnu==0){
 var tmp=' '+hod+hodin+', '+min+minut+', '+sec+ sekund; 
   }
   else 
var tmp=' '+dnu+den+', '+hod+hodin+', '+min+minut+', '+sec+ sekund;
document.getElementById(kde).innerHTML=tmp;
setTimeout("odpocet('"+kde+"')", 1000);   
}
function init(){
odpocet('jedna');
}
window.onload=init;
// -->
</script>


neviem ako to tam dať do php ?takto to nejde
Witiko
Profil
undisputed:
datetime='$sess+<script>rozdil</script>
Nastuduj si prosím základy javascriptu, nebo si tu někoho najmi v sekci zakázek. :-)
undisputed
Profil
:)tvoja odpoveď mi pomohla ,by ťa nezabilo keby si mi to napísal ako to má byť;)
_es
Profil
undisputed:
Ono treba prejaviť trochu viac snahy a vlastného uvažovania.
Je trochu rozdiel medzi poradiť so skriptom a napísať skript.
Najprv by si sa mohol zamyslieť nad tým, kedy a kde beží PHP kód a kedy a kde beži JS kód.
undisputed
Profil
Hm to ste mi pomohli
_es
Profil
undisputed:
Hm to ste mi pomohli
Myslím, že Witiko bol s tebou veľmi trpezlivý, tak si skús prečítať znovu rady v oboch vláknach a zapojiť do toho viac vlastnú hlavu a menej očakávať príchody hotových skriptov.
undisputed
Profil
Už netreba hotový skript stačí tam dať hento to je minimum.a ja som mu zato vďačný
_es
Profil
undisputed:
stačí tam dať hento
Čo hento? Len neurčito píšeš, že to „nejde“, pričom nie je jasné, čo „to“ má byť a vypisuješ nezmyselné kódy.
undisputed
Profil
Pozri hore kód-> je to tam js rozdiel časov -ten treba nejak zakomponovať do php kódu aby sa to k tomu pripočítalo to čo som tam dal ja je jasné že naprostá hlúposť ale neviem ako proste
_es
Profil
undisputed:
js rozdiel časov -ten treba nejak zakomponovať do php kódu
Ako chceš vyrátaný rozdiel JS časov „zakomponovať“ do PHP kódu, keď JS kód beží až po skončení PHP skriptu a ešte k tomu na úplne inom stroji?
Witiko
Profil
-- Dvojitý post, poprosím moderaci o odstranění.
Witiko
Profil
undisputed:
Nejprve se provede php script, jímž vygeneruješ časy, obsah je odeslán klientovi a teprve pak se generovaná stránka renderuje a scripty interpretují. Proto budeš proměnnou rozdíl přičítat ve funkci odpocet při definici proměnné kdy. Zbytek si domysli sám, tvá pasivita a naprosté přesvědčení o tom, že jsme povinni ti tu napsat úplné řešení, mě obírají o veškerou chuť ti jakkoliv dále pomáhat. Jsem si jistý, že _es je na tom podobně, ne-li hůře.

Základní logika na příkladu:
Čas serveru: 12:20
Čas klientského počítače: 12:24
Proměnná rozdíl: 4 vteřiny

Odpočítávaný čas vygenerovaný php scriptem na straně serveru: 12:30
Modifikovaný čas javascriptem za pomocí proměnné rozdíl: 12:34

Z tvého přístupu čtu postoj: "Tak se vykecejte o té teorii, když musíte, hlavně mi řekněte, jak to mám udělat". K tomu můžu říct jen jedno: Špatné fórum. A opět odkážu na sekci Práce a zakázky. Tam najdeš lidi, kteří, aniž by tě zatěžovali technickými daty, ti za povětšinou skromný peníz sesmolí vše, čeho tvé srdce žádá.

Jinak zatím jsi tu v těchto dvou tématech porušil závazné pravidlo 7 a několik nezávazných dobře míněných rad, doporučuji je k pozornosti.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0