Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Övriga serverspråk > Övriga serverspråk

Mysql/PHP Countdown Timer ?

Hejsan jag håller på att fixa något likt en auktions sida. Alltså folk kan lägga upp egna auktioner och när man skapat auktionen så kommer en "countdown timer" igång som det text står "24 dagar kvar tills auktionen avslutas" och "24" ändras efter varje dag som gått. 

Jag behöver hjälp att skapa någon kodning som gör så att när en dag gått så ändras siffran i databasen ett steg ner och när den når 0 så försvinner auktionen.

Tror ni att ni kan hjälpa mig med något sådant ?

Har sökt på google men har inte hittat något som funkar med mysql :/

Har bara hittat detta (http://www.gfx-depot.com/forum/-tut...dex-t-1271.html) men det fungerar inte med Mysql, varför jag vill ha mysql är för att Titel, informaiton, bild osv ska lagras i databasen och då även countdown timern. Eller om det finns något annat sätt att fixa detta så tar jag gärna emot hjälp :)

 

Tack, undrar ni mer så skriv så ska jag försöka förklara bättre :) 

 

ID: #20212 | Skapades: 2010-10-01 23:28:50 | Tråden har 22 svar och har lästs 1046 gånger.
Sida: 1 2

Roosweb
Roosweb

Gradering

#20214

Rent spontant funderar jag varför du måte ändra om i databasen hela tiden? Varför inte jämföra dagens datum, med det datum auktionen lades upp? Sedan presentera en räknare med javascript eller liknande.

Med Vänliga Hälsningar - Robert Roos - Roosweb.se
ID: #20214 | Skapades: 2010-10-01 23:53:48

voigtan
voigtan

Gradering

#20216

Citerar Roosweb:

Rent spontant funderar jag varför du måte ändra om i databasen hela tiden? Varför inte jämföra dagens datum, med det datum auktionen lades upp? Sedan presentera en räknare med javascript eller liknande.

 

Precis, att uppdatera databasen med sådan information är inte riktigt korrekt, det är ju bara en visuell sak du vill ha på sidan, som du kan lösa med javascript, att uppdatera varje sekund innebär ju för varje "artikel" som finns på auktion sidan så är det antal*60 anrop i minuten, om du har 1000 artiklar så innebär det 60 000 anrop i minuten vilket är otroligt resurskrävande för din server och något som verkligen inte behövs lastas på servern, låt den bara ansträngas när du skickar in bud/skapar artiklar, det är det ända som det känns som behövs skickas till databasen.

Tänk om och analysera det Roosweb skriver, det är den absolut snällaste du kan göra mot din server om man ser på altenativet.

 

edit. en javascript timer löser detta som roosweb skriver DOCK måste du hämta tiden + datum ifrån servern och inte från den lokala datorn, för det är server tiden som räknas.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 2 oktober 2010. Läs tidigare inlägg.
ID: #20216 | Skapades: 2010-10-02 07:01:28

Okej, men jag sökte runt lite på google och hittade detta 

<html><head>
<script type = "text/javascript">
function getSeconds() {
var now = new Date();
var time = now.getTime();  // time now in milliseconds
var midnight = new Date(now.getFullYear(),now.getMonth(),now.getDate(),0,0,0); // midnight 0000 hrs
// midnight - change time hh,mm,ss to whatever time required, e.g. 7,50,0 (0750)
var ft = midnight.getTime() + 86400000;  // add one day
var diff = ft - time;  
diff = parseInt(diff/1000);
if (diff > 86400) {diff = diff - 86400}
startTimer (diff);
}
var timeInSecs;
var ticker;
function startTimer(secs){
timeInSecs = parseInt(secs);
ticker = setInterval("tick()",1000); 
tick(); // to start counter display right away
}
function tick() {
var secs = timeInSecs;
if (secs>0) {
timeInSecs--;
}
else {
clearInterval(ticker); // stop counting at zero
//getSeconds();  // and start again if required
}
var hours= Math.floor(secs/3600);
secs %= 3600;
var mins = Math.floor(secs/60);
secs %= 60;
var result = ((hours < 10 ) ? "0" : "" ) + hours + " timmar " + ( (mins < 10) ? "0" : "" ) + mins
                  + " minuter " + ( (secs < 10) ? "0" : "" ) + secs + " sekunder";
document.getElementById("countdown").innerHTML = "Nästa dag uppdaterats om " + result;
}
</script>

</head>
<body onload = "getSeconds()" >
<span id="countdown" style="font-weight: bold;"></span>
</body>
</html>

 

Och det fungerar jättebra, men jag e inte så high på javascript så jag ber er om att hjälpa mig hur man gör så att varje gång timern startas om alltså till 23 timmar - 59 minuter - 59 sekunder så händer en händelse, just nu i detta scriptet så uppdateras sidan men jag vill ha så att varje gång den startas om så kommer detta scriptet:

$minusdag=$dagarkvar-1;
$sql="update $tbl_name set visningar='$minusdag' WHERE username='$databas->username'";
$result=mysql_query($sql);

 

Skulle någon kunna hjälpa mig med detta?

Tack på förhand

 

Redigerades av ViktorNiklasson den 2 oktober 2010. Läs tidigare inlägg.
Redigerades av ViktorNiklasson den 2 oktober 2010. Läs tidigare inlägg.
Redigerades av ViktorNiklasson den 2 oktober 2010. Läs tidigare inlägg.
Redigerades av ViktorNiklasson den 2 oktober 2010. Läs tidigare inlägg.
ID: #20218 | Skapades: 2010-10-02 17:41:01

voigtan
voigtan

Gradering

#20219

Mitt tips är tänk om, varför vill du uppdatera tider i databasen? Sätt ett slut datum och använd den mot den aktuella tiden, javascripts delen är bara till för visuellt inte någon funktionallitet.

Kolla på CRON job i php för att schema lägga skript om du vill uppdatera efter x timmar, annars hade jag löst det på liknande sätt:

1. skapar en artikel, sätt ett slut datum

2. kontrollera om datumet har passerat, om ja: gå ej att lägga fler bud, annars gå att lägga bud och visar JS koden (om det är < 1 dygn, annars visar du dagar).

Förstå inte alls varför du försöker göra det krångligare än vad det faktist är.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20219 | Skapades: 2010-10-02 21:05:19

Okej, hur menar du med att kontrollera om datumet har passerat? Menar du att jag ska kolla manuellt eller någon kodning som gör det?

Skulle du kunna ge exempel på hur jag kan koda det?

tack

ID: #20221 | Skapades: 2010-10-03 12:00:03

voigtan
voigtan

Gradering

#20223

Jag skriver som jag utvecklar, jag vill inte sitta och uppdatera x antal auktioner manuellt bara för att man skall se något visuellt, mitt tips är att kolla hur PHP hantera datum och tid. Det är en helt vanlig if fråga för att visa det visuellt, om jag hade utvecklat något sådant här så skulle jag först och främst bara visa något i ren HTML och bygt in logiken (mindre än ett dygn === visar timmar och minuter, <1h visar minuter och sekund efter sidan har laddats om), efter det så hade jag försökt få in javascripts bitarna i det hela.

Att gemföra datum är inte svårt och det bör du nog kolla upp. Se inlägg #20219 är exakt hur jag hade löst det.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20223 | Skapades: 2010-10-03 15:56:29

Men jag förstår inte hur jag ska kunna göra timern bli personlig utan mysql?

Om det ser ut såhär:

 

[Auktions namn | Dagen den avslutas]

[Auktions namn | Dagen den avslutas]

.... Så är det en hel sida med massa olika auktioner men om jag inte har mysql i timern blir väll timern samma på varenda auktion ?

ID: #20224 | Skapades: 2010-10-03 17:54:17

voigtan
voigtan

Gradering

#20225

En auktion måste ju ha ett slut datum, låt användaren sätta det slut datumet. Skit i en timer, det är ju inte viktig data i en databas, en timer kan du alltid få ut när du presentera data (i ditt fall ett datum). Att sätta "antal dagar" innan en auktion avslutas är ointressant, det intressanta är att veta ett datum och tidpunkt då har du alla möjligheter att presentera det för besökaren, skapar en php funktion som kräver ett datum som inparameter och gör en funktion med hur den formatera datumet (exempelvis om vi sätter morgondagens datum så vill vi kanske att det stå "imorgon klockan 19.00".

http://www.kirupa.com/web/php_unix_timestamp.htm

php kör unix timestamp, så det är ju jätte bra för det kan du använda dig till nästa steg => Javascript.

Lös ett problem i taget, som jag skrev i dina tidigare trådar så kan jag inte hjälpa dig med några syntaxer då jag inte sitter i php (och är inte jätte sugen på att sätta mig och lära mig det), men om man kan lösa det med ett antal rader i ASP så kan jag inte tänka mig det är någon nöt att knäcka i PHP.

Ser i ditt första inlägg: http://www.gfx-depot.com/forum/-tut...dex-t-1271.html den har ju perfekt beskrivning för dig.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 3 oktober 2010. Läs tidigare inlägg.
ID: #20225 | Skapades: 2010-10-03 18:41:00

Tack för alla kommentarer osv. jag har gjort såhär att jag inte behöver någon "countdown timer", jag har gjort så att det står istället för "Det är (dagar) kvar på auktionen" till "Auktionen slutar (datum)" mycket enklare :) Tack för det.

Men jag behöver hjälp.. jag vet inte riktigt hur man gör så att datumet ökas till nästa månad när det ska läggas in i databasen.. alltså jag menar: När nån gör en auktion så ska sidan hitta vilket datum det är idag | exempel: "<? $datum = date('d-m/Y'); echo $datum; ?>"  | men hur gör jag för att den ska öka månaden det är idag till om 1 månad.. alltså om datumet är 18-10/2010 så ska månaden öka +1 så det som läggs in i databasen blir 18-11/2010. Vet ni hur man löser detta och skulle ni då kunna hjälpa mig?

Tack på förhand!:)

ID: #20261 | Skapades: 2010-10-18 18:14:21

voigtan
voigtan

Gradering

#20262

Skulle gissa på att du kan använda dig av: http://php.net/manual/en/function.mktime.php

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20262 | Skapades: 2010-10-18 18:35:44

Tack tack!:)

Jag behöver hjälp med en till sak inom countdowns tjosan. Och jag är inte så high på javascript, och vet ej om du är det heller men du kan det mesta så jag undrar om du skulle kunna hjälpa mig med en snabb sak.

Med Javascript hur gör man så att när timern är på 0 så försvinner timern och något annat kommer upp istället, text / bild elr annat.

Här är scriptet jag har:

<form name="counter"><input type="text" size="8" 
name="d2">
</form> 

 

<script> 

<!-- 

// 

var milisec=0 

var seconds=30 

document.counter.d2.value='30' 

 

function display(){ 

if (milisec<=0){ 

milisec=9 

seconds-=1 



if (seconds<=-1){ 

milisec=0 

seconds+=1 

}

else 

milisec-=1 

document.counter.d2.value=seconds+"."+milisec 

setTimeout("display()",100) 



display() 

-->
 

</script> 

Hur gör jag så att när timern når 0.0 så kommer en text upp istället för timern.

Tack på förhand och tack för all annan hjälp :)

ID: #20396 | Skapades: 2010-11-22 19:18:05

voigtan
voigtan

Gradering

#20397

Citat:
och vet ej om du är det heller men du kan det mesta så jag undrar om du skulle kunna hjälpa mig med en snabb sak.
mitt jobb gå ut på att jag skall kunna det så, jo jag kan det ;)

JS koden du har är långt ifrån bra, men duger nog för dig, kolla bara om seconds<0 om den är 0 så visar en annan text och kör ingen setTimeout längre, bara att lägga in funktionen

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20397 | Skapades: 2010-11-22 19:32:58

Kan typ inget om javascript, men är det nått såhär som jag ska lägga in?

if (seconds<0){

document.write("Text!");

}

 

om inte kan inte du visa? får det inte att funka

ID: #20398 | Skapades: 2010-11-22 19:47:47

voigtan
voigtan

Gradering

#20399

Kör aldrig document.write(),

Det räcker ju inte bara att köra if frågan, du måste stoppa din loop så att den inte kör setTimeout längre, kör inte heller med publikar värden på sekunderna, med 1 rad js kod så få jag bort väntetiden på din räknare om jag nu vill slippa se nedräkningen.

 

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20399 | Skapades: 2010-11-22 19:55:13

okej, haha somsakt jag e helt värdelös på js, kan du visa ett exempel?

ID: #20400 | Skapades: 2010-11-22 20:02:37
Sida: 1 2
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy