Jump to content
Sign in to follow this  
Kenneth Dammyr

fwrite skriver dobbelt...

Recommended Posts

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:

Share this post


Link to post

For meg ser det ut som om fila som skriver til fila blir requesta to ganger.

 

EDIT: Ikke spør meg hvorfor :)

Edited by ex0n

Share this post


Link to post

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);
?>

Share this post


Link to post

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".

Share this post


Link to post
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.

Edited by PT

Share this post


Link to post

Det funker ikke dessverre :(

 

Men la oss si at upload-scriptet og write kolliderer. Finnes det ikke en enkel måte å skille de fra hverandre?

Jeg har prøvd å lukke dem inne i hver sin <?php>-tag, men det gikk ikke.

Share this post


Link to post

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!

Share this post


Link to post

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.

Edited by dabear

Share this post


Link to post

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!

Share this post


Link to post

Greit, du sa kanskje ikke dét, men da får du forklare hvorfor flatfiler er «noe dritt». Viss du bruker serialize/unserialize, vil ikke fila være uoversiktelig eller rotete på noen måte

Share this post


Link to post
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! ;)

Edited by ex0n

Share this post


Link to post

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 :(

Share this post


Link to post

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!

Edited by fredeil

Share this post


Link to post

Hvis det var slik du mente:

$myFile = "barnedata.txt";
$open  = fopen($myFile, "a");

$string1 = "Bobby Bopper";
$string2 = "Bobbbbbbby Bopper";
$string3 = "Boy Bopper";

 fwrite($open,"$string1|$string2|$string3 \n");
  
fclose($ut);

...Så fungerte ikke det. Samme resultat.

 

EDIT: Basert på den første "versjonen" din...

Share this post


Link to post
Hvis det var slik du mente:

*kode*

...Så fungerte ikke det. Samme resultat.

 

EDIT: Basert på den første "versjonen" din...

5334395[/snapback]

Gir den koden det samme resultatet som før?

Tror vi må få se hele koden din :)

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...