Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rivinumeron tulostus?

Sivun loppuun

TETRIS [11.05.2004 16:16:07]

#

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.

ajv [11.05.2004 19:50:45]

#

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>";
   }
}
?>

TETRIS [12.05.2004 15:17:49]

#

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?

T.M. [12.05.2004 15:20:48]

#

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.

tsuriga [12.05.2004 16:11:51]

#

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)

TETRIS [13.05.2004 20:34:19]

#

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

?>

ajv [13.05.2004 20:53:05]

#

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.

TETRIS [13.05.2004 21:47:43]

#

Loistavaa.... kiitoksia :)

T.M. [14.05.2004 18:24:15]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta