Avatar billede human Nybegynder
12. april 2004 - 11:00 Der er 9 kommentarer og
2 løsninger

trække ud og gemme i .txt

Jeg bruger en funktion som gemmer noget data fra nogle variabler i en .txt fil. Det sker hver gang dataen alligevel bliver sendt til en database, så der er altid kun 1 række af gangen (hvis man kan sige det sådan).

Mit problem er nu, at jeg skal have et script som tager en slags backup af en anden tabel i min database.

Kontruktionen af .txt filen skal se således ud:
Navn, alder, by
peter, 16, esbjerg

Navn, alder, by.. er så navnene på kolonnerne i tabellen, og peter, 16, esbjerg er hvad der står i hver række. (selvfølgelig ikke det samme i hver række).

Hvis jeg trækker det hele ud, og smider ind, kan jeg jo ikke skrive de forskellige ting over hver række der bliver trukket ud.

Så hvordan kan det lige gøres smart?
Er det til at forstå?

Trækker det ud:
$query = "SELECT * FROM brugere";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) { }

Den funktion jeg bruger når det bare er en række af gangen:

$filename = 'brugere.txt';
$somecontent = "navn, alder, by \r\n
".$navn.", ".$alder.", ".$by." \r\n \r\n";

if (is_writable($filename)) {

  if (!$handle = fopen($filename, 'a')) {
        echo "kan ikke åbne ($filename)";
        exit;
  }
  if (fwrite($handle, $somecontent) === FALSE) {
      echo "kan ikke skrive til filen ($filename)";
      exit;
  }
    echo "Success, skrev ($somecontent) til ($filename)";
 
  fclose($handle);
} else {
  echo "der kan ikke skrives til $filename ";
}

Og så lige en sidste ting, hver gang at der bliver skrevet til .txt filen, skal den tømmes og alt skal indsættes igen, ellers kommer tilngene jo til at stå der flere gange.

Er det noget der kan laves? Hvis du har en helt anden ide er det også fint, bare .txt filen kommer til at se sådan ud.
Avatar billede dennismp Nybegynder
12. april 2004 - 11:05 #1
Hvordan skal filen se ud?

Navn, alder, by
række1,
række2,
række3

eller
Navn, alder, by
række1,
Navn, alder, by
række2,
Navn, alder, by
række3

?
Avatar billede human Nybegynder
12. april 2004 - 11:08 #2
Navn, alder, by
række1,
Navn, alder, by
række2,
Navn, alder, by
række3
Avatar billede dennismp Nybegynder
12. april 2004 - 11:14 #3
$filename = 'brugere.txt';

if (!is_writable($filename) || !($handle = fopen($filename, 'w'))) {
  echo "kan ikke åbne ($filename)";
  exit;
}

$query = "SELECT navn, alder, `by` FROM brugere";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) { }
$navn = stripslashes($row[0]);
$alder = stripslashes($row[1]);
$by = stripslashes($row[2]);
$somecontent = "navn, alder, by \r\n".$navn.", ".$alder.", ".$by." \r\n \r\n";

  if (fwrite($handle, $somecontent) === FALSE) {
      echo "kan ikke skrive til filen ($filename)";
      exit;
  }
  echo "Success, skrev ($somecontent) til ($filename)";
}
?>
Avatar billede dennismp Nybegynder
12. april 2004 - 11:15 #4
hovsa en fejl
while($row = mysql_fetch_array($result)) { }
skal være
while($row = mysql_fetch_array($result)) {

og nu skrev du ikke hvad feltnavne var i databasen, så jeg antog at det var navn, alder og by
Avatar billede human Nybegynder
12. april 2004 - 11:20 #5
God antagelse.. det var det :) Kigger på det om lidt.
Avatar billede human Nybegynder
12. april 2004 - 12:14 #6
Rigtig flot.. Virker perfekt.

Men hver gang der bliver skrevet til den, skal files tømmes og det nye skal indsættes. Ellers bliver der jo skrevet det samme data til filen op til flere gange.
Avatar billede human Nybegynder
12. april 2004 - 12:15 #7
Eller mig der tager fejl af den vil skrive det igen? Eller er det kun det nye den vil indsætte?
Avatar billede human Nybegynder
12. april 2004 - 12:18 #8
Nææ.. Den indsætter godt nok kun det som ikke er der i forvejen.. Smart smart :o) Forstår dog ikke hvorfor?

Smid et svar...
Avatar billede dennismp Nybegynder
12. april 2004 - 12:19 #9
$handle = fopen($filename, 'w'); (se evt php.net/fopen - under w)

gør at filen bliver tømt, så det burde virke som du gerne vil have det.
Avatar billede dennismp Nybegynder
12. april 2004 - 12:20 #10
Den 3'e post er et svar :)
Avatar billede human Nybegynder
12. april 2004 - 12:25 #11
Okay.. Så blev jeg det klogere.

Mange tak! :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester