ugrás a tartalomhoz

Tabulátorral elválasztott szövegfájl kiiratása PHP-ben

Anonymous · 2006. Szep. 14. (Cs), 21.03
Sziasztok!
Van egy txt fájlom amiben a szavak \t-al vannak elválasztva,
ezt szeretném kiíratni a következő képen:

<?php
	$file = "asd.txt";

	if ( file_exists($file) ) {
		$fa = fopen($file, 'r');
		$sor = fgets($fa, 1024);

			$szoveg_tomb = explode("\t", $sor)

				for ( $i=0; $i < count($szoveg_tomb); $i++) {
					$tombszam = count($szoveg_tomb);
					print $tombszam[$i];
				}


		fclose($fa);

	}
?>
de ezt a hibát kapom:
Parse error: parse error, unexpected T_FOR a 10. sorban
mit rontok el?
előre is köszönök mindent!
 
1

Hianyzo karakter

Grandmaster · 2006. Szep. 14. (Cs), 21.25
Hianyzik a
$szoveg_tomb = explode("\t", $sor)
utan a pontos vesszo.
2

előtte nincs ;

pp · 2006. Szep. 14. (Cs), 21.31
Parse error-nál érdemes megnézni az előtte levő sorokat, hogy van-e a végükön pontosvessző.
 <?php $szoveg_tomb = explode("\t", $sor) ;?>
A program egyébként hibás, mert a for ciklus belsejében a $tombszam egy skalár változó (int), hisz a count függvény egy egész számot ad vissza. A rá következő sorban meg úgy kezeled, mint egy tömb. Ott te szerintem ezt akartad írni:
 <?php print $szoveg_tomb[$i] ?>
pp
3

igen

Anonymous · 2006. Szep. 14. (Cs), 22.54
igen igen erre rájöttem... miután a pontos veszőt kijavítotam, nem írt ki semmit és nem tudtam miért :) de köszi a segítséget de még mindig nem jo az az igazság...
tehát most így néz ki a progi:

<?php
	$file = "asd.txt";

	if ( file_exists($file) ) {
		$fa = fopen($file, 'r');
		$sor = fgets($fa, 1024);

			$szoveg_tomb = explode("\t", $sor);

				for ( $i=0; $i < count($szoveg_tomb); $i++) {
					$tombszam = $szoveg_tomb;
					print $tombszam[$i];
				}


		fclose($fa);

	}
?>
Deviszont ami a hiba, hogy nem jól olvassa ki a fájl tartalmát...
a fájl tartalma pl.:
Kiss\tJenö
Nagy\tBéla
Kovács\tSándor
a script ebből viszont csak a legelsőt olvassa ki... tehát a böngészőben a kimenet: KissJenö
mikor nekem az kéne hogy kiírja az öszeset egymás alát ugy ahogy a txt-ben van.
( jól tudom hogy így akkor minden egyes szót eltudok érni tömb elemként? )
meg amire még rájöttem hogy ha ékezet van benne akkor ilyen kockákat tesz a helyére és nem fut végig
Előre is köszi!
4

Egy ciklus segít a problémádon

KJoci · 2006. Szep. 14. (Cs), 23.00

<?php
    $file = "asd.txt";

    if ( file_exists($file) ) {
        $fa = fopen($file, 'r');
  
        while ($sor = fgets($fa, 1024)) {

            $szoveg_tomb = explode("\t", $sor);

                for ( $i=0; $i < count($szoveg_tomb); $i++) {
                    $tombszam = $szoveg_tomb;
                    print $tombszam[$i];
                }

        }
        fclose($fa);

    }
?>
Az ékezet helyetti kockák azok az eltérő kódolás miatt lehet (talán UTF8?), azt hiszem akkor volt nekem is ilyen, ebbe az esetbe iconv-vel tudod átkódolni az általad használt kódlapra és akkor mennie kell.
5

húú

Anonymous · 2006. Szep. 14. (Cs), 23.23
igen, ez jo is ( majdnem : ) mármint teljesen jo, csak még lenne egy kérdésem,
hogy lehet-e ugy hogy pl két tömb elemenként ujsorban jelenítse meg :))
probálgattam most de nemjötem rá :(
a másik:
az asd.txt tartalma:

Asrock P4I65G, Intel 865G, integrált vga, fsb800, DDR 12 696 Ft
Gigabyte GA-8VM800M, VIA P4M800, integrált VGA, AGP 14 214 Ft
Asus K8V-X SE s754, VIA K8T800, FSB800 DDR400 SATA AGP 13 786 Ft
Asus P5AD2-E, Intel925XE+ICH6, Dual-Core CPU, DDR2, PCI 27 048 Ft
Asus P5GDC PRO, s775 I915P 800FSB DUAL DDR/DDR2 PCI-X 25 254 Ft
Asus P5GPL-X SE Intel 915PL+ICH6, D-DDR, 6CH, PCI-X 19 182 Ft
Asus P5GV-MX, I915GV FSB800, integrált VGA, D-DDR,PCI-X 23 446 Ft

és a böngészőben meg így jeleníti meg:
http://www.p-pressz.hu/csv/proba.php

nagyon köszönöm a sok segítséget :)
6

Nyomás alatt gyakorol az ember ;)

pp · 2006. Szep. 15. (P), 07.36
Máris munkát vállaltál, vagy saját részre lesz? Ugye nem webáruházat írsz ;))

A probléma az, hogy nem gondolsz arra, hogy html kimenetet generálsz. Ekkor az új sorba kerülést csak a <br> tag beszúrásával tudsz elérni. (vagy még sokszáz más módon pl táblázat, div-ek, stb.) és nem árt a htmlspecialchars() függévnyt ráengedni a kiírt adatokra.

Ha ennyire kezdő az ember én javasolnám azt, hogy először a google-ba ( http://google.com ) keressen. pl a csv2html php kulcsszavakra a következőt találtam:

http://www.etomite.org/forums/index.php?showtopic=2103

Kész megoldást ne is várj. Ajánlom még a php manualt, és annak is a csv fájlokkal foglalkozó fejezetét (jééé van ilyen is? ;))

http://hu.php.net/manual/en/function.fgetcsv.php

Az fgets helyett használj tehát fgetcsv-t mert így megspórolsz egy explode-ot, valamint használhatsz a for helyett foreach függvényt. Arról se feledkezz meg, hogy bele kell tenned a <br>-ek kiíratását:

<?php
    $file = "asd.txt";

    if ( file_exists($file) ) {
        $fa = fopen($file, 'r');
  
        while ($sor = fgetcsv($fa,1024,"\t")) {
          foreach($sor as $elem){
            print $elem;
            print '<br>';
          }
        }
        fclose($fa);
    }
?>
vagy táblázatos kiíratás:

<?php
    $file = "asd.txt";

    if ( file_exists($file) ) {
        print '<table>';
        $fa = fopen($file, 'r');
  
        while ($sor = fgetcsv($fa,1024,"\t")) {
          print '<tr>';
          foreach($sor as $elem){
            print '<td>';
            print $elem;
            print '</td>';
          }
          print '</tr>';
        }
        fclose($fa);
        print '</table>';
    }
?>
pp
http://palocz.hu
7

második

Anonymous · 2006. Szep. 15. (P), 23.28
a másodikra gondoltam ien formában huu köszike szépen :) az az igazság hogy még tanulgatom a php-t.. és így nem minden megy :)
amugy nem webáruház lessz, hanem egyik ismim boltjának árlistát listzáná ki, hogy ne keljen neki mindig html-be szarakodni...( szivesség )
hát köszönöm szépen :)