ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
368
368
EMPFEHLEN
-
26.02.05 16:14 #1
- Registriert seit
- Feb 2005
- Beiträge
- 66
Hallo Leute, ich habe folgendes Problem:
Ich habe eine while-schleife in php, in der ich einen datenbank-wert und die aktuelle Zeit auslese und die Differenz als Restzeit speichere (nebenbei lese ich natürlich zu jeder der Restzeiten andere Informationen wie username, preis,... ebenfalls aus). Nun soll aber die dort angezeigte Restzeit dynamisch heruntergezählt werden. Das javascript hierfür habe ich auch schon, nur habe ich keine Ahnung, wie ich das einbinden soll, da ich ja immer eine unbestimmte Anzahl an zu übergebenden Variablen habe, die als Countdown ablaufen sollen. Das ganze soll dann so aussehen:
1.
xxxxxxxx // x,y,z: passende Werte aus Datenbank
yyyyyyyy
Restzeit: 20 Std 10 Min 05 Sek // soll runterzählen
zzzzzzzz
2.
aaaaaaa
bbbbbbb
Restzeit: 33 Std 21 Min 17 Sek
ccccccc
3.
dddddd
eeeeee
Restzeit: 80 Std 44 Min 32 Sek
ffffffffff
Wobei die Anzahl der auszuzgebenden Datensätze von count($result) mit $result=my_sql_query(...) abhängt, also dynamisch ist.
Wie gehe ich das an?
-
27.02.05 08:42 #2
- Registriert seit
- Jan 2005
- Beiträge
- 121
Du musst die php-Variable als eine GET-Variable abspeichern! Dann kannst du via JavaScript darauf zugreifen und deinen Countdown starten lassen.
-
ich verstehe noch nicht ganz, was genau die vorhast =)
- Du hast eine schleife, die Einträge aus einer Datenbank holt.
- Zu jedem Datensatz hast du eine Zeit
- nun soll die Differenz zwischen dem gepseicherten Wert und jetzt an ein js übergeben werden
so weit richtig?
Sprich es soll am ende aussehen wie bei ebay, nur dass die Zeit runterzählt
Lösungs-Vorschlag:
Du speicherst die Zeit (bis es abläuft) als Unix-Time-stamp (aber als typ init angeben) und dann einfach:
$remaing = $result['time'] - time();
$result['time'] -> gehe ich von aus ist die Zeit aus der DB
$remaining -> übergibst du dann dem js (oder wie will dieser die daten haben?!)
mfg dino
-
27.02.05 11:28 #4
- Registriert seit
- Feb 2005
- Beiträge
- 66
<script LANGUAGE="JavaScript"><!--
function validateForm()
{
var okSoFar=true
with (document.UE)
{
if (okSoFar==true) submit();
}
}
// --></script>
<script language="JavaScript">
var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22; // Hier erfolgt die variablen-Übergabe
var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
function countdown() {
startDatum=new Date(); // Aktuelles Datum
// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
if(startDatum<=zielDatum) {
var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;
// Jahre
if(startDatum<zielDatum) {
while(startDatum<zielDatum) {
if(startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) jahre++;
}
startDatum.setFullYear(startDatum.getFullYear()-1);
}
// Restliche Tage zum Monatsende ermitteln
var restTage=0;
var m=startDatum.getMonth();
if(m==1-1||m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1) restTage=31-startDatum.getDate();
else if(m==4-1||m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
else if(m==2-1) {
if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0 || startDatum.getFullYear()%400==0)) restTage=29-startDatum.getDate(); // Schaltjahr
else restTage=28-startDatum.getDate();
}
// Start- und Ziel-Tag merken und auf 1 setzen
var startTag=startDatum.getDate();
var zielTag=zielDatum.getDate();
startDatum.setDate(1);
zielDatum.setDate(1);
// Monate
if(startDatum<zielDatum) {
while(startDatum<zielDatum) {
if(startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) monate++;
}
startDatum.setMonth(startDatum.getMonth()-1);
}
// Tatsächlichen Start- und Ziel-Tag berücksichtigen
if(startDatum.getMonth()==zielDatum.getMonth()) {
if(startTag<=zielTag) startDatum.setDate(startTag);
else {
monate--;
tage=restTage+1;
}
}
else {
startDatum.setMonth(startDatum.getMonth()+1);
if(startTag>=zielTag) tage=restTage+1;
else {
monate++;
startDatum.setDate(startTag);
}
}
zielDatum.setDate(zielTag);
// Tage
restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
tage+=restTage;
// Stunden
stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);
// Minuten
minuten=Math.floor((zielDatum-startDatum)/(60*1000));
startDatum.setTime(startDatum.getTime()+minuten*60*1000);
// Sekunden
sekunden=Math.floor((zielDatum-startDatum)/1000);
// Anzeige formatieren
(jahre!=1)?jahre=jahre+" Jahre, ":jahre=jahre+" Jahr, ";
(monate!=1)?monate=monate+" Monate, ":monate=monate+" Monat, ";
(tage!=1)?tage=tage+" Tage, ":tage=tage+" Tag, ";
(stunden!=1)?stunden=stunden+" Stunden, ":stunden=stunden+" Stunde, ";
(minuten!=1)?minuten=minuten+" Minuten und ":minuten=minuten+" Minute und ";
if(sekunden<10) sekunden="0"+sekunden;
(sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";
document.countdownform.countdowninput.value=jahre+monate+tage+stunden+minuten+sekunden;
setTimeout('countdown()',200);
}
// Anderenfalls alles auf Null setzen
else document.countdownform.countdowninput.value="0 Jahre, 0 Monate, 0 Tage, 0 Stunden, 0 Minuten und 00 Sekunden";
}
</script>
<html>
<head><title>Übersicht</title></head>
<body>
<b> Hier sehen sie Ihre laufenden Auftraege: </b><br><br>
<?php
$db_server='localhost';
$db_user='root';
$db_passwort='';
$db_name='translations';
$verbindung=mysql_connect($db_server,$db_user,$db_passwort);
if(!$verbindung)
die("Der Server kann nicht erreicht werden. Bite versuchen sie es später wieder.");
if(!mysql_select_db($db_name,$verbindung))
die("Die Datenbank kann nicht angesprochen werden.");
if(!session_id()) session_start();
if (isset($_SESSION['md5_pass'])) pama_authenticate($_SESSION['username'],$_SESSION['md5_pass'],"members",0);
else
{
js_msg("Error, please re-login.");
include ("../get_details.php");
js_goto(INITIAL_PAGE);
exit;
}
$query="SELECT aid, auftraege.text_alt, sekunden, sprache FROM texts, auftraege WHERE auftraege.id=(SELECT id FROM pama_members WHERE their_username='".$_SESSION['username']."') AND texts.text_alt=auftraege.text_alt AND auftraege.alt='0' ";
$result=mysql_query($query);
if(!$result)
echo mysql_error();
$number=mysql_numrows($result);
$i=1;
function smarty_modifier_count_words($string)
{
$split_array = preg_split('/\s+/',$string);
$word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array);
return count($word_count);
}
while($i < ($number + 1))
{
$row = mysql_fetch_array($result);
$aid = $row["aid"];
$txt = $row["text_alt"];
$zeit = $row["sekunden"];
$sprache = $row["sprache"];
$tmp="SELECT preis FROM preis WHERE sprache='".$sprache."' AND id=(SELECT id FROM pama_members WHERE their_username='".$_SESSION['username']."')";
$preis1=mysql_query($tmp);
$ppreis=mysql_fetch_array($preis1);
$preis=$ppreis["preis"];
$anz=smarty_modifier_count_words($txt);
$gpreis1=(bcmul($anz,$preis))/100;
$ant=0.1;
$eg=bcmul($gpreis1,$ant,2);
$gpreis=bcsub($gpreis1,$eg,2);
$jzeit=time();
$restzeit=bcsub($zeit,$jzeit);
$stdfak=3600;
$minfak=60;
$rstd=floor(bcdiv($restzeit,$stdfak,2);
$zerg=bcmul($rstd,$stdfak);
$zerg2=bcsub($restzeit,$zerg);
$rmin=floor(bcdiv($zerg2,$minfak);
$zerg3=bcmul($rmin,$minfak);
$rsek=bcsub($rmin,$zerg3);
if($restzeit > 0)
print "<br><b>$i:<br>$sprache </b><br>$txt<br> $gpreis Euro <br> $rstd Stunden $rmin Minuten $rsek Sekunden <br><br>"; //an dieser Stelle jscript einbinden
//hier muss wohl das script eingebunden werden...
else
{
$anteil=3;
$strafe=bcdiv($gpreis,$anteil,2);
if ($strafe > 20)
$strafe=20;
print "<br><b>$i:<br>$sprache </b><br>$txt<br><br><b>Ihre Zeit ist bereits abgelaufen. Ihnen wird ein Betrag in Höhe von ".$strafe." Euro von ihrem Konto abgezogen.</b><br><br>";
$query2="SELECT stand FROM konto WHERE id=(SELECT id FROM pama_members WHERE their_username='".$_SESSION['username']."')";
$result2=mysql_query($query2);
$sstand=mysql_fetch_array($result2);
$stand=$sstand["stand"];
$stand_neu1=bcsub($stand,$strafe,2);
$array=array("," => ".");
$stand_neu=strtr($stand_neu1,$array);
$query3="UPDATE konto SET stand='".$stand_neu."' WHERE id=(SELECT id FROM pama_members WHERE their_username='".$_SESSION['username']."')";
$result3=mysql_query($query3);
$query4="UPDATE auftraege SET alt='2' WHERE aid='".$aid."' ";
$result4=mysql_query($query4);
}
$i++;
}
mysql_free_result($result);
?>
<b><br>Fügen sie hier eine fertige Übersetzung ein: <br></b>
<form action="./content/phps/meineauftraege1.php" method="post" name="UE">
<input type="hidden" name="save" value="">
<textarea name="text" cols="100" rows="10" wrap="soft">
</textarea><br>
<br><b>Geben sie hier die Nummer des fertigzustellenden Auftrages an:</b><br><br>
<input type="text" name="aufid"><br>
<br><input type="button" value="Auftrag beenden" name="b1"
class="button" onclick="javascript:validateForm();">
</form>
</body>
</html>
Soweit der Quelltext, ja, so ähnlich wie bei ebay...
Danke für jede Hilfestellung,
bis denn,
Dennis
-
28.02.05 19:30 #5
- Registriert seit
- Feb 2005
- Beiträge
- 66
Sonst noch einer ne Idee?
Vielen Dank im voraus
MfG
dennisnowack
Ähnliche Themen
-
Schleife bis sich ein Wert ändert, dann die Schleife neu beginnen
Von Turtle78 im Forum PHPAntworten: 4Letzter Beitrag: 07.01.08, 17:14 -
Real|Bad|Day
Von SonMiko im Forum FotografieAntworten: 1Letzter Beitrag: 10.07.07, 20:21 -
Virtuell und Real in C4d
Von thelighter2 im Forum Cinema 4DAntworten: 6Letzter Beitrag: 25.12.05, 13:52 -
LoadVars.onLoad in for-schleife wird erst nach Schleife abgearbeitet?
Von Lloyd im Forum Flash PlattformAntworten: 12Letzter Beitrag: 17.01.05, 18:34 -
Quicktime und Real****
Von DeMuX im Forum Videoschnitt, Videotechnik & -produktionAntworten: 2Letzter Beitrag: 15.01.03, 16:30





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren