Minulla on tällänen todella helppo (ainaki luulen niin) ongelma, mutta kun en saa onnistumaan. Tarkoitus olisi, että tuohon rivi_nro muuttujaan laitettaisiin rivin numero jolta rivi on tulostettu. Koodi näyttää tälläiselta :
<?php $tulostus = file("linkit.txt"); $tulostus = array_reverse($tulostus); foreach( $tulostus as $ok) $rivit = count($tulostus); if ($rivit != 0) { $rivit2 = $rivit - 1; $i = 0; while ($i <= $rivit2) { $tulosta = explode("|", $tulostus[$i]); echo "URL : $tulosta[0]<br>"; echo "Nimi : $tulosta[1]<br>"; echo "URL : $tulosta[2]<br>"; echo "Rivi : $rivi_nro<br><br><br>"; $rivi_nro++; $i++; } } ?>
edit : Koodia muokattu... nyt ongelmana on tuo tiedoston "väärinpäin" kääntö.. eli rivi numerot tulostuvat juuri väärin päin.
En testannu, mutta koitappa tuota.
<?php $tulostus = file("linkit.txt"); //$tulostus = array_reverse($tulostus); eipäs käännetäkkään //foreach( $tulostus as $ok) <=?? $rivit = count($tulostus); if ($rivit != 0){ $rivit2 = $rivit - 1; for($i=$rivit; $i >= 0; $i--){ $tulosta = explode("|", $tulostus[$i]); echo "URL : $tulosta[0]<br>"; echo "Nimi : $tulosta[1]<br>"; echo "URL : $tulosta[2]<br>"; echo "Rivi : $i<br><br><br>"; } } ?>
Joku bugaa vielä. Tiedosto on tämän näköinen :
urli1|nimi1|kuvaus1 urli2|nimi2|kuvaus2 urli3|nimi3|kuvaus3 urli4|nimi4|kuvaus4 urli5|nimi5|kuvaus5
...mutta tuo tulostaa :
URL : Nimi : URL : Rivi : 5 URL : urli5 Nimi : nimi5 URL : kuvaus5 Rivi : 4 URL : urli4 Nimi : nimi4 URL : kuvaus4 Rivi : 3 URL : urli3 Nimi : nimi3 URL : kuvaus3 Rivi : 2 URL : urli2 Nimi : nimi2 URL : kuvaus2 Rivi : 1 URL : urli1 Nimi : nimi1 URL : kuvaus1 Rivi : 0
eli tuo turha rivi tulostuu... mikä vikana?
Laita vaikkapa tarkistus joka tarkistaa onko rivillä asetettu esimerkiksi nimeä -> jos nimi on tyhjä, koko viestiä ei tulosteta.
Tällöin jää myös sivutuksen tuottamat tyhjät rivit huomioimatta.
Käytitkö tuota ajv:n pätkää? Jos näin niin
$rivit2 = $rivit - 1; tämä on turha ja sitten forissa laitapa $i=$rivit-1. ajv:n ajatuksena oli varmaanki käyttää tuota rivit2-muuttujaa tuossa forissa i:n lähtöarvona.
Ps. foreach tulee sanoista for each eli se käy läpi koko taulukon alkio kerrallaan. (viitaten alkuperäiseen koodiin)
Eikä! taas bugaa :
<?php $tulostus = file("linkit.txt"); //$tulostus = array_reverse($tulostus); eipäs käännetäkkään //foreach( $tulostus as $ok) <=?? $rivit = count($tulostus); if ($rivit != 0){ $rivit2 = $rivit - 1; for($i=$rivit; $i >= 0; $i--){ $tulosta = explode("|", $tulostus[$i]); } } elseif ($tulosta[0] == "" or $tulosta[1] == "" or $tulosta[2] == ""){ echo "URL : $tulosta[0]<br>"; echo "Nimi : $tulosta[1]<br>"; echo "URL : $tulosta[2]<br>"; echo "Rivi : $i<br><br><br>"; } else{ $i-- ?>
No nyt testattuna:
<?php $tulostus = file("linkit.txt"); //$tulostus = array_reverse($tulostus); eipäs käännetäkkään //foreach( $tulostus as $ok) <=?? $rivit = count($tulostus); if ($rivit != 0){ //ei tarvita: $rivit2 = $rivit - 1; for($i=$rivit; $i >= 0; $i--){ $tulosta = explode("|", $tulostus[$i]); //siis jos kaikki löytyy, niin tulostetaan if($tulosta[0] && $tulosta[1] && $tulosta[2]){ echo "URL : $tulosta[0]<br>"; echo "Nimi : $tulosta[1]<br>"; echo "URL : $tulosta[2]<br>"; echo "Rivi : $i<br><br><br>"; }//if }//for }//if /* turhaa... $i-- tapahtuu tuolla for-loopissa automaattisesti else{ $i-- */ ?>
edit:kooditagit pielessä
edit2: Niin ja jos esimerkiksi "Nimi" on nolla(0), niin tuo
if($tulosta[0] && $tulosta[1] && $tulosta[2]), antaa falsen.
Loistavaa.... kiitoksia :)
Suosittelen tarkistamaan vain ne kohdat, jotka ovat pakollisia viestin lähettämisessä.
Eli tuon URL:n tarkistamisen voit ottaa pois.
Ja kannattaa aina verrata tyhjään merkkijonoon noita muuttujia että onko ne asetettu vai ei. Koska jos laittaa nimekseen "0", niin tuo if($seppo)... kertoo että sitä ei ole asetettu, koska se on nolla.
Mutta kukapa laittaisi nimekseen "0", no onhan se turhaa tarkistaa noin, mutta säästyypä hermot sitten myöhemmin kun ihmettelee miksei ehtolause toimi niin kuin pitäisi.
Itse olen repinyt pääni monta kertaa juuri tuon nolla ongelman kanssa.
Tosin enää ei hermot hajoa, kun vertaan niitä aina tyhjään merkkijonoon :)
Edit: isset() funktio ei toimikkaan tuon sijasta, turha funktio tosiaankin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.