Gå til innhold

fwrite skriver dobbelt...


Anbefalte innlegg

Hei

 

Jeg har "laget"(hentet fra andre er vel riktigere å si) en side hvor jeg kan laste opp en fil og når jeg trykker upload og dermed kommer til en annen side så skriver den nye siden en liten tekst til en fil på servern. ganske enkelt prinsipp. Men nå er den litt i vranglune. Hver gang jeg har valgt en fil for upload og trykker "upload" så skrives det dobbelt til fila på servern. :dontgetit:

Det har jeg jo aldri bedt om!

 

Her er koden som starter opplastingen:

<form action="barn.php" method="post" enctype="multipart/form-data">
 <b>Barn:</b><input type="file" name="upfil" /> 
 <input type="submit" value="upload" />
</form>

 

Her har jeg fjernet den som tar imot, men viser kun den delen som skriver til fil:

<?php
$myFile = "barnedata.php";
$fh = fopen($myFile, 'a') or die("can't open file");

$stringData = "New Stuff 12\n";
fwrite($fh, $stringData);

$stringData = "New Stuff 34\n";
fwrite($fh, $stringData);

fclose($fh);;

 

Altså blir resultatet i barnedata.php:

New Stuff 12

New Stuff 35

New Stuff 12

New Stuff 35

 

Trenger dere å vite mer så si ifra!

Hadde vært fryktelig fint med litt hjelp her nå :innocent:

Lenke til kommentar
Videoannonse
Annonse

En stund siden jeg har hold på med flatfiler på denne måten, men jeg mener å huske at det blir noe tull hvis du bruker fwrite() to ganger med samme fopen().

Hvorfor skriver du til filen to ganger egentlig? Kan du ikke bare gjøre noe slikt?

<?php
$myFile = "barnedata.php";
$fh = fopen($myFile, 'a') or die("can't open file");

$stringData = "New Stuff 12\n";
$stringData .= "New Stuff 34\n";

fwrite($fh, $stringData);

fclose($fh);
?>

Lenke til kommentar

Gjør jeg det slik vil den bare skrive siste linja(New Stuff 34). Jeg har hentet dette fra denne websiden. Og det fungerer jo fint så lenge jeg ikke laster opp en fil samtidig. Men når jeg samtidig skal laste opp en fil så vil den altså skrive dobbelt.

Det har altså en sammenheng med filopplastingen. Kanskje den blir fortstyrret på en måte av opplastings-scriptet?

 

Her er en link til scriptet jeg har brukt for å laste opp filen. Fwrite ligger over dette i min "utgave".

Lenke til kommentar
Gjør jeg det slik vil den bare skrive siste linja(New Stuff 34).
Hvis du ser godt etter, så plasserte jeg et punktum før =-tegnet på den andre $stringData-variabelen :)
$stringData = "New Stuff 12\n";

$stringData .= "New Stuff 34\n";

Det betyr at $stringData skal legge til "New Stuff 34" etter "New Stuff 12".

Orker ikke feilsøke noe nå, men at problemet har røtter i uploadscriptet er ikke umulig.

Endret av PT
Lenke til kommentar

different people, different opinions. Mener du at databaser er enklere enn flatfiler, bør du ikke uttale deg, det viser desverre hvor lite du kan. Å håndtere arrays er minst like enkelt som databasespørringer. Til å skrive til fil, bruker du da serialize og leser det inn igjen med unserialize. Databaser bruker du først når du har store scripts med mye (meta)data som skal søkes i og/eller indekseres.

Endret av dabear
Lenke til kommentar

Sa vell ikke at det var enklere med databaser enn flatfiler eller gjorde jeg kanksje?

Mulig det er jeg som er begynnt og bli litt sterkt beruset. Men vis jeg er litt bevist mener jeg og se at jeg aldrig skriver at det er lettere bare at flatfiler er noe dritt.. Dette fordi det er svært uoversiktlig og rotete.

Vill man ha system på noe er det database som er tha shiat!

Lenke til kommentar
Gjest Slettet+6132
Dette er kanskje litt OffTopic, men drit i flatfiler det er så sinnsykt lame..

Bruk heller en database som feks. MySQL..

Hvorfor skal du bruke flatfiler?

Er jo det værste shittn som er under php.. En kompis av meg bruker det, fyy for noe greier, hater det >_<

Gå over til database!

5333588[/snapback]

 

Når jeg leser ditt innlegg så får jeg en oppfattning om at du ikke helt vet hva du snakker om. Om du skal ha en liten, privat hjemmeside med en besøksteller er det mye enklere med en flatfil hvor det legges til et nytt tall for hver side som åpnes, enn at du skal sette opp en egen database kun for å legge til et tall hver gang noen åpner en annen del av siden. Databaser kommer først på tanken når du skal håndtere større mengder data hvor du trenger mulighet for å kunne redigere/slette/søke på en enkel måte.

 

God jul! ;)

Endret av Slettet+6132
Lenke til kommentar

Hehe. Skulle gjerne brukt databaser jeg, men på grunn av jeg ikke kan mer enn ca. ingenting av php så tror jeg neppe at jeg skal bevege med over på databaser. (Selvom jeg visstnok har ubegrensa databaser på webhotellet...)

Uansett, når jeg har det i en slik fil som dette forstår jeg mye bedre hva som skjer. Jeg får vondt i magen bare av å titte i phpadmin...

 

Uansett, jeg har fortsatt en side som skriver dobbelt :(

Lenke til kommentar

Skjønner ikke dette her? :p

 

Det skal vel funke med

 

<?php

$logFile = "loggfilen.php";
if (file_exists($logFile)) {
   if (!is_writeable($logFile)) {
       die("$logFile er ikke skrivbar!");
   }
   
   $open  = fopen($logFile, "a");
   fwrite($open,"$string1|$string2|$string3 \n");
   fclose($open);
} else {
   echo "Filen $logFile finnes ikke!<br><br>";
}
?>

 

Det bruker jeg, og det funker utmerket :)

 

edit:

La inn ny kode!

Endret av fredeil
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...