Ongelma on seuraavanlainen.
Mikä koodi että ohjelma tulostaa esim. 5 ensimmäistä riviä vain.
Jos sulla ei jo oo nuo rivit taulukossa, laita ne sellaseen. Tee looppi ja tulosta taulukosta elementit 0-4.
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?
Siis onko sulla jo tommonen ohjelma, vai haluuts et me tehään se sulle?
$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.
Höh, olinpa hidas.
Pilko tuo explodella käyttäen erottimena uutta riviä ("\n" tai "\r\n") ja for-loopilla ne sitte ulos.
Ei ymmärrä, eikä osaa vielä kovin hyvin tätä PHP-hommaa.
Voisikko kertoa vähän tarkemmin.
Ellet tota ymmärrä, et ymmärtäis vaikka kertoisin. Lukaise opas.
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>
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ä:
Kiitos...
Nyt se tulostaa viestin perään 5 tyhjää riviä.
Kun se pitäisi tulostaa vain 5 ensimmäistä riviä tekstistä.
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>
Tulosta noita ylläolevan kaltaisessa loopissa maksimissaan sen viis kappaletta.
Tuo ylläoleva looppi ei toimi.
Jospa toimisi näin:
Toi $viesti = NULL; tyhjentää viestin. sivulle ei tulostu mitään.
Mutta jos et huomannut, niin sen jälkeen siihen liitetään viisi riviä.
Opetelkaa ihmiset joskus debugaamaan itse tuollaisia lyhyitä skriptejä.
Edelleen se tulostaa ensin koko tekstin ja sitten viisi tyhjää riviä.
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>
<?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
faaraot kirjoitti:
Please Ohjelmointiputka, pimp my code!
:<
Jos $rivit[$i] on '0' niin se ei tulostu. Tuskin se nyt tässä taitaa kuitenkaan haitata.
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.
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
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ä
No onko sulla nyt edes ne rivit siellä "\n"-merkeillä erotettuna vai tarkoitatko kenties html-rivinvaihtoa, eli <br />-tagia?
Nyt sain jotenkin taas pelaamaan, mutta näkyy vain yksi kirjain.
Juttu on sulla stringinä. Tee toka array explodella siitä jutusta, josta tulostuu vain yksi kirjain.
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ä...
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.
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.
Nyt sain pelaamaan. Kiitos kaikille.
pimp my code XD *reps* eiköhän aloteta oma tv-sarja! :)
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.
#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 :)
Tostahan tulis hyvä wild compo assyille ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.