Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Erotteleminen

Sivun loppuun

LL [22.12.2002 15:33:21]

#

Jooh, tulee liikaa ketjuja... Mutta asiaan: Koska en voi lukea manuaalia(englanniksi), niin pitää kysy asiat täältä. Olen katsonut muiden koodivinkkejä, mutta en oiken tajua mitenkä saisi tehtyä tämmöisen jutun:

Eli tiedostossa lukee "Late|Hyvät sivut"
Mitenkä saisi eroteltua nuo tekstit. Eli "Late" olisi muuttuja $nimi ja "Hyvät sivut" olisi muuttuja $kommentti.

Kiitos kaikille etukäteen(jos neuvotte).

snakari [22.12.2002 16:04:48]

#

$muuttuja="Late|Hyvät sivut";
$homma=explode("|", $muuttuja);
echo 'nimi: '. $homma[0] .'<br>';
echo 'viesti: '. $homma[1];

en oo ihan varma pitääkö exploden eteen pistää $ jos ei toimi, nii pistä.
ja opettele englantia.

LL [22.12.2002 16:27:31]

#

Opetellaan koko ajan...

Mutta ongelma(alan kyllästyä ongelmiin). Eli tuo "Late|Hyvät sivut" lukee tiedostossa. Kokeilin fopenilla ja freadella mutta ei toiminut. Apua?

trinit [22.12.2002 16:39:26]

#

lainaus:

Eli tuo "Late|Hyvät sivut" lukee tiedostossa. Kokeilin fopenilla ja freadella mutta ei toiminut. Apua?

Lue koko tiedosto taulukkoon file():llä. Tällöin taulukon yksi solu vastaa yhtä riviä tiedostosta (eli solu 0 = 1. rivi tiedostosta, solu 1 = 2. rivi tiedostosta jne).

Seuraavassa esimerkissä luetaan tiedosto $tiedosto taulukkoon file():llä, erotellaan ensimmäisestä rivistä tekstit explode:lla $tekstit taulukkoon ja tulostetaan se:

<?php
    $tiedosto = file("tiedoston_nimi");
    $tekstit = explode("|", $tiedosto[0]);

    echo "Nimi: " . $tekstit[0] . "<br>";
    echo "Kommentti: " . $tekstit[1];
?>

LL [22.12.2002 17:51:16]

#

Kiitos! Nyt toimii! Ehkä joskus saatte nähdä tuon tekemäni kommentti jutun.

LL [22.12.2002 18:09:51]

#

En jaksa perustaa tälle ongelmalle uutta ketjua. Noin, eli mitenkä saisi tämän lukemaan niin monta kommenttia kun tiedostossa on(yritin monin keinoin mutta ei taaskaan onnistunut):

<table width="600" border="0" cellspacing="1" cellpadding="1">
<tr>
<td width="100%" bgcolor="#ffcc00"><?php
$tiedosto = file("viestit.dat");
$tekstit = explode("|", $tiedosto[0]);
echo "Nimi: " . $tekstit[0] . "<br>";
?>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#ffffff"></td>
</tr>
</table>
<?php
    echo "<br>Kommentti:  $tekstit[1] <hr>";
?>

trinit [22.12.2002 20:27:37]

#

lainaus:

mitenkä saisi tämän lukemaan niin monta kommenttia kun tiedostossa on

Jahas, ettei vain onnistuisi jollakin silmukalla ;) ?

Korvaa tuo kirjoittamasi koodi kokonaan tällä:

<?php
    $tiedosto = file("viestit.dat");

    for ($i = 0; $i < count($tiedosto); $i++)
    {
        $tekstit = explode("|", $tiedosto[$i]);

        echo "<table width='600' border=0 cellspacing=1 cellpadding=1>\n";
        echo "  <tr>\n";
        echo "      <td width='100%' bgcolor='#ffcc00'>\n";
        echo "          Nimi: " . $tekstit[0] . "<br>\n";
        echo "      </td>\n";
        echo "  </tr>\n";
        echo "  <tr>\n";
        echo "      <td width='100%' bgcolor='#ffffff'></td>\n";
        echo "  </tr>\n";
        echo "</table>\n";

        echo "<br>Kommentti: " . $tekstit[1] . "<hr>";
    }
?>

PS. Koodilistauksissa voisit käyttää myös sisennyksiä.

edit: Oleellinen virhe korjattu listauksesta

LL [22.12.2002 21:08:22]

#

Kiitos. Ja anteeksi tietämättömyyttäni, mutta mikä on sisennys?

LL [22.12.2002 21:13:06]

#

Ei toimi! Tulostaa vain ensimmäisen viestin.

Antti Laaksonen [22.12.2002 21:27:23]

#

lainaus:

Ja anteeksi tietämättömyyttäni, mutta mikä on sisennys?

Sisentäminen on koodin muotoilua, jossa lauserakenteiden välisten rivien alkuun jätetään muutama merkki tyhjää verrattuna edelliseen tasoon. Tämä parantaa huomattavasti koodin luettavuutta. Esimerkki:

//sisentämätön koodi
for ($i=1;$i<100;$i++) {
if ($i % 4 = 0) {
echo $i;
}
}

//sisennetty koodi
for ($i=1;$i<100;$i++) {
    if ($i % 4 = 0) {
        echo $i;
    }
}

trinit [22.12.2002 21:28:25]

#

lainaus:

Ei toimi! Tulostaa vain ensimmäisen viestin.

Ja miten niin? Juuri äsken sen testasin ja ihan hyvin toimi. Testasin sitä tällaisella viestit.dat tiedostolla:

Nimi 1|Kommentti 1
Nimi 2|Kommentti 2
Nimi 3|Kommentti 3
Nimi 4|Kommentti 4

Oletko nyt ihan varma, että siellä omassasi viestit.dat tiedostossa on useampi rivi kuin se yksi ensimmäinen viesti?

LL [22.12.2002 21:54:51]

#

Hetkinen, kun ohjelma tallentaa tiedostoa, niin mitenkä se voisi tehdä rivinvaihdon.

Minun viestit.dat on tällainen:

Nimi 1|Kommentti 1|Nimi 2|Kommentti 2 jne...

LL [22.12.2002 22:08:09]

#

Sain itse toimimaan. Kiitos kuitenkin avusta.

LL [22.12.2002 22:10:27]

#

Eikun en saanutkaan. Kokeilin \n juttua mutta silti ne tulee samalle riville. Olisiko apua?

snakari [23.12.2002 12:56:53]

#

$uusirivi="\n";
eli uuden rivin saat \nllä.

thefox [23.12.2002 14:41:01]

#

Jos notepadillä katselet niin se voi tosiaan näyttää että ne olisivat samalla rivillä, koska PHP tunkee (ainakin unix-pohjaisilla) sinne unix-rivinvaihdon, jota notepad ei syystä tai toisesta osaa näyttää.
Ja koeta nyt hyvä ihminen jotain opetella ja kokeilla omin konstein, ei täällä nyt sentään mitään koodipalvelua pidetä.

trinit [23.12.2002 16:10:34]

#

lainaus:

Kokeilin \n juttua mutta silti ne tulee samalle riville. Olisiko apua?

Apua tietenkin löytyisi PHP:n manuaaleista, mutta... vastataan nyt vielä. \n on pelkkä "linefeed" joka ei yksinään tee rivinvaihtoa vaan se tarvitsee kaverikseen "carriage return" merkin \r. Kyseisten merkkien ASCII koodit ovat 10 ja 13 (linefeed, carriage return) joten saman asian voisi ilmaista myös näin: chr(13) . chr(10)

Eli, muutat sitä riviä joka tallentaa nimen ja kommentin tiedostoon niin, että rivien kaksi viimeistä merkkiä ovat chr(13) ja chr(10). Esimerkki:

...
    fwrite($ff, $nimi . "|" . $kommentti . chr(13) . chr(10));
...

thefox [23.12.2002 19:00:13]

#

Riippuu miten sen ajattelee, unix-koneissa pelkkä \n riittää rivinvaihdoksi, mutta Windows (tai DOS) -koneissa ei. PHP:n kanssa kumpaisenkin rivinvaihtotyypin pitäisi olla yhteensopivia.

trinit [23.12.2002 21:56:14]

#

lainaus:

Riippuu miten sen ajattelee, unix-koneissa pelkkä \n riittää rivinvaihdoksi, mutta Windows (tai DOS) -koneissa ei. PHP:n kanssa kumpaisenkin rivinvaihtotyypin pitäisi olla yhteensopivia.

No joo, niihän se on. Itse olen aina käyttänyt varmuuden vuoksi CrLf merkkejä kun on pitänyt saada tiedostoon rivinvaihto.


Sivun alkuun

Vastaus

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

Tietoa sivustosta