CSV szétbontása és adatok kiírása php-ben

Ez a téma lezárásra került a moderátor által. A lezárás oka: 1 t�ma - 1 k�rd�s
CSV szétbontása és adatok kiírása php-ben
2013-01-08T16:23:42+01:00
2013-01-09T03:01:01+01:00
2022-08-07T05:15:30+02:00
ggabor1978
Sziasztok!

Belebonyolódtam a PHP-be, bár ne tettem volna. Sajnos a több napi olvasás és próbálkozás csak még jobban összezavart....

Van egy árlistám (http://infolex.hu/csvletoltes) melyet meg tudtam oldani, hogy naponta letöltődjön a szerverre felülírva a régit. Ebből az árlistából kiíratom a lényeges adatokat a weboldalra, viszont ez egy rohadt hosszú lista. Próbálkoztam kereső beillesztéssel, de nem működik.
Az árlistában van 'kategoria1', ezek alapján a kategóriák alapján szeretném kiíratni az adatokat, de csak abban a kategóriában lévőket, illetve a készleten lévő és összes cikk szűkítéssel, ezt szeretném elérni legördülő menüvel. A legördülő menü a következőképpen kellene, hogy kinézzen:

<!doctype html> <html> <head> <meta charset="iso-8859-2"> <title>Untitled Document</title> <script type="text/javascript"> function MM_jumpMenuGo(objId,targ,restore){ //v9.0 var selObj = null; with (document) { if (getElementById) selObj = getElementById(objId); if (selObj) eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } } </script> </head> <body> <form name="form" id="form"> <select name="MegnevezÈs" id="MegnevezÈs"> <option>GEP</option> <option>ALP</option> <option>BIL</option> <option>ODD</option> <option>MOU</option> <option>MPD</option> <option>ELM</option> <option>HDS</option> <option>FOT</option> <option>SPK</option> <option>AUD</option> <option>NAS</option> <option>NET</option> <option>HAZ</option> <option>HZM</option> <option>CLR</option> <option>DSC</option> <option>JOY</option> <option>CAB</option> <option>ACC</option> <option>RAM</option> <option>MEM</option> <option>MCR</option> <option>HDD</option> <option>HDE</option> <option>SSD</option> <option>MED</option> <option>MOB</option> <option>MOD</option> <option>MON</option> <option>MP3</option> <option>NAV</option> <option>NOT</option> <option>NBA</option> <option>NBC</option> <option>BAG</option> <option>PRI</option> <option>PEN</option> <option>CPU</option> <option>PRO</option> <option>SCN</option> <option>SRV</option> <option>SOF</option> <option>UPS</option> <option>TPC</option> <option>PSU</option> <option>TEV</option> <option>TIN</option> <option>TUN</option> <option>SCR</option> <option>VGA</option> <option>CAM</option> <option>EGY</option> <option>1</option> </select> <select name="KÈszlet" id="KÈszlet"> <option>keszleten</option> <option>rendelheto</option> <option>osszes</option> </select> <input type="button" name="go_button2" id= "go_button2" value="KeresÈs" onClick="MM_jumpMenuGo('KÈszlet','parent',0)"> </form> </body> </html>

illetve ahogy megkapom az adatokat:

<?php $target = 'arlista.csv'; @$stream = file($target, FILE_IGNORE_NEW_LINES); if ($stream == False) { $error = error_get_last(); printf ("Nem sikerült megnyitni a fájlt!"); } else { printf ('<Table Border="1">'); for ($i=1;$stream[$i]!=False;$i++) { $line = explode (";", $stream[$i]); printf ('<Tr><Td>%s<Td>%s<Td Align="Right">%s', $line[1], $line[5], number_format ($line[2]*1.27,0,',',' ')); } printf ('</Table>'); } ?>

Nagyon hálás lennék, ha valaki ebben tudna segíteni. Nem lenne rossz, ha a kész kód lenne meg mondjuk a GEP kategóriára, mivel, ha még két oldalt el kell olvasnom PHP-ből, akkor lehet, hogy bezárnak...

Köszönöm!
Mutasd a teljes hozzászólást!

  • Ha kész kódot szeretnél, akkor átteszem a témát az állás rovatba!

    1. Preferált megoldás: importáld be az adatokat egy adatbázisba és onnan gond nélkül select-tel le tudod válogatni a neked szükséges adatokat.

    2. Ha a szerveren van text file-hoz odbc driver telepítve és összelőve a php-val, akkor annak segítségével közvetlenül a file-ból kérdezd le sql utasítással az adatokat.

    3. File és kezelő függvényekkel is operálhatsz, de azok hosszú távon nagyon lassúak lesznek.
    Mutasd a teljes hozzászólást!
  • 2+1. odbc híján mikor letöltöd/frissíted a helyi árlistát, importálhatod egy adatbázisba, ahonnan utána SQL lekérésekkel könnyedén tudsz hozzájutni a kért adatokhoz.
    Mutasd a teljes hozzászólást!
  • Ezt a megoldást írtam 1.-nek
    Mutasd a teljes hozzászólást!
  • Sajnos az állás rovatos lehetőség nem működik, nem tudok pénzt szánni rá (egy kényszermegoldás áldozataként kell evvel foglalkoznom)

    Próbáltam feltölteni adatbázisba, nem sok sikerrel. Vagy csak hibaüzenetek jelentek meg, ha felment, akkor nem szerepeltek lényeges adatok, mint pl az ár.

    Addig eljutottam, hogy a csv-t tömbökre kellene szétszednem....

    Mutasd a teljes hozzászólást!
  • Ha már ennyi javaslat lett, itt egy újabb, sql nélkül:
    Készítesz egy struktúrát, amibe betöltöd a filet (minden sor külön elemként, és a sorhoz tartozó értékek a sorokon belül külön elemekként, illetve esetleg ha szerveren támogatva van, memcachebe elrakod a struktúrát, hogy ne kelljen mindig minden php futtatáskor beolvasni a filet), szükítéskor ezt a listát olvasod végig, és csak a keresésnek megfelelő értékkel rendelkező sorokat adod vissza, a táblázat rendezhetőségét meg JS oldalon valami netről levett tablesorter kódra bízod.

    Bár nem ez a leghatékonyabb módszer.
    Mutasd a teljes hozzászólást!
  • Azt hiszem sok volt már a mai nap nekem.
    Mutasd a teljes hozzászólást!
  • Ez nagyjából érthetőnek tűnik.
    Mutasd a teljes hozzászólást!
  • Akkor mi lenne, ha az importáló kódot másolnád be, megadva a hibaüzenetet vagy hibajelenséget és azt, hogy hol merülnek fel a kódban és akkor segíthetnénk kijavítani!
    Mutasd a teljes hozzászólást!
  • Nem kóddal próbálkoztam, hanem phpMySQL-en keresztül, ami végre sikerült. Most keresnék php kódot, amivel a már szerveren lévő csv fájlt töltöm be az adatbázisba. Ezután jön majd az a rész, amikor a weboldalon lekérdezem a dolgot. Persze az ár az nettóban jön, tehát a kiíratásnál ezt is kell néznem. Ha van használható kód és megosztjátok velem, azt megköszönöm.
    Mutasd a teljes hozzászólást!
  • fgetcsv
    str_getcsv
    Az explode felejtős. Azt is kezeled, ha a delimiter előfordul valahol adatként?
    Ha letöltöd valahonnan, és lemented magadnak, azzal a lendülettel végig is olvashatod.
    Az említett két fügvény array-t ad vissza (értelemszerüen soronként kell meghívni).


    csv: //id;name;price;cat 1;valami;100;cs1 2;akármi;200;cs2 3;bizbasz;300;cs1 $fd = fopen('arlista.csv','r'); while (($line = fgetcsv($fd,0,';')!==false) { list($id,$name,$price,$cat) = $line; $sql = <<<EOF insert into arlista (id,name,price,cat) values({$id},"{$name}",{$price},"{$cat}") on duplicate key update price={$price} EOF; mysql_query($sql) or die($sql."<br>\n".mysql_error()); } fclose($fd);
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: 1 t�ma - 1 k�rd�s
abcd