creAtiive Skrevet 18. august 2008 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
Alex Moran Skrevet 18. august 2008 Skrevet 18. august 2008 Dropp fwrite-sulamitten og bruk file_put_contents() med FILE_APPEND flagget. Har du ikke PHP5, så skaff deg det.
creAtiive Skrevet 18. august 2008 Forfatter 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
Alex Moran Skrevet 18. august 2008 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);
creAtiive Skrevet 18. august 2008 Forfatter 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
Alex Moran Skrevet 18. august 2008 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
creAtiive Skrevet 18. august 2008 Forfatter 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 ?
Alex Moran Skrevet 18. august 2008 Skrevet 18. august 2008 Samma det vel. Du kan hente innleggene med file() og bruke array_reverse()
creAtiive Skrevet 18. august 2008 Forfatter 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
Alex Moran Skrevet 18. august 2008 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
creAtiive Skrevet 18. august 2008 Forfatter 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
Alex Moran Skrevet 18. august 2008 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())
Jonas Skrevet 18. august 2008 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.
creAtiive Skrevet 18. august 2008 Forfatter 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
Jonas Skrevet 18. august 2008 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.
creAtiive Skrevet 18. august 2008 Forfatter 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"; } ??
Jonas Skrevet 18. august 2008 Skrevet 18. august 2008 echo ( $test ? 'test evaluate' : 'test doesn\'t evaluate' );
Epower Skrevet 18. august 2008 Skrevet 18. august 2008 (endret) (!$email ? "test" : "") -.- Endret 18. august 2008 av Eirikkkkk
creAtiive Skrevet 18. august 2008 Forfatter 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);
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å