Olen aloittelija näissä tiedoston luvuissa, joten kaipaisin vähän avustusta.
Pitäisi saada luettua rivit yksitellen txt-tiedostosta koska nykyään tekee näin:
1: Joukkue 2: Ottelut 3: Voitot 4: Tasapelit 5: Tappiot 6: Pisteet
Tiedoston luku koodi on suoraan tuolta oppaasta. Ja näin siis nykyään tulostaa nuo rivit.
//tulostetaan rivi rivinumeron kanssa echo "$i: $rivi"; //kasvatetaan laskuria $i++;
Selaimella varmaan katsot tulostusta? Katso sivun lähdekoodia, siellä rivitys saattaa mennä ihan oikein. Koska selain olettaa saavansa html-koodia, voit lisätä joka rivin jälkeen <br />, jotta selain rivittää haluamallasi tavalla. Tai sitten tulostat nuo rivit esim. <pre>-tagien väliin.
En tainnut selittää tarpeeksi hyvin koska pitäisi saada nuo rivit aivan erilleen koska ne pitäisi pistää taulukon otsikoiksi: <td id="otsikot">$_1</td> jne. Tällä hetkellä on siis näin: $_1 = 'Joukkue'; mutta tuohon Joukkueen tilalle pitäisi saada siis ensimmäinen rivi ja näin.
echo-rivi tällaiseksi:
echo "<td id=\"otsikot\">{$rivi}</td>";
ja $i:t voi ottaa pois.
Ei ihan tuolla toiminut mutta pikku muokkauksella toimi mutta sitten seurasi semmoinen ongelma, että tuli 6 riviä vaikka kaikki pitäisi saada yhdelle riville. Pitää varmaan muuttaa tallennus tapaa siten, että kaikki ovat samalla rivillä ja siitä sitten puretaan yksitellen.
Ilmeisesti fgets lukee riviin mukaan myös rivinvaihdon. Sen voi poistaa trim-funktiolla:
echo '<td id="otsikot">'. trim($rivi) .'</td>';
Ei mitään vaikutusta tuolla trim-komennolla..
Mistäs muuten mahtaa johtua kun kokeilin explode() ja implode() komentoja niin ruutuun tulee ilmestyy pelkkä Array tai Resource id #3?
Smuliii kirjoitti:
Ei mitään vaikutusta tuolla trim-komennolla..
Mistäs muuten mahtaa johtua kun kokeilin explode() ja implode() komentoja niin ruutuun tulee ilmestyy pelkkä Array tai Resource id #3?
Vaikee sanoa näkemättä koodia.
Yrität tulostaa taulukkoa tai resurssia etkä esimerkiksi taulukon solujen sisältöä.
Smuliii, kuten Newb sanoi, pastea koko koodi ja tulostus (selaimesta sivun lähdekoodi).
Smuliii kirjoitti:
Ei mitään vaikutusta tuolla trim-komennolla.
Riippuu siitä missä kohdin riviä se rivinvaihto on. Sopiiko tulostukseen paremmin
? Tällainen koodi riittää lukemiseen tiedostosta:
Auttamista varmaan helpottaisi eniten, jos kysyjä antaisi esimerkin tiedoston sisällöstä ja siitä, mitä pitäisi saada tulostettua. Esimerkiksi näin:
kysyjä kirjoitti:
lemmikit.txt:
kissa: Mirri koira: Musti kani: Maijahaluttu tulos:
<table> <thead> <tr><th>eläin</th><th>nimi</th></tr> </thead> <tbody> <tr><td>kissa</td><td>Mirri</td></tr> <tr><td>koira</td><td>Musti</td></tr> <tr><td>kani</td><td>Maija</td></tr> </tbody> </table>Nyt tulostaa:
<td>kissa: Mirri</td> <td>koira: Musti</td> <td>kani: Maija</td>Tulostan näin:
Itse ainakin tiedoston rivit käyn läpi näin
<?php $rivit = explode("\n", file_get_contents("tiedosto.txt")); for ($i=0;$i<=count($rivit)-1;$i++) { echo $rivit[$i] ."<br>";; } ?>
edit: tuohon seuraavaan viestiin. Muodostaako tuo "file" riveistä taulukon?
edit: Tarkennusta kysymykseen, luoko se taulukon jota voidaan sitten tarvittaessa pyöritellä miten halutaan?
tesmu kirjoitti:
Itse ainakin tiedoston rivit käyn läpi näin
$rivit = explode("\n", file_get_contents("tiedosto.txt"));
Eikös tuon tismalleen saman asian hoitaisi:
$rivit = file("tiedosto.txt");
?
Metabolixin ohjetta noudattaen tässä toivottavasti tarpeeksi selkeästi selitettynä missä tilanteessa ollaan ja mitä tavoitellaan:
tiedosto.txt:
Joukkue|Ottelut|Voitot|Tasapelit|Tappiot|Pisteet
haluttu tulos:
<table cellpadding="2" cellspacing="0" width="98%"> <tr><td id="otsikot" width="15%" colspan="2">Joukkue</td> <td id="otsikot" width="10%">Ottelut</td> <td id="otsikot" width="5%" align="center">Voitot</td> <td id="otsikot" width="5%" align="center">Tasapelit</td> <td id="otsikot" width="5%" align="center">Tappiot</td> <td id="otsikot" width="5%" align="center">Pisteet</td></tr> [..] </table>
nyt tulostaa:
Joukkue Ottelut Voitot Tasapelit Tappiot Pisteet
koodi:
<?php $erotus = " "; $rivit = explode("|", file_get_contents("tiedosto.txt")); for ($i=0;$i<=count($rivit)-1;$i++) { echo $rivit[$i] ."$erotus"; } ?>
Vielä pitäisi saada nuo omaksi muuttajikseen, jotta voisin tulostaa ne yksitellen minne tahdon.
Kannattaako tossa oikeasti erottaa eri kentät | -merkillä, vai kannattaisikos tuo data serialisoida, jolloin ton voisi suoraan tallentaa järkevään muotoon?
En vieläkään oikein ymmärrä, mitä tarkoittaa tämä "omiksi muuttujikseen". Taulukossahan ne ovat kaikki erikseen, ja voit tulostaa niitä yksitellen vaikka näin:
<?php echo $rivit[2]; // "Voitot" ?>
Haluamassasi tulostuksessa on mm. sellainen virhe, että id:n pitäisi olla uniikki eli dokumentissa ei saa olla useaa elementtiä, joilla on sama id. Ehkä tarkoitit attribuuttia class, näitä saa ja on tapanakin olla useampi.
Jos haluat eri sarakkeille erilaisia ominaisuuksia (esimerkiksi eri leveyden), voit vaikkapa tehdä funktion, joka tulostaa aina yhden rivin haluamallasi tavalla:
<?php function tulosta($tiedot) { list($joukkue, $ottelut, $voitot, $tasapelit, $tappiot, $pisteet) = $tiedot; echo "<tr>"; echo "<td class='joukkue'>$joukkue</td>"; echo "<td class='ottelut'>$ottelut</td>"; // Jne. echo "</tr>"; } $rivi = "JYP|5|3|1|1|7"; // oikeasti tiedostosta peräisin tulosta(explode("|", $rivi)); ?>
Mitä olen taas mahtanut ajatella kun lueskelen noita viestejäni.. no mutta joka tapauksessa homma toimii ja kiitokset siitä teille!
Pitää varmaan lukea ajatuksella tuo PHP-opas niin ei tarvitsisi näin helppoja tulla kyselemään. :P
Aihe on jo aika vanha, joten et voi enää vastata siihen.