Son sıraya ulaştığında nasıl farklı bir şey yankı mı?

5 Cevap php

Ben son satırdan sonra yankı sonunda virgül echo değil isteyen duyuyorum. Bunu nasıl yapabilirim? İşte benim kod:

<?php
    header("Content-type: application/json");
    echo '{"points":[';

    mysql_connect("localhost", "user", "password");
    mysql_select_db("database");

    $q = "SELECT venues.id, venues.lat, venues.lon, heat_indexes.temperature FROM venues, heat_indexes WHERE venues.id = heat_indexes.venue_id";

    $res = mysql_query($q) or die(mysql_error());
    while ($point = mysql_fetch_assoc($res)) {
    echo $point['lat'] . "," . $point['lon'] . "," . $point['temperature'] . ",";
    }
    mysql_free_result($res);
    echo ']}';
    ?>

5 Cevap

Ile başlayan satır sayısını almak için bir sayım sorguyu kullanın.

$query= "SELECT COUNT(*) FROM venues";
$count= mysql_query($q);

Sonra koşullu tanıtmak ve sayımı ile her zaman azaltmak ...

while ($point = mysql_fetch_assoc($res)) {
    $count = $count - 1;
    if ($count == 1) {
        echo $point['lat'] . "," . $point['lon'] . "," . $point['temperature'];
    } else {
    echo $point['lat'] . "," . $point['lon'] . "," . $point['temperature'] . ",";
    }

Json kodlamak muhtemelen en iyi bahis olurdu, ama aynı zamanda Döşeme () kullanabilirsiniz;

Aksine iken döngü içinde yankılanan daha, bir değişkene eklemek. Bir kez while döngüsü, kullanımı $ çıktı dışında = virgül sondaki kaldırmak için ($ çıktı, ',') Döşeme.

Virgül sorun hakkında, ben her zaman yerine geçen ilk öğeyi hedeflemek:

$first = true;
while ($point = mysql_fetch_assoc($res)) {
    if ($first)
    {
        $first = false;
    }
    else
    {
        echo ",";
    }
    echo $point['lat'] . "," . $point['lon'] . "," . $point['temperature'];
}

Sen mysql_num_rows() geri son sorgusundan geçti sonuç kümesinde kaç satır bulmak için kullanabilirsiniz.

...
$res = mysql_query($q) or die(mysql_error());
$num_rows = mysql_num_rows($res);

Sonra Scotts cevap ile birleştiren ve ayarlamak gerekir.