Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rivien lukua

Sivun loppuun

Smuliii [29.11.2008 19:31:12]

#

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++;

Chiman [29.11.2008 19:59:25]

#

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.

Smuliii [29.11.2008 20:12:59]

#

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.

Chiman [29.11.2008 20:59:08]

#

echo-rivi tällaiseksi:

echo "<td id=\"otsikot\">{$rivi}</td>";

ja $i:t voi ottaa pois.

Smuliii [29.11.2008 21:34:29]

#

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.

Chiman [29.11.2008 21:59:36]

#

Ilmeisesti fgets lukee riviin mukaan myös rivinvaihdon. Sen voi poistaa trim-funktiolla:

echo '<td id="otsikot">'. trim($rivi) .'</td>';

Smuliii [29.11.2008 22:13:28]

#

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?

Newb [29.11.2008 23:19:20]

#

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.

Metabolix [29.11.2008 23:37:47]

#

Yrität tulostaa taulukkoa tai resurssia etkä esimerkiksi taulukon solujen sisältöä.

<?php
$t = array("a", "b");
echo $t;    // "Array"
echo $t[0]; // "a"
?>

Chiman [29.11.2008 23:43:34]

#

Smuliii, kuten Newb sanoi, pastea koko koodi ja tulostus (selaimesta sivun lähdekoodi).

ville-v [30.11.2008 13:15:44]

#

Smuliii kirjoitti:

Ei mitään vaikutusta tuolla trim-komennolla.

Riippuu siitä missä kohdin riviä se rivinvaihto on. Sopiiko tulostukseen paremmin

echo trim('<td id="otsikot">'. nl2br($rivi) .'</td>');

? Tällainen koodi riittää lukemiseen tiedostosta:

<?php
$tiedosto = file("tiedosto.txt", FILE_IGNORE_NEW_LINES);
for($i = 0; $i < count($tiedosto); $i++){
    // Tai miten sitten haluatkaan tulostaa
    echo $i . ': ' . $tiedosto[$i];
}
?>

Metabolix [30.11.2008 13:59:25]

#

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: Maija

haluttu 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:

foreach (file("lemmikit.txt") as $f) {
  echo "<td>", trim($f), "</td>\n";
}

tesmu [30.11.2008 16:34:18]

#

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?

TsaTsaTsaa [30.11.2008 16:37:52]

#

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");

?

Smuliii [30.11.2008 17:40:39]

#

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.

Lebe80 [30.11.2008 17:44:44]

#

Kannattaako tossa oikeasti erottaa eri kentät | -merkillä, vai kannattaisikos tuo data serialisoida, jolloin ton voisi suoraan tallentaa järkevään muotoon?

Metabolix [30.11.2008 18:16:53]

#

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));
?>

Smuliii [30.11.2008 19:20:34]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta