Nasıl MySQL veri satırları PHP kullanarak, uygun başlıklar altında koyabilirsiniz?

2 Cevap php

Ben aşağıdaki MySQL tablo yapısı var:

num field company phone     website

1   Gas   abcd    123456789 abcd.com
2   Water efgh    987654321 efgh.com
3   Water ijkl    321654987 ijkl.com
4   Heat  mnop    987654321 mnop.com
5   Gas   qrst    123789654 qrst.com
...

Aşağıdaki formatta ekrana verileri echo (belki GROUP_BY ve ORDER_BY bazı karışımını kullanarak) PHP ile mümkündür:

Gas:
abcd       qrst
123456789  123789654
abcd.com   qrst.com

Water:
efgh       ijkl
987654321  321654987
efgh.com   ijkl.com

Heat:
mnop
321654987
mnop.com

Bunun kesin biçimi önemli değildir. Ben sadece tekrarlanan alanların hiçbiri ile uygun alana altında listelenen edilecek verilerin farklı satırlar için gerekir. Ben bir süre için şimdi bu anlamaya çalışıyorum, ama PHP için yeni ve ben hatta mümkün ise, bunu nasıl anlamaya görünüyor, ya da olamaz benim verileri düzenlemek için daha iyi bir yolu olup olmadığını kolaylaştırmak için.

2 Cevap

Bir "Gaz" sorgusu, bir "Su" sorgu ve "Heat" sorgusu gerçekleştirerek önlemek için, "alan" ile sonuçlarını sipariş ve ardından PHP ekranını ele verebilir ...

SELECT
    Field,
    Company,
    Phone,
    Website
FROM
    tblYourTable
ORDER BY
    Field

PHP döngü içinde, geçerli "Field" sekmeleri tutmak gerekir ve bu değişiklikleri yeni bir liste başlamak istiyorum. Örneğin:

$CurrentField = '';

... loop

if ($MyData->Field != $CurrentField) {
    $CurrentField = $MyData->Field;
    ....
}

... end loop

Bence var, ... bir diziye MySQL veri almak nasıl bildiğinizi varsayıyorum böylece olacaktır:

[0] {
    num => 1,
    field => "Gas",
    company => "abcd",
    phone => "123456789",
    website => "abcd.com"
    }
[1] ... (so on)

Sonra böyle bir döngü oluşturun:

foreach($data as $row) {
   $service = $row["field"]; //Water, Gas, etc...
   unset($row["field"]); //do not add this
   foreach($row as $key => $value) {
       $field[$service][$key][] = $value;
   }
}

Edilen dizisi gibi bir şey olacaktır:

$field["Gas"]["company"][0] = "abcd";
$field["Gas"]["company"][1] = "qrst";
$field["Water"]["company"][0] = "efgh";
...
$field["Gas"]["phone"][0] = "123456789";
$field["Gas"]["phone"][1] = "123789654";
$field["Water"]["phone"][0] = "987654321";
...

Bu şekilde daha sonra çıktıyı üretebilir:

foreach($field as $service => $infoarr) {
   echo $service."\n";
   foreach($infoarr as $info => $datarr) {
       foreach($datarr as $datum) {
          echo $datum."\t"; 
       }
       echo "\n";
   }
   echo "\n";
}

Teorik (denenmemiş) çıktısı:

Gas 
abcd qrst 
123456789 123789654 

Water 
efgh ...

I hope you find it useful... There should be a better way, but I didn't thought too much about it...