Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: reverse -pulma php:ssa

Sivun loppuun

Rope [01.12.2011 06:57:33]

#

Hei.

Oiskos teist apua täs mun ongelmas.
Eli tämmöne juttu olis ku nuo kommentit tallentuu väärin päin, eli haluaisin että ne tallentuisivat laskevasti, eli että uusin ensimmäisenä ja sitä rataa.

Olen yrittäny array_reverseä, mut heikoin tuloksin. Aina tuo koodi rikkoutuu tai ei toimi. Esim usein se tulostaa esille numeroit ja "array". Voiskos joku opastaa mites täs tulis toimii.

Tuo "echo $tulosta;" tulostaa tekstit esille.

//tiedot.txt:hen aletaan syöttämään uusia kommenttitietoja.
//tallennetaan päivämäärä, sijainti eli itäinen tai läntinen osa,
//tornin numero (tornit on numeroitu itä ja länsi erikseen, jolloin
//niiden tunnistaminen on helpompaa
				$filu=fopen("../kartta3/tiedot2.txt","a");
				fputs($filu, date("d.m.y"));
				fputs($filu, '<br />');
				fputs($filu, $sijainti);
				fputs($filu, $torni);
				fputs($filu, '<br />');
				fputs($filu, '<br />');

//$kommentti on kommenttikentän tekstit, johon rivin vaihto pitäisi saada
//p on solujen muuttuja
//nl2br:llä saadaan rivinvaihdot
//echo '>>' . $kommentti . '<<';
				$kommentti = nl2br($kommentti);
				fwrite($filu,$kommentti);

				fputs($filu, '<br />');
				fputs($filu, '<hr>');
				fclose($filu);
			}
		}
//Tulostetaan kommentin tiedot tiedostosta tekstikenttään, selaimeen näkyville.
	  	 $tulostus=fopen("../kartta3/tiedot2.txt","r");
		 $tulosta = fread( $tulostus,   filesize("../kartta3/tiedot2.txt"));
		 echo $tulosta;

Lebe80 [01.12.2011 09:17:59]

#

Koska $tulosta -muuttuja on taulukko, niin sitä ei voikaan tulostaa vain yhdellä "echolla", eli yhdistä vaikkapa taulukko implodella merkkijonoksi, tai tulosta rivit for -loopilla.

Grez [01.12.2011 09:34:15]

#

Onhan php:ssä toki esim print_r joka tulostaa muuttujan sisällön "ihmisluettavassa" muodossa.

Eri asia sitten, onko print_r($tulosta) sellaisessa muodossa kuin haluttaisiin.

Lebe80 [01.12.2011 09:48:59]

#

Grez kirjoitti:

Eri asia sitten, onko print_r($tulosta) sellaisessa muodossa kuin haluttaisiin.

Veikkaisin, ettei tätä juuri haeta, kun tekstin mukaan tulostetaan "karttaa".

jlaire [01.12.2011 10:39:54]

#

Lebe80 kirjoitti:

Koska $tulosta -muuttuja on taulukko

fread palauttaa kylläkin merkkijonon, toisin kuin file joka palauttaa rivit taulukossa.

Joudut ensin yhdistämään peräkkäiset rivit, jotka kuuluvat samaan kommenttiin. Sitten voit tulostaa ne käänteisessä järjestyksessä.

Et voi suoraan kääntää tiedoston rivien järjestystä, koska silloin jokainen kommentti tulostuisi "ylösalaisin".

Tuollaisen huteran tekstiformaatin käyttö on vähän hankalaa.

Rope [01.12.2011 10:54:19]

#

Lebe80 kirjoitti:

Koska $tulosta -muuttuja on taulukko

Jooh. Eli tässähän tulikin jo tietoa jonkin verran. Eli toivon mukaan ymmärsitte oikein, että haluan taulukon solut käänteisessä järjestyksessä. Tällähän hetkellä yksi solu sisältää yhden kommentin, toisaalta onko helpompaa tapaa kuin lähteä kikkailemaan tuommoisilla pitkillä koodeilla. Olisiko apuja siitä, mitä kannattaisi isä -googlelta kysyä.

jimi-kimi [01.12.2011 10:58:52]

#

https://www.php.net/manual/en/function.array-reverse.php

jlaire [01.12.2011 11:55:53]

#

jlaire kirjoitti:

Joudut ensin yhdistämään peräkkäiset rivit, jotka kuuluvat samaan kommenttiin.

Jotenkin oletin että tiedostoon kirjoitettaisiin rivinvaihtoja, mutta nyt tajusin että eihän koodissa näy sellaisia.

Tekstitiedostossa on siis vain yksi pitkä rivi jossa kaikki kommentit ovat peräkkäin? Helpointa olisi tallentaa tasan yksi kommentti joka riville, eli lisätä fputs($filu, "\n"); juuri ennen fclosea. Sitten tulostus onnistuisi näin:

echo implode("\n", array_reverse(file("../kartta3/tiedot2.txt")));

Sivun alkuun

Vastaus

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

Tietoa sivustosta