[ vatri @ 01.03.2008. 22:40 ] @
Napravio sam neki guest book gde se koment upisuju u kom.php fajl. Ono sto mene zanima je kako da kad upisem neki komentar on bude na prvom mjestu: evo stavio sam online ovo: http://nekretninebl.info/gb/ pa pogledajte o cemu je rijec

Evo i koda
Code:
<?php
$pod = $_POST['kom'];
$ime = $_POST['ime'];
$dat = "kom.php";
$datum = date("m.d.y");
$ud = fopen($dat, 'a+') or die("datoteka se ne moze otvoriti");
fwrite($ud, "Datum: ".$datum."<br>");
fwrite($ud,"Ime: ".$ime." <br>");
fwrite($ud,"Komentar:<br>".$pod);
fwrite($ud,"<hr>");

fclose($ud);
echo 'Vas komentar je upisan<br>Hvala! <p><a href=".">Nazad</a></p>';
?>


Molim pomoc ako neko zna

pozdrav i unaped hvala

edit: po mogucnosti bez bazi pod
[ mulaz @ 01.03.2008. 23:57 ] @
jedan ruzni workaround je, (ako radis na linuxu) da malo sa shell_exec prebacujes fajlove

znaci
Code:

mv kom.php temp.php
touch kom.php

onda upises tekst
i onda
Code:
cat temp.php >> kom.php
upi
[ Man-Wolf @ 02.03.2008. 00:48 ] @
Izgubih pola sata trazeci odgovor na tvoje pitanje :-)

I slaganjem nekih kockica dobio sam sledece:

1. Prebacis ceo fajl u niz
2. Upises novi text u dokument
3. Vratis text iz niza :-)

Odnosno:

Code:

<?php
$file = "Ime fajla.txt";


// Sad prvo iscitamo sve iz njega .....

$handle = fopen($file, 'r');
while (!feof($handle)) {
    $line[] = stream_get_line($handle, 1000000, "\n");
}
print_r($line);
fclose($handle);

// Sada upisemo novi text u njega .....

$handle = fopen($file, 'w');

fwrite($handle, "Novi text \n");

// A zatim vracamo stari text u njega


foreach($line as $k)
{
  fwrite($handle, $k."\n");
}

fclose($handle);


?>



Tested & Working :-)

[ vatri @ 02.03.2008. 23:23 ] @
@mulaz: ne radim na Linuxu ako mislis na moj OS, a ovo sto si ispisao ne kontam nista, pocetnik sam u PHP-u :S

@man-wolf:

Hvala za tvojih pola sata :)

Na localhostu mi radi a na serveru ne. Na localu mi izbaci ovo kad kliknem na submit dugme:

Code:

Array ( [0] => Ime: dsad
Komentar:
dsadIme: dsada
Komentar:
dsadasIme: Trece ime
Komentar:
Treci komentardj dsaldljaljsa d asdlj das jdsa dasdj daslj\'d aas\'ld a [1] => das lda\'jsIme: drugi
Komentar:
drugi komentarDatum:
Ime: boro
Komentar:
zadnji komentar za sad [2] => ) Vas komentar je upisan
Hvala!

Nazad


Ispise ovako i ja kliknem na nazad i sve bude fino upisano kako sam htio, medjutim na serveru izbaci

Fatal error: Call to undefined function: stream_get_line() in /home/triva/public_html/gb/dodaj.php on line 7

Mozes videti ovde to: http://nekretninebl.info/gb/

Evo koda datoteke salji.php pa vidi gdje sam pogrjesio :S
Code:

<?php
$pod = $_POST['kom'];
$ime = $_POST['ime'];
$dat = "ko.txt";
$ud = fopen($dat, 'r');
while (!feof($ud)){
$line[] = stream_get_line($ud, 1000000, "\n");
}
print_r($line);
fclose($ud);
$ud = fopen($dat, 'w');
fwrite($ud,"Ime: ".$ime." <br>");
fwrite($ud,"Komentar:<br>".$pod);
fwrite($ud,"<hr>");
foreach($line as $k)
{
fwrite($ud, $k."\n");
}

fclose($ud);
echo 'Vas komentar je upisan<br>Hvala! <p><a href=".">Nazad</a></p>';
?>

[ kelja @ 03.03.2008. 21:08 ] @
Na serveru imas php4 a ovo(stream_get_line) je php5 funkcija.
Morace ovo nekako drugacije.
Code:

<?php
$pod = $_POST['kom'];
$ime = $_POST['ime'];

$dat = "kom.php";
$datum = date("m.d.y");

$niz=file('kom.php');
$stringi=implode("",$niz);
//echo $stringi;
$stringi_start="Datum: $datum <br>\n
Ime: $ime <br>\n
Komentar:<br>$pod \n
<hr>";
$new_stringi=$stringi_start.$stringi;

$ud = fopen($dat, 'w') or die("datoteka se ne moze otvoriti");
fwrite($ud,$new_stringi);


fclose($ud);
echo 'Vas komentar je upisan<br>Hvala! <p><a href=".">Nazad</a></p>';
?>



[Ovu poruku je menjao kelja dana 03.03.2008. u 22:29 GMT+1]
[ vatri @ 03.03.2008. 22:06 ] @
Kelja hvala puno, a hvala i ostalima na pomoci

@kelja: ako ti nije problem da mi malo pojasnis sledecih par linija koda posto bi zelio da razumijem ovo, da znam sam napraviti. Mogao sam gotovu skriptu skinut pa sam ubacit ali....

Code:
$niz=file('kom.php');

$stringi=implode("",$niz);

$stringi_start="....

$new_stringi=$stringi_start.$stringi;
[ kelja @ 03.03.2008. 22:22 ] @
Naravno. :)
Funkcija file 'cita' fajl i pretvara ga u niz(jedan red->jedan clan niza).
U stvari, i nije bilo potrebe za njom, moze se sve i ovako uraditi:
Code:

$fp = fopen ("kom.php", "r");
$bytes = filesize('kom.php');
$stringi = fread($fp, $bytes);

Imam utisak da file radi malo brze...

Elem, cilj je da se sadrzaj fajla smesti u jedan string.
(Funkcija implode pretvara niz u string, ako koristis ovo gore, ne treba ti)
Taj string, nastao citanjem sadrzaja fajla smestamo u varijablu $stringi.

$stringi_start je varijabla koja sadrzi NOVI upis korisnika.

A $new_stringi je nova varijabla, nastala spajanjem NOvog upisa i starog sadrzaja. ($stringi_start.$stringi) - primecujes redosled!
Tacka se u php-u koristi za spajanje(konkatenacija, valjda to tako zovu programeri?) stringova.