Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tietyn rivin loppuun kirjoittaminen

Sivun loppuun

d-hunter [22.07.2005 15:08:53]

#

(kyseessä on txt-tiedosto)
Eli minulla on tiedossa rivi, jonka perään pitäisi asia kirjoittaa, mutta en tiedä miten saan kirjoitettua haluamani rivun loppuun.

kayttaja-2791 [22.07.2005 15:21:09]

#

Lue tiedosto taulukkoon, päivitä rivi ja kirjoita tiedosto uudelleen.

Ja rivin päivityshän onnistuu vaikka näin (päivittää 6:nnen rivin loppuun tekstin " ja tässä uutta tietoa"):

$tiedosto['5'] = $tiedosto['5']." ja tässä uutta tietoa";

d-hunter [22.07.2005 16:49:43]

#

Mikä tässä on vielä pielessä? Tiedostoon tulostuu "Resource id #3".

$rivitin = muokattava rivi
txt/sivudata.txt = Kohdetiedosto

   for ($l = 0; $l < $size; $l++){
   $zekkaus = substr($l, 0, 10);
   if($zekkaus == $hiddeni){
   $rivitin = $l;
   break;
   }
   }
   $rivitin++;
	$tiedosto = fopen("txt/sivudata.txt", "w");
	$tiedosto['$rivitin'] = $tiedosto['$rivitin']." $vastaus";
   fwrite($tiedosto, $tiedosto);
   fclose($tiedosto);

Blaze [22.07.2005 18:22:50]

#

fopen palauttaa vain kahvan avoimeen tiedostoon, ei sen sisältöä. Haet funktiota file().

Juice [22.07.2005 18:23:45]

#

$filu = file("txt/sivudata.txt");
$filu[$rivitin] .= $vastaus;

EDIT: Hidas

d-hunter [22.07.2005 18:40:17]

#

Joo, nyt toi kohta on seuraavanlainen, mutta tulostaa tällä kertaa tiedostoon "array"

   $size = count("txt/sivudata.txt");
   for ($l = 0; $l < $size; $l++){
   $zekkaus = substr($l, 0, 10);
   if($zekkaus == $hiddeni){
   $rivitin = $l;
   break;
   }
   }
   $rivitin++;
$filu = file("txt/sivudata.txt");
$filu[$rivitin] .= $vastaus;
    $tiedosto = fopen("txt/sivudata.txt", "w");
   fwrite($tiedosto, $filu);
   fclose($tiedosto);

kayttaja-2791 [22.07.2005 18:51:22]

#

Sinulla pitää muuttaa taulukko (array) $filu string-muotoon ennen kirjoitusta. Vaikkapa funktiolla implode.

d-hunter [22.07.2005 21:39:58]

#

Vaihdoin vähän toimintaperiaatetta, mutta nyt tiedostoon ei tulostu mitään. Myös paremmat ideat toteuttamiseen otetaan vastaan.

if($ac == "vastaa"){
$vastaus = $_POST['vastaus'];
$hiddeni = $_POST['hiddeni'];
	$vastaus = str_replace("||", " ", $vastaus);
	$vastaus = htmlspecialchars($vastaus);
	$vastaus = str_replace(array("\r\n","\r","\n"),"<br />",$vastaus);
	$vastaus = wordwrap($vastaus, 35, " ", 1);
	$vastaus = stripslashes($vastaus);
   if(strlen($vastaus) > 2500) die("Tekstisi on liian pitkä (yli 2500 merkkiä)");
   if($vastaus == "") die("Puutteelliset tiedot");
$filu = file("txt/sivudata.txt");
$filu = implode($filu);
    $filu[$hiddeni] = $filu[$hiddeni]." $vastaus";
    $tiedosto = fopen("txt/sivudata.txt", "w");
   fwrite($tiedosto, $filu);
   fclose($tiedosto);

Ja lomake:

<FORM ACTION=\"?ac=vastaa\" METHOD=\"POST\">
ID: <INPUT TYPE=\"text\" name=\"hiddeni\" VALUE=\"$user_page\"><br>
<TEXTAREA NAME=\"vastaus\"></TEXTAREA><br>
<INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Lähetä\"></FORM>

kayttaja-2791 [22.07.2005 22:20:44]

#

Implode vaatii kaksi parametriä, ensinnäkin sen millä taulukko liitetään stringiksi ja toisekseen sen taulukon. Tosin se taitaa toimia myös yhdellä parametrillä, mutta se on virheellinen tapa ja tulostaa tekstit tässä tapauksessa yhdelle riville. Kokeile jotain vastaavaa:

$filu = file("txt/sivudata.txt");
$filu[$hiddeni] = $filu[$hiddeni]." $vastaus";
$filu = implode("\n", $filu);
$tiedosto = fopen("txt/sivudata.txt", "w");
fwrite($tiedosto, $filu);
fclose($tiedosto);

d-hunter [22.07.2005 22:51:46]

#

Nyt toimii ;)


Sivun alkuun

Vastaus

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

Tietoa sivustosta