データベースから複数のオークションレコードをフェッチするために使用するphpループがあります。オークションの一環として、終了するまでカウントダウンをしたいと思います。私はもともと、最初のレコードだけがカウントダウンタイマーを表示している(動作している)という問題を抱えていましたが、おそらくjqueryセレクターに毎回同じIDを与えていたためだと判断しました。だから私はそれを変更して、各ループでdivとjquery関数に与える新しいIDが生成されるようにしました。しかし、スクリプトの結果を見ると、カウントダウンタイマーがテーブルの行に表示されません。
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$ID = $row['ID'];
$cdRand = '#row'.$ID;
$img = $row['img'];
$desc = $row['description'];
$name = $row['name'];
$owner = $row['owner'];
$cprice = $row['sprice'];
$iprice = $row['iprice'];
$incprice = $row['incprice'];
$etime = $row['etime'];
$nextBid = $cprice + $incprice;
$stmt2 = $pdo->prepare("SELECT * FROM user WHERE username = :username");
$stmt2->bindParam(":username", $owner,PDO::PARAM_STR);
$stmt2->execute();
$thisuser2 = $stmt2->fetch(PDO::FETCH_ASSOC);
$location = $thisuser2['location'];
echo'
<tr class="resultindex">
<td class="imgCol"><a href="displayAuct.php?id='.$ID.'"><img src="'.$img.'" alt="'.$name.'" /></a></td>
<td class="infoCol">
<div class="nameDiv">
<a class="nameLink" href="displayAuct.php?id='.$ID.'">'.$name.'</a><br/>
</div>
<div class="descDiv">
<span class="priceLabel2">'.$desc.'</span>
</div>
<div class="userdiv">
<span class="fromuser">Location: </span><br/>
<span class="location">'.$location.'</span>
</div>
</td>
<td style="width:1px; background-color:#330066;" ></td>
<td class="timerCol">
<div class="currentp" style="height: 50px;"><span class="priceLabel">Current Bid: </span><br/><span class="price1">$'.$cprice.'</span></div>
<div id="timeRow" style="height: 30px;">
<span class="timeleft">Time Left: </span>
</div>
<div id="'.$cdRand.'" style="height:80px;"></div>
<script type=text/javascript>
var timestamp = '. $etime * 1000 .';
var endTime = new Date();
endTime.setTime(timestamp);
$("'.$cdRand.'").countdown({until: endTime});
</script>
</td>
</tr>
';
なぜそれが機能しないのかよくわかりません。カウントダウンタイマーはキースウッドのカウントダウンプラグインhttp://keith-wood.name/countdown.htmlです。助けていただければ幸いです。
乾杯、バンディ