Avatar billede sazo Nybegynder
03. marts 2005 - 22:35 Der er 16 kommentarer og
1 løsning

Skal bruge en php der henter fra en excel

Hey Eksperter.

Ved ikke helt om det er det rette sted at stille det her spørgsmål, men det jeg mangler er en php fil der kan hente noget data fra et bestemt felt i et excel dokument og sende det "videre" til flash! Kan det lade sig gøre? Og hvis ja hvordan? skal jeg bruge asp i stedet eller hva skal jeg gøre? Kan jeg evt. bruge en anden form for data-base der bare ligger som en fil på min server?

På forhånd tak for hjælpen!
Avatar billede coderdk Praktikant
03. marts 2005 - 22:45 #1
Åbn excel og gem filen som en CSV (kommasepareret) fil, så kan du kigge på http://dk2.php.net/fgetcsv
Avatar billede nyst Nybegynder
03. marts 2005 - 22:52 #2
Hej coderdk,

undskyld jeg bryder ind, med gider du

http://www.eksperten.dk/spm/596733

et ekstra lille problem med min form

:-)
Avatar billede swaxi Nybegynder
04. marts 2005 - 19:58 #3
Avatar billede sazo Nybegynder
06. marts 2005 - 15:52 #4
Hey coderdk... Jeg var inde på det linl du sendte og har nu fået lavet den her kode:

&hey=
<?php
$handle = fopen("delimited.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) != FALSE) {
  $num = 2;
  for ($c=1; $c < $num; $c++) {
      echo $data[$c] . "";
  }
}
fclose($handle);
?>

Nu skal jeg så bruge en kode der kan ligge og/eller skrive til felt nummer 2... Ved du hvordan jeg gør det?

//Sazo
Avatar billede sazo Nybegynder
06. marts 2005 - 15:53 #5
linl = link... ligge = ligge til

Var lige for hurtig på tasterne :-D

//Sazo
Avatar billede coderdk Praktikant
06. marts 2005 - 18:38 #6
<?php
$handle = fopen("delimited.csv", "r");
$n = 0;
while (($data = fgetcsv($handle, 1000, ",")) != FALSE) {
  $n++;
  for ($c=1; $c < $num; $c++) {
      echo "I række $n har felt nummer 2 værdien: '$data[2]'<br>";
  }
}
fclose($handle);
?>
Avatar billede sazo Nybegynder
06. marts 2005 - 19:13 #7
Hvor skal jeg så skrive den værdi som skal ligges til min anden værdi i delimited.csv? min delimited.csv ser sådan ud: 1,56 og det er 56 jeg gerne vil have lagt et eller andet tal til f.eks. 50... Hvor skal jeg så skrive hvad for en værdi der skal ligges til? :-)

//Sazo
Avatar billede coderdk Praktikant
06. marts 2005 - 19:43 #8
<?php
$handle = fopen("delimited.csv", "r");
$n = 0;
while (($data = fgetcsv($handle, 1000, ",")) != FALSE) {
  $n++;
  for ($c=1; $c < $num; $c++) {
      $ny_vaerdi = $data[2] + 50;
      echo "I række $n har felt nummer 2 værdien: '$data[2]' - Ny værdi: '$ny_vaerdi'<br>";
  }
}
fclose($handle);
?>
Avatar billede sazo Nybegynder
06. marts 2005 - 19:50 #9
Jeg har prøvet din kode på min locale php server, men jeg kan ikke få den til at fungere. Det jeg gør er bare at åbne php filen gennem min server og så sker der ikke mere. Jeg kan godt få den anden kode som jeg har skrever her til at du, så tror ikke din kode duer. :-)

//Sazo
Avatar billede coderdk Praktikant
06. marts 2005 - 19:54 #10
Der er ikke den store forskel på din og min kode :P
Avatar billede coderdk Praktikant
06. marts 2005 - 19:55 #11
Faktisk burde det være:

<?php
$handle = fopen("delimited.csv", "r");
$n = 0;
while (($data = fgetcsv($handle, 1000, ",")) != FALSE) {
  $n++;
  $ny_vaerdi = $data[2] + 50;
  echo "I række $n har felt nummer 2 værdien: '$data[2]' - Ny værdi: '$ny_vaerdi'<br>";
}
fclose($handle);
?>
Avatar billede sazo Nybegynder
06. marts 2005 - 20:05 #12
Hmm.... Nu kan jeg se din echo linie, det kunne jeg ikke før. Men det ser ud som om problemet ligger i at den ikke åbner delimited.csv og skriver i denne, for den ændres overhovedet ikke. :-S
Avatar billede coderdk Praktikant
06. marts 2005 - 21:26 #13
Nej der bliver ikke skrevet noget i den, kun hentet noget ud og vist :P Dit spørgsmål gik heller ikke på at skrive men at hente fra en excel fil ;P
Hvis du vil genopbygge den med nye værdier skal du lave noget i stil med:

<?php

  $handle = fopen("delimited.csv", "r");
  $out = fopen("delimited_new.csv", "w");
  $n = 0;
  while (($data = fgetcsv($handle, 1000, ",")) != FALSE)
  {
    $n++;
    $data[2] += 50;
    $tmp = implode( ',', $data );
    fwrite( $out, "$tmp\n" );
  }
  fclose($handle);
  fclose( $out );

?>
Avatar billede coderdk Praktikant
06. marts 2005 - 21:26 #14
Så skriver den en fil med nye værdier for 2. felt i delimited_new.csv
Avatar billede sazo Nybegynder
07. marts 2005 - 13:50 #15
Yes, den kode fungerer bare perfekt! Men hvad nu hvis jeg vil have den til at gemme i den samme fil som den henter fra? har prøvet at ændre delimited_new.csv til delimited.csv, men det fungere ikke. Håbber du kan hjælpe mig med dette sidste spørgsmål... :-D

//Sazo
Avatar billede coderdk Praktikant
07. marts 2005 - 14:08 #16
Slet og omdøb ;)

<?php

  $handle = fopen("delimited.csv", "r");
  $out = fopen("delimited_new.csv", "w");
  $n = 0;
  while (($data = fgetcsv($handle, 1000, ",")) != FALSE)
  {
    $n++;
    $data[2] += 50;
    $tmp = implode( ',', $data );
    fwrite( $out, "$tmp\n" );
  }
  fclose($handle);
  fclose( $out );

  unlink( "delimited.csv" );
  rename( "delimited_new.csv", "delimited.csv" );

?>
Avatar billede sazo Nybegynder
07. marts 2005 - 15:04 #17
Mange tak for hjælpen! Du har hvertfald fortjent dine poin!

//Sazo
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