Geheel javascript in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jens

Jens

19/07/2008 20:29:00
Quote Anchor link
Goedemiddag,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>";

?>


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
 
PHP hulp

PHP hulp

21/11/2024 21:47:36
 
Hipska BE

Hipska BE

19/07/2008 21:29:00
Quote Anchor link
Opgekuist en zou moeten werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';

}

?>


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
 
Jens

Jens

19/07/2008 22:42:00
Quote Anchor link
Ok, begrijp ik.
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?
 
Jan Koehoorn

Jan Koehoorn

19/07/2008 23:15:00
Quote Anchor link
Je echoot je JavaScript in een while loop in PHP. Dat kan wel, maar dan moet je wel telkens een nieuw timer-id toekennen aan de JavaScript functie. Nu is dat elke keer var oTimer. Je zou een tellertje mee kunnen laten lopen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';

}

?>
 
Jens

Jens

20/07/2008 07:02:00
Quote Anchor link
Hartelijk dank Jan!
Gewijzigd op 01/01/1970 01:00:00 door Jens
 
Jens

Jens

24/07/2008 14:09:00
Quote Anchor link
Ik heb alles precies gedaan zoals Jan had voorgesteld en meteen getest.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
// 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
 
Jens

Jens

25/07/2008 15:37:00
Quote Anchor link
N.v.t meer..
Gewijzigd op 01/01/1970 01:00:00 door Jens
 
Jens

Jens

27/07/2008 10:09:00
Quote Anchor link
Ik heb nog veel geprobeerd, maar niets blijkt te werken, ik zie ook niet wat er fout aan is..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.