Avatar billede dmg Nybegynder
16. juni 2004 - 10:06 Der er 11 kommentarer og
1 løsning

Tjekke filtypen

Hej eksperter.

Jeg har en form hvor brugeren, browser sig ind og vælger en fil på computeren.

det bliver så skrevet i et tekstfelt der hedder Localpath.

Nedenstående kode, tager imod localpath og behandler filen. Men det er kun menningen man skal kunne vælge een bestemt filtype, nemlig .txa

Har i nogen gode ideer?

<?php

if(isset($_POST['localPath']) && $_POST['localPath'] != '')
  {

    $filnavn = $_POST['localPath'];
    $handle = fopen($filnavn,'r');

    if( $handle )
    {
      $line = 0;
      $counter = 0;
      while (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
      {
        $line++;
        if( count($data) != 11 )
        {

//          print "Der er for mange/få elementer i linje $line:<br>";
//          print_r($data);print "<br>";
        }
        else
        {
          $counter++;
          $sql = "INSERT INTO regning (test1, test2, test3, test4, kuponnr, bebiterings_dato, korsels_dato, belob, tillag) VALUES ('$data[0]', $data[1], $data[2], $data[3], $data[4], '$data[7]', '$data[8]', '$data[9]', '$data[10]')";
          $DB = mysql_query($sql);
        }
      }
      fclose($handle);
      print "$counter kuponnumre fundet i filen <b>$filnavn</b> og er blevet gemt i systemet succesfuldt<BR><BR>";
      print "Kuponnumre der matchede regningen:<BR><BR>";
      $flet = mysql_query ("select * from info, regning where info.kuponnr = regning.kuponnr") or die ("Invalid query: " . mysql_error());
      while ($row = mysql_fetch_array ($flet))
      {
        $counter2++;

        $insert_flet = "INSERT INTO flet_temp (ansvarlig, kuponnr, belob, dato, tidspunkt, sagsnr, kontorudgift, formol) VALUES ('".$row['ansvarlig']."', ".$row['kuponnr'].", '".$row['belob']."', '".$row['dato']."', '".$row['tidspunkt']."', ".$row['sagsnr'].", '".$row['kontorudgift']."', '".$row['formol']."')";
        $DB = mysql_query($insert_flet);
        $tmp_kuponnr = $row['kuponnr'];
        $update_info = "update info, regning set status = 1 where info.kuponnr = regning.kuponnr";
        $DB = mysql_query($update_info);
      }
      print "$counter2 kuponumre blev fundet ud af de $counter fra regningen og er gemt i systemet";

    }

    else
    {
      print "Kan ikke åbne filen $filnavn. Fejlen skyldes at filen ikke kan findes eller er korrupt.";
    }

  }

?>
Avatar billede Slettet bruger
16. juni 2004 - 10:09 #1
Måske:

if (!substr($filnavn, -3, "txa") {
    echo "Kun .txa!";
    exit;
}

--
pacroon
Avatar billede dennismp Nybegynder
16. juni 2004 - 10:14 #2
måske;

$info = pathinfo($filnavn);
if( $info['extension'] != 'txa' )
  die("Kun .txa");
Avatar billede Slettet bruger
16. juni 2004 - 10:16 #3
dennismp > Smart funktion! :)
Avatar billede dmg Nybegynder
16. juni 2004 - 10:41 #4
Det ser alt sammen godt ud. Har først mulighed for at tjekke om ca. 20 min... Det skal lige siges at outputtet på localpath, ser således ud, alt efter hvor stien peger hen.

C:\\KTO30634.TXA
Avatar billede Slettet bruger
16. juni 2004 - 10:44 #5
dmg > Både mit og dennismp's forslag vil stadig virke.
Avatar billede dmg Nybegynder
16. juni 2004 - 11:23 #6
Har prøvet begge løsninger, men hvorfor virker det ikke?

if(isset($_POST['localPath']) && $_POST['localPath'] != '')
  {

    $filnavn = $_POST['localPath'];
    $handle = fopen($filnavn,'r');
    $info = pathinfo($filnavn);


    if( $info['extension'] != 'txa' )
    {
      print "blahhhh";
      //die("Kun .txa");
    }
    else
    {
    if( $handle )
    {
      $line = 0;
      $counter = 0;
      while (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
      {
        $line++;
        if( count($data) != 11 )
        {
          print "Der er fejl på linjen";
//          print "Der er for mange/få elementer i linje $line:<br>";
//          print_r($data);print "<br>";
        }
        else
        {
          $counter++;
          $sql = "INSERT INTO regning (test1, test2, test3, test4, kuponnr, bebiterings_dato, korsels_dato, belob, tillag) VALUES ('$data[0]', $data[1], $data[2], $data[3], $data[4], '$data[7]', '$data[8]', '$data[9]', '$data[10]')";
          $DB = mysql_query($sql);
        }
      }
      fclose($handle);
      print "$counter kuponnumre fundet i filen <b>$filnavn</b> og er blevet gemt i systemet succesfuldt<BR><BR>";
      print "Kuponnumre der matchede regningen:<BR><BR>";
      $flet = mysql_query ("select * from info, regning where info.kuponnr = regning.kuponnr") or die ("Invalid query: " . mysql_error());
      while ($row = mysql_fetch_array ($flet))
      {
        $counter2++;

        $insert_flet = "INSERT INTO flet_temp (ansvarlig, kuponnr, belob, dato, tidspunkt, sagsnr, kontorudgift, formol) VALUES ('".$row['ansvarlig']."', ".$row['kuponnr'].", '".$row['belob']."', '".$row['dato']."', '".$row['tidspunkt']."', ".$row['sagsnr'].", '".$row['kontorudgift']."', '".$row['formol']."')";
        $DB = mysql_query($insert_flet);
        $tmp_kuponnr = $row['kuponnr'];
        $update_info = "update info, regning set status = 1 where info.kuponnr = regning.kuponnr";
        $DB = mysql_query($update_info);
      }
      print "$counter2 kuponumre blev fundet ud af de $counter fra regningen og er gemt i systemet";

    }

    else
    {
      print "Kan ikke åbne filen $filnavn. Fejlen skyldes at filen ikke kan findes eller er korrupt.";
    }
    }
  }
Avatar billede dennismp Nybegynder
16. juni 2004 - 11:35 #7
fordi der er forskel på store og små bogstaver?

prøv:
if( strtolower($info['extension']) != 'txa' )
istedet for
if( $info['extension'] != 'txa' )
Avatar billede dmg Nybegynder
16. juni 2004 - 11:41 #8
yupz, så virker det... totalt nice ;-) der!!! Hvis det er ok, med jer, vil jeg gerne vente lidt med points... skal nemlig lige teste det...
Avatar billede Slettet bruger
28. juni 2004 - 14:53 #9
Virker det? :)
Avatar billede dmg Nybegynder
28. juni 2004 - 15:03 #10
ja det virker fint begge :-) Undskyld jeg ikke har vendt tilbage. Jeg må ærligt indrømme jeg har glemt det :( undskyld!

Hvis i begge ligger i svar, vil jeg uddele points.

Tak for hjælpen!
Avatar billede dennismp Nybegynder
28. juni 2004 - 15:06 #11
Det er da godt at se at jeg ikke er den eneste der glemmer spørgsmål :)
Avatar billede dmg Nybegynder
28. juni 2004 - 15:19 #12
Haha... og i lige måde :-)

Så mangler vi lige et svar fra pacr00n og så der points!
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