PHP index

Csv fájl lekérdezése
és ABC rendezése.

Jelen példában,
autókereskedés csv nyílvántartást dolgozunk fel.

A csv kiterjesztésű fájl = Microsoft Excel vesszővel tagolt fájl, és az adatokat külön sorokban tárolja.

Megjegyzés:
A txt fájl is lehet vesszővel tagolt fájl, és az adatokat külön sorokban tárolhatja. (Minden sor végén ENTER)
Program, az ilyen txt fájlokat is úgy dolgozza fel, mint a csv fájlokat.


Lekérdezett fájl, adatai

Minta az eredeti beolvasandó, autókereskedés.csv fájl tartalmáról.
Teszteléshez készítsünk elő, egy csv vagy txt kiterjesztésű fájlt és másoljuk be a következő adatokat.
Ha, van már valamilyen csv kitarjesztésű fájlunk, akkor annak adatait is, lekérdezhetjük.
Márka,Szín,Megtett (KM),Ajtó,Ára
Toyota,Fehér,150043,4,"$4,000.00"
Honda,Piros,87899,4,"$5,000.00"
Toyota,Kék,32549,3,"$7,000.00"
BMW,Fekete,11179,5,"$22,000.00"
Nissan,Fehér,213095,4,"$3,500.00"
Toyota,Zöld,99213,4,"$4,500.00"
Honda,Kék,45698,4,"$7,500.00"
Honda,Kék,54738,4,"$7,000.00"
Toyota,Fehér,60000,4,"$6,250.00"
Nissan,Fehér,31600,4,"$9,700.00"


Program leírása, az oldal alján látható.


A vesszővel tagolt, csv vagy txt fájl lekérdezése és kiíratás táblázatban.

while ciklussal. Adatokat fgetcsv($mf) függvénnel elemezzük, és tömbbe íratjuk. --- Beolvasáshoz és további feldolgozáshoz is, jó.


Program eredménye, eredeti sorrendben.

MárkaSzínMegtett (KM)AjtóÁra
ToyotaFehér1500434$4,000.00
HondaPiros878994$5,000.00
ToyotaKék325493$7,000.00
BMWFekete111795$22,000.00
NissanFehér2130954$3,500.00
ToyotaZöld992134$4,500.00
HondaKék456984$7,500.00
HondaKék547384$7,000.00
ToyotaFehér600004$6,250.00
NissanFehér316004$9,700.00
 
Oszlopok száma = 5
Sorok száma = 11 -- Beleértve a fejléc adatok sorát is.



Rendezés ABC sorrendbe.

ABC sorrend.

0.
Márka
1.
Szín
2.
Megtett (KM)
3.
Ajtó
4.
Ára
BMW
Honda
Honda
Honda
Nissan
Nissan
Toyota
Toyota
Toyota
Toyota
Fekete
Piros
Kék
Kék
Fehér
Fehér
Fehér
Kék
Zöld
Fehér
11179
87899
45698
54738
213095
31600
150043
32549
99213
60000
5
4
4
4
4
4
4
3
4
4
$22,000.00
$5,000.00
$7,500.00
$7,000.00
$3,500.00
$9,700.00
$4,000.00
$7,000.00
$4,500.00
$6,250.00



Program leírása.

Lekérdezendő csv fájl útvonalának (URL-nek), azt a fájl címet írjuk be, melynél a lekérdezendő fájl, az adatokat tárolja.
- Ha csv fájl, akkor "autokereskedes.csv";
- Ha txt fájl, akkor "autokereskedes.txt"; ---- Itt, a txt fájl tartalmának meg kell egyezni, a Microsoft Excel vesszővel tagolt fájl formátummal, és az adatokat külön sorokban kell tárolnia.

<body>
<div id="container">

<?php

$munkafajl="autokereskedes.csv";              // Lekérdezendő csv fájl útvonala (URL)

$kdi=0;      // Kétdimanziós index érték.

// Munkafájl megnyitása, olvasásra (" r ")
$mf=fopen($munkafajl, "r");
	while (!feof ($mf))
	{
		$fgetcsvtomb[$kdi] = fgetcsv($mf);      $kdi++;
	}

fclose ($mf);             //  Megnyitott munkafájl bezárása.


//  ------ Táblázatba, kétdimenziós tömb, adatainak lekérdezése -----------------
echo '<table class="leirastabla">';
echo '<caption>Program eredménye, eredeti sorrendben.</caption>';

for($i=0; $i<$kdi; $i++) {
    if($fgetcsvtomb[$i] != '') {              // Itt, egyes idézőjelek vannak: '   '  
	    echo "<tr>";
                     foreach ($fgetcsvtomb[$i] as $index => $adat) 
                      {
                          if($i==0){ echo '<th>'.$adat.'</th>';}
                              else { echo '<td>'.$adat.'</td>'; }
                      }
	    echo "</tr>";
	}
}


$oszlopokszama=count($fgetcsvtomb[0]);

echo '<tr><td colspan="'.$kdi.'">&nbsp;</td></tr>';
	echo '<tr><td colspan="'.$kdi.'">Oszlopok száma = '.$oszlopokszama.'</td></tr>';
	echo '<tr><td colspan="'.$kdi.'">Sorok száma = '.$kdi.' -- Beleértve a fejléc adatok sorát is.</td></tr>';
echo '</table>';

// Vége a fájl adatok lekérdezésének és adatok táblázatba történő kiíratásnak.

echo '<br><hr><br>';

    // Továbbiak akkor kellenek, ha az adatokat "ABC" sorrendben kell kiíratni.

echo '<h2>Rendezés ABC sorrendbe.</h2>';

 // Adatok ABC szerinti rendezése.
 // $i azért egyenlő 1-el, mert a 0-ik elem, oszlopnevet tartalmaz, és nem adatot.
 // Lekérdezzük az adatokat és egy tetszőleges elnevezésű, új tömbbe íratjuk.
 // Az új tömböt rendezzük ABC-szerint, eredeti indexelés megtartásával.
 
   for($i=1; $i<$kdi; $i++) {
        if($fgetcsvtomb[$i] != '') { $eredeticsv[$i]=$fgetcsvtomb[$i][0]; }
   }

// ---------------------------------------------------------------------------
   asort($eredeticsv);   // Rendezés ABC-szerint, eredeti indexelés megtartásával.
   
// -- Az ABC rendezéshez szükséges index sorrend, tömbbe íratása. 
    $abci=1;
     foreach ($eredeticsv as $index => $adat)	 {  $abcindex[$abci]=$index;   $abci++; }
// ---------------------------------------------------------------------------

$indexh= count($abcindex);
$adatindexek=$indexh+1;
// --------------------------------------------------------------------------- 

echo '<table class="leirastabla"><caption>ABC sorrend.</caption>';
    // Fejléc, azaz, a th cellák adatainak kiíratása.
echo'<tr>';
    for ($fa=0; $fa<$oszlopokszama; $fa++)
       { $FejlecAdat=$fgetcsvtomb[0][$fa]; $csvfejlec[$fa]=$FejlecAdat; }

    foreach ($csvfejlec as $index => $adat)	{ echo '<th>'.$index.'.<br> '.$adat.'</th> '; }

echo'</tr>';

    // -----------------------------------------------------------
	
  // Adatok, azaz, a td cellák adatainak kiíratása, ABC sorrendben.

echo '<tr>';

    for ($oi=0; $oi<$oszlopokszama; $oi++)	   
     {
        echo '<td>';
                for($i=1; $i<$adatindexek; $i++) { $ri=$abcindex[$i]; echo $fgetcsvtomb[$ri][$oi].'<hr>'; }
        echo '</td>';
		
     }	
echo '</tr>';
echo '</table>';
?>


</div>
</body>