creAtiive Skrevet 18. august 2008 Del Skrevet 18. august 2008 (endret) av det som blir lagt til? $fo = fopen("$fil", "w+"); fwrite($fo, "\n\nNavn: $navn<br />Email: $email<br />Hilsen: $hilsen<br /><br />\n\n"); fclose($fo); Det er kun den hilsenen som blir lagt til som vises. Også erstattes den med eksisterende hilsen som allerede ligger i gjestebok.txt Hvordan kan jeg gjøre slik at jeg kan legge til fler hilsener, uten at noe blir borte ? _________ Hele koden: <?php $fil = "gjestebok.txt"; if(isset($_POST['gb'])) { $navn = htmlspecialchars($_POST['navn_gb'], ENT_QUOTES); $email = htmlspecialchars($_POST['email_gb'], ENT_QUOTES); $hilsen = htmlspecialchars($_POST['hilsen_gb'], ENT_QUOTES); if($email) { $pattern = '/^[^@]+@[^\s\r\n\'";,@%]+$/'; if(!preg_match($pattern, trim($email))) { $error[1] = 'Emailen din er ugyldig!'; } } $fo = fopen("$fil", "w+"); fwrite($fo, "\n\nNavn: $navn<br />Email: $email<br />Hilsen: $hilsen<br /><br />\n\n"); fclose($fo); } include $fil; ?> * = <strong>må fylles ut!</strong><br /> <form action="" method="post"> * Ditt navn:<br /> <input type="text" name="navn_gb" /><br /> Din e-mail:<br /> <input type="text" name="email_gb" /><br /> * Hilsen:<br /> <textarea rows="4" cols="40" name="hilsen_gb"></textarea><br /> <input type="submit" name="gb" value=" Legg Til! " style="width:200px; height:30px;" /> <input type="reset" value=" Avbryt! " /> </form> Endret 18. august 2008 av creAtiive Lenke til kommentar
Alex Moran Skrevet 18. august 2008 Del Skrevet 18. august 2008 Dropp fwrite-sulamitten og bruk file_put_contents() med FILE_APPEND flagget. Har du ikke PHP5, så skaff deg det. Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 (endret) Dropp fwrite-sulamitten og bruk file_put_contents() med FILE_APPEND flagget. Har du ikke PHP5, så skaff deg det. Har PHP 5.2.6. Erstatte fwrite med file_put_contents ? Hvordan bruker jeg "flagg" ? Endret 18. august 2008 av creAtiive Lenke til kommentar
Alex Moran Skrevet 18. august 2008 Del Skrevet 18. august 2008 Står i manualen. $fo = fopen("$fil", "w+"); fwrite($fo, "\n\nNavn: $navn<br />Email: $email<br />Hilsen: $hilsen<br /><br />\n\n"); fclose($fo); Erstatt med: file_put_contents($fil, "\n\nNavn: $navn<br />Email: $email<br />Hilsen: $hilsen<br /><br />\n\n", FILE_APPEND); Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 (endret) Står i manualen. $fo = fopen("$fil", "w+"); fwrite($fo, "\n\nNavn: $navn<br />Email: $email<br />Hilsen: $hilsen<br /><br />\n\n"); fclose($fo); Erstatt med: file_put_contents($fil, "\n\nNavn: $navn<br />Email: $email<br />Hilsen: $hilsen<br /><br />\n\n", FILE_APPEND); Takk, ja! Skal se i manualen. Fungerte nå, men det nyesteinnleget kom ikke øverst nå heller :s Hvor kan jeg sette inn w+ ? Endret 18. august 2008 av creAtiive Lenke til kommentar
Alex Moran Skrevet 18. august 2008 Del Skrevet 18. august 2008 (endret) Det er fordi du har to newlines før innlegget. Du trenger i grunn bare èn newline på enden av innlegget. Du trenger ikke w+. Endret 18. august 2008 av Josh Homme Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 Det er fordi du har to newlines før innlegget. Du trenger i grunn bare èn newline på enden av innlegget. Du trenger ikke w+. Den gamleste innlegget er øverst.. De nye kommer under. Det skal være omvendt.. Med dette: file_put_contents($fil, "Navn: $navn<br />Email: $email<br />Hilsen: $hilsen<br />", FILE_APPEND); Hva i koden skal jeg gjøre om ? Lenke til kommentar
Alex Moran Skrevet 18. august 2008 Del Skrevet 18. august 2008 Samma det vel. Du kan hente innleggene med file() og bruke array_reverse() Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 (endret) Samma det vel. Du kan hente innleggene med file() og bruke array_reverse() Kan du hjelpe meg litt på vei ? Skrevet dette: $hent = file(array_reverse("gjestebok.txt"));//(TOPPEN) echo $hent;// (NEDERST DER JEG INKLUDERTE) Men fungerer ikke Endret 18. august 2008 av creAtiive Lenke til kommentar
Alex Moran Skrevet 18. august 2008 Del Skrevet 18. august 2008 (endret) 1. Du bruker funksjone i feil rekkefølge. 2. Du kan ikke printe arrays som strenger. <?php $file = file('gjestebok.txt'); $lines = array_reverse($file); foreach ($lines as $entry) { echo $entry; } echo 'There are '.count($file).' entries.'; Endret 18. august 2008 av Josh Homme Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 (endret) 1. Du bruker funksjone i feil rekkefølge.2. Du kan ikke printe arrays som strenger. <?php $file = file('gjestebok.txt'); $lines = array_reverse($file); foreach ($lines as $entry) { echo $entry; } echo 'There are '.count($file).' entries.'; Tusen Takk Et spørsmål til: Hvorfor kan jeg ikke ha if(); i denne? file_put_contents($fil, "\n\n<a href=\"mailto:'" . if(!$email) { echo "test"; } . "'\">Navn:</a> $navn<br />Hilsen: $hilsen<br /><br />\n\n", FILE_APPEND); Endret 18. august 2008 av creAtiive Lenke til kommentar
Alex Moran Skrevet 18. august 2008 Del Skrevet 18. august 2008 Bruk short-if. Men bedre å ikke lagre html i tekstfilen, men heller lagre i et annet format uten noe formatering. Så kan du formatere som du vil når du henter ut. (explode()) Lenke til kommentar
Jonas Skrevet 18. august 2008 Del Skrevet 18. august 2008 Fordi en if-setning er ikke veldig inline-venlig. Gå til http://no.php.net/operators.comparison og se under Ternary Operator. Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 (endret) Fordi en if-setning er ikke veldig inline-venlig. Gå til http://no.php.net/operators.comparison og se under Ternary Operator. Ja, der sto det jo ikke stort. Bare noen echo setninger ? Endret 18. august 2008 av creAtiive Lenke til kommentar
Jonas Skrevet 18. august 2008 Del Skrevet 18. august 2008 Å herre.. Hvis du ikke en gang klarer å lese dokumentasjonen, så kanskje det er bedre å holde seg unna hele emne. The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE. Ternary Operators er en måte å evaluere uttrykk inline. Ta en nærmere titt. Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 Å herre.. Hvis du ikke en gang klarer å lese dokumentasjonen, så kanskje det er bedre å holde seg unna hele emne. The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE. Ternary Operators er en måte å evaluere uttrykk inline. Ta en nærmere titt. Jeg vet da ikke hvor jeg skal sette inn : og ? her: if(!$email) { echo "test"; } ?? Lenke til kommentar
Jonas Skrevet 18. august 2008 Del Skrevet 18. august 2008 echo ( $test ? 'test evaluate' : 'test doesn\'t evaluate' ); Lenke til kommentar
Epower Skrevet 18. august 2008 Del Skrevet 18. august 2008 (endret) (!$email ? "test" : "") -.- Endret 18. august 2008 av Eirikkkkk Lenke til kommentar
creAtiive Skrevet 18. august 2008 Forfatter Del Skrevet 18. august 2008 (!$email ? "test" : "") -.- Jepp Fungerte file_put_contents($fil, " Hilsen: $hilsen<br /> " . (!$email ? "" : "<a href=\"mailto:$email\">Send Mail</a><br />") . " Navn: $navn<br /> <br />\n\n", FILE_APPEND); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå