Baskı basamaklı tablo

2 Cevap php

I'm trying to load data from database and display it in table like here: http://img196.imageshack.us/img196/1857/cijene.jpg In database i have 2 tables: cities (id, name) prices (id, city1_id, city2_id, price)

Örneğin, 4 şehirler için baskılı masa bu gibi görünecektir:

<table>
 <tr>
  <td>city1</td>
  <td> </td>
  <td> </td>
  <td> </td>
 </tr>

 <tr>
  <td> price_city1-city2</td>
  <td>city2</td>
  <td> </td>
  <td> </td>
 </tr>

 <tr>
  <td> price_city1-city3</td>
  <td> price_city2-city3</td>
  <td>city3</td>
  <td> </td>
 </tr>

 <tr>
  <td> price_city1-city4</td>
  <td> price_city2-city4</td>
  <td> price_city3-city4</td>
  <td>city4</td>
 </tr>
</table>

Birisi tabloları bu tür yankı php deyimi ne olduğunu biliyor mu?

Thanks in advance, Ile

2 Cevap

I've used a very simple approach to converting the results of a query to an HTML table. I test that $query_result is true and fetch the results as an associative array...

$query_result = mysqli_query($db, $query);

if ($query_result) {

    while ($columns = mysqli_fetch_assoc($query_result)) {

        echo "<tr>\n";

        foreach ($columns as $name => $column) {
            echo "<td>";
            printf("%s",$columns[$name]);
            echo "</td>\n";
        }

        echo "</tr>\n";
    }
}

EDIT: Şimdi senin masada bakmak mümkün oldum, ben gerçekten senin soruya cevap yok görebilirsiniz. Sorgu Açıkçası çok önemlidir. Soru 'nasıl benim basit fikirli bir yaklaşımla bir tabloya dönüştürülebilir sonuçları döndüren bir sorgu oluşturmak mı?' Haline gelir

Ben başkası bir kaç fikir umuyorum.

Bu biraz pratiklik kenarında, ama daha fazla bir egzersiz olarak bu sorunu yaklaşan ediyorum "doğru yapıyor."

Ben her tablonun basit bir seçme yapmak ve bir dizi eklemek istiyorum:

$query1 = "SELECT * FROM cities";
$query2 = "SELECT * FROM prices";

$results1 = mysql_query( $query1 );
$results2 = mysql_query( $query2 );

while( $rows = mysql_fetch_array( $results1 ) ) $cities[] = $row['name'];
while( $rows = mysql_fetch_array( $results2 ) ) $prices[] = array(
                                                               $row['city1_id'],
                                                               $row['city2_id'], 
                                                               $row['name']
                                                            );

Daha sonra dinamik iki javascript listeleri oluşturmak için bu kullanabilirsiniz:

$java_array1 = "var Cities = new Array;\n";
foreach( $cities as $key=>$city ) $java_array1 .= "Cities[$key] = \"$city\";\n";
$java_array2 = "var Prices = new Array;\n";
foreach( $cities as $key=>$price ) $java_array2 .= "Prices[$key] = new Array(
                                                                     \"{$price[0]}\",
                                                                     \"{$price[1]}\",
                                                                     \"{$price[2]}\",
                                                                  );\n";

Ben bir sonraki çıktı her bir hücre için özenle hazırlanmış kimlikleri ile bir tablo olur. Ben ilk cevap çok benzer bir kod kullanmak istiyorsunuz, ama ben her hücreye "cell-<row>-<col>" benzersiz bir kimliği verecek.

Ben yapardın son şey uygun eşleşmeleri kullanarak tablo doldurmak istiyorsunuz bazı onload javascript kamçılamak olacaktır. Benim javascript oldukça paslı, ama böyle bir şey (NOT: yalancı aşağıda) görünecektir:

n = 1;
for( var i in cities )
{
    // set city names on the diagonal
    document.getElementById( 'cell-'&i&'-'&i ).innerHTML = names[i];
    n = n + 1;
}

for( var j in prices )
{
    // use the city IDs in the prices array (see earlier code initializing
    // prices array) to place the prices
    document.getElementById( 'cell-'&prices[1]&'-'&prices[2] ).innerHTML = prices[0];
}

Neredeyse kesinlikle javascript bazı berbat; Kendi risk kullanın.

Bu, yukarıda verilen basit cevabı çok daha karmaşık, ama bu o yapar öyle yaptığını düşünebilirsiniz tek yoludur "duygusu." Temel olarak, bu yöntem ile, bunu should olacak her şeyi koyun ve garip tablolar ve garip seçtiği konusunda endişelenmenize gerek yok.