Geheel javascript in PHP
Zij die men vorige vragen hebben gelezen weten dat ik bezig ben met een soort Ebay script. Gebruikers kunnen objecten op mijn website plaatsen en andere gebruikers kunnen er op bieden.
Als je zoekt naar bepaalde opjecten komt er een lijst te staan met de objecten die aan je zoekcriteria voldoen. Ik zet er echter de resterende tijd om te bieden bij elk object bij. Dit wil ik doen in javascript, hij moet vanzelf aftellen.
Om al deze objecten weer te geven in een lijst, gebruik ik een lusje die alle info leeghaalt uit de database (met oa de deadline).
Ik zit echter wel met een probleem. Voor ieder object in die lijst moet een apart aftelscriptje werken. Het javascript moet mee in de lus.
Maar dit kan toch niet?
Ik zou dus eigenlijk zoiets moeten hebben:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
while ($object = mysql_fetch_object($query)) {
<script language=javascript type=text/javascript src=timeleft.js></script>
<script language=javascript type=text/javascript>
var oTimer = new Timer("nc");
oTimer.setTime($verschil;);
oTimer.setRefresh(false);
oTimer.setFinal("<font color=red>Afgelopen!</font>");
aTimers["nc"] = oTimer;
</script>
<script language=javascript type=text/javascript>var hTimerInterval = setInterval(DownTimer, 1000);</script>
echo "
<span id=counter_nc_seconds style=\"display: inline;\">
<span id=counter_nc_seconds_value>
</span>S resterend..</span>";
?>
while ($object = mysql_fetch_object($query)) {
<script language=javascript type=text/javascript src=timeleft.js></script>
<script language=javascript type=text/javascript>
var oTimer = new Timer("nc");
oTimer.setTime($verschil;);
oTimer.setRefresh(false);
oTimer.setFinal("<font color=red>Afgelopen!</font>");
aTimers["nc"] = oTimer;
</script>
<script language=javascript type=text/javascript>var hTimerInterval = setInterval(DownTimer, 1000);</script>
echo "
<span id=counter_nc_seconds style=\"display: inline;\">
<span id=counter_nc_seconds_value>
</span>S resterend..</span>";
?>
Jammer genoeg gaat Javascript niet zo gemakkelijk met PHP.
Hoe kan ik dit nu oplossen zodat voor ieder object in de lijst wordt afgeteld?
(Maw, hoe krijg ik dat javascript in de lus?)
Dank!
Gewijzigd op 01/01/1970 01:00:00 door Jens
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
// deze heb je maar 1 keer nodig veronderstel ik, dus dit bovenaan en niet in de while lus.
echo '<script language="javascript" type="text/javascript" src="timeleft.js"></script>
<script language="javascript" type="text/javascript">var hTimerInterval = setInterval(DownTimer, 1000);</script>';
while ($obj = mysql_fetch_object($query)) {
echo '<script language="javascript" type="text/javascript">
var oTimer = new Timer("'.$obj->id.'");
oTimer.setTime('.$obj->verschil.');
oTimer.setRefresh(false);
oTimer.setFinal("<font color=\"red\">Afgelopen!</font>");
aTimers["'.$obj->id.'"] = oTimer;
</script>
<span id="counter_'.$obj->id.'_seconds" style="display: inline;">
<span id="counter_'.$obj->id.'_seconds_value"></span>s resterend..</span>';
}
?>
// deze heb je maar 1 keer nodig veronderstel ik, dus dit bovenaan en niet in de while lus.
echo '<script language="javascript" type="text/javascript" src="timeleft.js"></script>
<script language="javascript" type="text/javascript">var hTimerInterval = setInterval(DownTimer, 1000);</script>';
while ($obj = mysql_fetch_object($query)) {
echo '<script language="javascript" type="text/javascript">
var oTimer = new Timer("'.$obj->id.'");
oTimer.setTime('.$obj->verschil.');
oTimer.setRefresh(false);
oTimer.setFinal("<font color=\"red\">Afgelopen!</font>");
aTimers["'.$obj->id.'"] = oTimer;
</script>
<span id="counter_'.$obj->id.'_seconds" style="display: inline;">
<span id="counter_'.$obj->id.'_seconds_value"></span>s resterend..</span>';
}
?>
nog zal dit niet helemaal werken, je zet overal hetzelfde id bij die spans,
daar moet nog een id van bv de record bij.
Edit: heb al eens iets als voorbeeld zitten aanpassen.
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
Het werkt nu wel, met Bron Weergeven zie ik dat alle ID's netjes op hun plaats komen en dat iedere timer een ander aantal seconden moet aftellen.
MAAR, het script geeft blijkbaar random waarden weer..
Het telt niet af vanaf die aantal seconden, het is willekeurig :S
De ene keer 10H 50M, de andere keer 0H 24M..
Hoe kan dat?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
// deze heb je maar 1 keer nodig veronderstel ik, dus dit bovenaan en niet in de while lus.
echo '<script language="javascript" type="text/javascript" src="timeleft.js"></script>
<script language="javascript" type="text/javascript">var hTimerInterval = setInterval(DownTimer, 1000);</script>';
$i = 0;
while ($obj = mysql_fetch_object($query)) {
echo '<script language="javascript" type="text/javascript">
var oTimer' . ++$i . ' = new Timer("'.$obj->id.'");
oTimer' . $i . '.setTime('.$obj->verschil.');
oTimer' . $i . '.setRefresh(false);
oTimer' . $i . '.setFinal("<font color=\"red\">Afgelopen!</font>");
aTimers["'.$obj->id.'"] = oTimer;
</script>
<span id="counter_'.$obj->id.'_seconds" style="display: inline;">
<span id="counter_'.$obj->id.'_seconds_value"></span>s resterend..</span>';
}
?>
// deze heb je maar 1 keer nodig veronderstel ik, dus dit bovenaan en niet in de while lus.
echo '<script language="javascript" type="text/javascript" src="timeleft.js"></script>
<script language="javascript" type="text/javascript">var hTimerInterval = setInterval(DownTimer, 1000);</script>';
$i = 0;
while ($obj = mysql_fetch_object($query)) {
echo '<script language="javascript" type="text/javascript">
var oTimer' . ++$i . ' = new Timer("'.$obj->id.'");
oTimer' . $i . '.setTime('.$obj->verschil.');
oTimer' . $i . '.setRefresh(false);
oTimer' . $i . '.setFinal("<font color=\"red\">Afgelopen!</font>");
aTimers["'.$obj->id.'"] = oTimer;
</script>
<span id="counter_'.$obj->id.'_seconds" style="display: inline;">
<span id="counter_'.$obj->id.'_seconds_value"></span>s resterend..</span>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jens
De timer werkt niet.. Er worden geen seconden,minuten of uren weergegeven.
Met "Bron weergeven" zag ik dat de lus perfect werkte, elk timertje krijgt zijn eigen ID, enz,.. Met de code is dus niets mis. Toch werkt het niet.
Ik heb weinig kennis van Javascript, maar ik ben altijd in om te leren.
Ik post hier even de relevante code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?
// Alle objecten op de veiling zoeken (alle objecten worden 2 dagen op de veiling gezet)
$sql = "SELECT *
FROM objecten
WHERE
DATE_ADD(starttijd,INTERVAL 2 day) >= NOW()
ORDER BY
starttijd
ASC LIMIT 0, 25 ";
$query = mysql_query($sql);
// Lusje maken en javascript includen
echo '<script language="javascript" type="text/javascript" src="timeleft.js"></script>
<script language="javascript" type="text/javascript">var hTimerInterval = setInterval(DownTimer, 1000);</script>';
$i = 0;
while ($obj = mysql_fetch_object($query)) {
// De resterende tijd van het object berekenen
$sql = mysql_query("SELECT TIME_TO_SEC(TIMEDIFF(deadline,NOW())) AS verschil FROM objecten WHERE id='{$obj->id}' ");
$row = mysql_fetch_assoc($sql);
// Javascript die zorgt voor timer
echo '<script language="javascript" type="text/javascript">
var oTimer' . ++$i . ' = new Timer("'.$obj->id.'");
oTimer' . $i . '.setTime('.$row['verschil'].');
oTimer' . $i . '.setRefresh(false);
oTimer' . $i . '.setFinal("<font color=\"red\">Afgelopen!</font>");
aTimers["'.$obj->id.'"] = oTimer;
</script>';
// Weergeven van de resterende tijd in seconden
echo '
<span id="counter_'.$obj->id.'_seconds" style="display: inline;">
<span id="counter_'.$obj->id.'_seconds_value"></span>s resterend..</span>';
}
?>
// Alle objecten op de veiling zoeken (alle objecten worden 2 dagen op de veiling gezet)
$sql = "SELECT *
FROM objecten
WHERE
DATE_ADD(starttijd,INTERVAL 2 day) >= NOW()
ORDER BY
starttijd
ASC LIMIT 0, 25 ";
$query = mysql_query($sql);
// Lusje maken en javascript includen
echo '<script language="javascript" type="text/javascript" src="timeleft.js"></script>
<script language="javascript" type="text/javascript">var hTimerInterval = setInterval(DownTimer, 1000);</script>';
$i = 0;
while ($obj = mysql_fetch_object($query)) {
// De resterende tijd van het object berekenen
$sql = mysql_query("SELECT TIME_TO_SEC(TIMEDIFF(deadline,NOW())) AS verschil FROM objecten WHERE id='{$obj->id}' ");
$row = mysql_fetch_assoc($sql);
// Javascript die zorgt voor timer
echo '<script language="javascript" type="text/javascript">
var oTimer' . ++$i . ' = new Timer("'.$obj->id.'");
oTimer' . $i . '.setTime('.$row['verschil'].');
oTimer' . $i . '.setRefresh(false);
oTimer' . $i . '.setFinal("<font color=\"red\">Afgelopen!</font>");
aTimers["'.$obj->id.'"] = oTimer;
</script>';
// Weergeven van de resterende tijd in seconden
echo '
<span id="counter_'.$obj->id.'_seconds" style="display: inline;">
<span id="counter_'.$obj->id.'_seconds_value"></span>s resterend..</span>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jens
Gewijzigd op 01/01/1970 01:00:00 door Jens
Ik heb nog veel geprobeerd, maar niets blijkt te werken, ik zie ook niet wat er fout aan is..