Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rivien max. määrä. ongelma

Sivun loppuun

faaraot [13.01.2006 18:51:04]

#

Ongelma on seuraavanlainen.

Mikä koodi että ohjelma tulostaa esim. 5 ensimmäistä riviä vain.

Blaze [13.01.2006 18:54:42]

#

Jos sulla ei jo oo nuo rivit taulukossa, laita ne sellaseen. Tee looppi ja tulosta taulukosta elementit 0-4.

faaraot [13.01.2006 18:59:19]

#

Ohjelma hakee kirjoitetun tekstin, jonka se syöttää etusivulle. Haluaisin saada tekstistä vain 5 ensimmäistä riviä..

$viesti = $row['body'];
            $viesti = substr($viesti, 0, 320);

Tämmönen on rajaamassa kirjaimien määrää. Pitäis saada riveiksi.

Onko valmista koodia?

sooda [13.01.2006 19:02:00]

#

Siis onko sulla jo tommonen ohjelma, vai haluuts et me tehään se sulle?

faaraot [13.01.2006 19:03:15]

#

$viesti = $row['body'];
$viesti = substr($viesti, 0, 320);

Tämmönen on rajaamassa kirjaimien määrää. Pitäis saada että se tulostaa vain 5 ekaa riviä.

Ei ole valmista ohjelmaa. Pitäis saada semmonen.

sooda [13.01.2006 19:09:59]

#

Höh, olinpa hidas.

Pilko tuo explodella käyttäen erottimena uutta riviä ("\n" tai "\r\n") ja for-loopilla ne sitte ulos.

faaraot [13.01.2006 19:13:37]

#

Ei ymmärrä, eikä osaa vielä kovin hyvin tätä PHP-hommaa.
Voisikko kertoa vähän tarkemmin.

sooda [13.01.2006 19:24:34]

#

Ellet tota ymmärrä, et ymmärtäis vaikka kertoisin. Lukaise opas.

faaraot [13.01.2006 19:43:03]

#

Jos vain sais valmiit koodin pätkät niin onnistus.

<td colspan="3" bgcolor="' . $color['windowbg2'] . '" valign="top" weight="16" height="40" class="windowbg2">' . $viesti .  '</td>

ajv [14.01.2006 13:06:29]

#

Jos vain sais uuden auton ilmaseksi, niin vois heittää tuon ooppelin jorpakkoon.

No ok, sorrutaan nyt sitten ilmaiseen koodiin, kun kyse ei ole kuin muutamasta rivistä:

<?php
$rivit = explode("\n", $viesti);
$viesti = NULL;
for($i=0; $i<5; $i++)
   $viesti .= $rivit[$i]."\n";
?>

faaraot [14.01.2006 17:33:25]

#

Kiitos...

faaraot [15.01.2006 14:45:11]

#

Nyt se tulostaa viestin perään 5 tyhjää riviä.

Kun se pitäisi tulostaa vain 5 ensimmäistä riviä tekstistä.

faaraot [15.01.2006 18:27:29]

#

Miten tähän sais laitettua että max. rivien määrä on 5 kpl..

<td colspan="3" bgcolor="' . $color['windowbg2'] . '" valign="top" weight="16" height="40" class="windowbg2">' . $viesti . '</td>

Blaze [15.01.2006 18:34:07]

#

Tulosta noita ylläolevan kaltaisessa loopissa maksimissaan sen viis kappaletta.

faaraot [15.01.2006 18:44:58]

#

Tuo ylläoleva looppi ei toimi.

miiro [15.01.2006 18:47:46]

#

Jospa toimisi näin:

<?php
$rivit = explode("\n", $viesti);
$viesti = NULL;
for($i=0; $i<5; $i++) {
   $viesti .= $rivit[$i]."\n";
}
?>

faaraot [15.01.2006 18:50:04]

#

Toi $viesti = NULL; tyhjentää viestin. sivulle ei tulostu mitään.

Metabolix [15.01.2006 18:53:01]

#

Mutta jos et huomannut, niin sen jälkeen siihen liitetään viisi riviä.

Opetelkaa ihmiset joskus debugaamaan itse tuollaisia lyhyitä skriptejä.

faaraot [15.01.2006 19:07:44]

#

Edelleen se tulostaa ensin koko tekstin ja sitten viisi tyhjää riviä.

faaraot [15.01.2006 19:16:08]

#

Tässä koko homma...laittakaa pliis joku se pelamaan. Hermot menee. Tossa ei ole kaikkia koodeja, mutta tarvittavat kuitenkin.

            $viesti = $row['body'];
            $rivit = explode("\n", $viesti);
            $viesti = NULL;
            for($i=0; $i<5; $i++) {
            $viesti .= $rivit[$i]."\n";
}


echo '
						<td colspan="3" bgcolor="' . $color['windowbg2'] . '" valign="top" weight="16" height="40" class="windowbg2">' . $viesti .  '</td>

makas [15.01.2006 19:20:37]

#

<?php
$viesti = "
tekstiä
ja
lisää
nyt
loppu";

$rivit = explode("\n", $viesti);

for($i=0; $i<5; $i++) {
if (!empty($rivit[$i]))
{
   $viesti = $rivit[$i]."\n";
   echo "$viesti<br> ";}
}
?>

Oisko tuosta jotain apua? :D

tsuriga [15.01.2006 19:24:50]

#

faaraot kirjoitti:

Please Ohjelmointiputka, pimp my code!

:<
Jos $rivit[$i] on '0' niin se ei tulostu. Tuskin se nyt tässä taitaa kuitenkaan haitata.

faaraot [15.01.2006 19:30:18]

#

Toi on jo parempi. Kiitos siitä. Mutta ongelmana on se että, sivu hakee 10 viimeisintä kirjoitusta. Koodin pitäisi näyttää kirjoituksista vain 5 ekaa riviä. Nyt kun tuon laittoa näkyy vain 5 viestiä ja jokaisessa sama teksti.

makas [15.01.2006 19:42:59]

#

Pitää tehä toinen for silimukka, joka käy läpi ne 10 viimeistä viestiä, ja sen for silimukan sisälle tuo 5 rivin silimukka... :D

faaraot [15.01.2006 19:51:32]

#

Voinko lähettää jollekkin ton koodin pätkän ja jos kehtais laittaa kuntoon. Ei prk onnistu multa.

Onko tämmöstä vastaavaa koodia olemassa, joka määriitää rivit.

$viesti = substr($viesti, 0, 320); //tämä näyttää max. 320 merkkiä

ajv [15.01.2006 20:04:48]

#

No onko sulla nyt edes ne rivit siellä "\n"-merkeillä erotettuna vai tarkoitatko kenties html-rivinvaihtoa, eli <br />-tagia?

faaraot [15.01.2006 20:12:04]

#

Nyt sain jotenkin taas pelaamaan, mutta näkyy vain yksi kirjain.

pistemies [15.01.2006 23:46:12]

#

Juttu on sulla stringinä. Tee toka array explodella siitä jutusta, josta tulostuu vain yksi kirjain.

ajv [16.01.2006 00:01:42]

#

Kysyn edelleen, että onko sulla noi rivinvaihdot html-rivinvaihtoja?
Nimittäin,

echo '
<td colspan="3" bgcolor="' . $color['windowbg2'] . '" valign="top" weight="16" height="40" class="windowbg2">' . $viesti . '</td>

niin eipä tuossa näytetä muutettavan noita rivinvaihtoja html:ksi.

Vai yritätkö rajoittaa ne rivit viiteen, jotka automaattisesti syntyy, kun selain rivittää tekstin, joka ei mahdu soluun?

Vai tulostetaanko tuo solu jo itsessään jonkulaisessa loopissa ja haluatkin itseasiassa rajoittaa taulukon rivien määrää jolloin siis ratkaisu piilee aivan jossain muualla...?

Aargh. Tää on kun opettaisi kädetöntä lasta pyyhkimään perseensä...

pistemies [16.01.2006 15:01:16]

#

Ilmeisesti sinulla ei ole lainkaan rivinvaihtoja vaan pelkkä merkkijono, joka html-taulukossa tulostuu riveiksi.
Sinun pitäisi nyt saada selville, montako merkkiä kullekkin riville mahtuu tulostumaan ja kertoa se viidellä.
Laitoin tässä esimerkin ihan havaintotaulukon kera.

<?php
$row['body']="tekstiä ja tekstiä.. mmm..";
$viesti = $row['body'];
$viesti = substr($viesti, 0, 320);
echo "<table width=570><tr><td>";
      $full=strlen($viesti); // lasketaan tavut
      $max=250; // maksimimäärä tavuja 5 x 50 merkkiä
      if($full >$max) // jos tavuja on enemmän kuin maksimi
       {
       $min=$full-$max;
         }
         else // jos tavuja on vähemmän kuin maksimi
          {
         $min=0;
          }
        $submin=strlen($viesti)-$min; // vähennetään ylimenevät tavut

        for($i=0;$i<$submin;$i++) {
       echo $viesti[$i];
   }
   echo "...";
echo "</td></tr></table>";
?>

Edit: Muuttamalla tuota max-tavumäärää ja testaamalla näet, mikä on sopiva tavumäärä, jotta tulostuu viisi riviä. Tämäkään ei tietenkään ole täydellinen, sillä on mahdollista, että tuo maksimitavumäärä tulee täyteen juuri keskellä sanaa. Sillä laitoin tuohon loppuun nuo kolme pistettä, josta tietää, että merkkijono vielä jatkuu.

faaraot [18.01.2006 13:31:43]

#

Tuo viimeinen oli todella hyvä. Mutta, jälleen kerran :)

Hokasin nyt kuten "ajv" kyseli että, olenko erotellut viestissä rivejä. Eihän niitä ole. Mutta jos erottelisin ekat viisi riviä. Ohjelma hakis sitten ne viisi ekaa riviä ja tulostaisi ne etusivulle. Uskon että se ratkaisi ongelmani.


Voisko sitä laitta jotenkin muotoon, IF // jos on "rivinvaihto "<\p>, THEN <\n>
ja maksimi rivien määrä jotenkin 5 kpl.

faaraot [19.01.2006 00:03:13]

#

Nyt sain pelaamaan. Kiitos kaikille.

T.M. [19.01.2006 00:14:43]

#

pimp my code XD *reps* eiköhän aloteta oma tv-sarja! :)

tsuriga [19.01.2006 02:59:42]

#

Haha eiko Putkaan osio, jonne vois kerran viikossa käyttäjät lähetellä omia koodipätkiään, joista sitten valitaan hirveimmät purkat mitä maa päällään kantaa ja tuunataan niistä irkkiselostuksien kanssa Ohjelmointiputkan koodivarikolla optimoituja, selkeitä sekä toimivia kokonaisuuksia. Oisko etes hitti ku esmes lauantaina ohjelmassa olis kello 18-reikäleipä Tuunaustuokio. Ja joka jaksolle topickiin joku nimi tyyliin "ZeBen sotkuinen vieraskirja". viznutti ite koodiporukan pääjehuna.

Blaze [19.01.2006 08:22:29]

#

#ohjelmointiputka kirjoitti:

03:02 < tsuriga> hoho Blaze_
03:03 < tsuriga> https://www.ohjelmointiputka.net/keskustelu/11134-rivien-max-määrä-ongelma
vetää juonnot

"Hoho, welcome to the show, I'm your host for the show, b to the l Blaze. Watch as today the 1337 guys at IRC transform this piece of crap guestbook into a real beauty!"

"Haha, look at this for loop! What the hell was the author thinking?! Okay, let's knock the door, he has no idea; I'm about to pimp his code, yo!"

"When ZeBe's guestbook first came here, it looked like it had been sewn together by a bunch of incompetent monkeys. I mean, it barely held together with all that bubble-gum! But the guys here at #ohjelmointiputka took it apart and made it not only work, but shine! Your code is now officially pimped!"

Täytyy myöntää, tuosta vois saaja hauskan :)

sooda [19.01.2006 10:03:51]

#

Tostahan tulis hyvä wild compo assyille ;)


Sivun alkuun

Vastaus

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

Tietoa sivustosta