Avatar billede kgp43 Nybegynder
06. september 2004 - 19:56 Der er 19 kommentarer og
1 løsning

Hvad er der glat her?

Hejsa,

Jeg har en form der submitter en tekst fil (den bliver ikke uploaded). Har så en kode, der checker hver linie i filen, kan bare ikke få denne kode til at virke (den poster ikke nogen fejl, men heller ikke noget output).



Formen (har fjernet html'en):

<form action="datafeed_ok.php" method="post" style="display:inline">
<input type="file" name="datafeed_file">
<input name="submit" type="submit" value=" Next ">
</form>


datafeed_ok:

if ($_FILES["datefeed_file"]) {
  $datafeed_file = fopen($_FILES["datefeed_file"],r);
  $rows = explode("\n", $datafeed_file);
    for ($i = 1; $i < count($rows); $i++) {
      //Merchant_name||||||SKU|||||||PRICE|||BUYURL|||||||||||||||||OFFLINE|ONLINE|INSTOCK|||STANDARDSHIPPINGCOST
      $cell = explode("|", $rows); // "\t" = seperated with TAB, "|" = seperated with pipeline.
      $merchant_pid = $cell[6];
        echo $merchant_pid;
      $product_price = $cell[13];
        echo $product_price;
      $direct_link = $cell[16];
        echo $direct_link;
      $stock = $cell[35];
        echo $stock;
      $delivery_price = $cell[38];
        echo $delivery_price;
    }
}
Avatar billede sukos Juniormester
06. september 2004 - 20:48 #1
Når du bruger file i en form, er du nødt til at åbne min. $_FILES["datefeed_file"]["tmp_name"]

$_FILES["datefeed_file"] er jo et array

Ved ikke om det virker, men prøv som min.
$datafeed_file = fopen($_FILES["datefeed_file"]["tmp_name"],r);
Avatar billede thomashove Nybegynder
06. september 2004 - 20:54 #2
flg. er testet og virker - håber det kan bruges til inspiration

<?
$file_array = file($_FILES['userfile']['tmp_name']);


  for ($i = 0; $i < count($file_array); $i++)
  {
      $row=trim(current($file_array));
      $cell = explode("|", $row);
      echo($cell[0]);
      echo($cell[1]);
      echo($cell[2]);
    next($file_array);
  }
?>
<html>

<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile">
<input name="submit" type="submit" value="Next">
</form>

</html>
Avatar billede thomashove Nybegynder
06. september 2004 - 20:55 #3
min .txt fil ser således ud:

felt1|felt2|felt3
felt4|felt5|felt6
Avatar billede kgp43 Nybegynder
06. september 2004 - 21:37 #4
sukos: kan ikke få det til at virke. Ingen fejl, men der sker intet.
thomashove: Får denne fejl:

Warning: current(): Passed variable is not an array or object in /home/perfume/public_html/merchant/products/include/datafeed_ok.php on line 37

Warning: next(): Passed variable is not an array or object in /home/perfume/public_html/merchant/products/include/datafeed_ok.php on line 44

linie 37: row=trim(current($file_array));
linie 44: next($file_array);

Mine text fil ser sådan ud: telt1|felt2|felt3... ovs i et X antal linier.
Avatar billede kgp43 Nybegynder
06. september 2004 - 21:41 #5
eks af min text fil:

cell1_linie_1|cell2_linie_1|cell3_linie1
cell1_linie_2|cell2_linie_2|cell3_linie2
cell1_linie_3|cell2_linie_3|cell3_linie3
Avatar billede kgp43 Nybegynder
06. september 2004 - 21:42 #6
koden ser således ud (efter thomashove's forslag):

$file_array = file($_FILES['datafeed_file']['tmp_name']);
      for ($i = 0; $i < count($file_array); $i++)
        {
          $row=trim(current($file_array));
          $cell = explode("|", $row);
          echo($cell[6]);
          echo($cell[13]);
          echo($cell[16]);
        echo($cell[35]);
        echo($cell[38]);
      next($file_array);
        }

Sukos: Hold dig ikke tilbage hvis du har flere forslag :D
Avatar billede thomashove Nybegynder
06. september 2004 - 21:51 #7
mit burde nu udskrive noget...har du husket

enctype="multipart/form-data"

på dit form-tag
Avatar billede sukos Juniormester
06. september 2004 - 21:53 #8
JA, det var selvf. fordi file skulle bruges.!
Og næsten som forslået

$file_array = file($_FILES['datafeed_file']['tmp_name']);
      for ($i = 0; $i < count($file_array); $i++)
        {
         
          $file_array[$i] = trim($file_array[$i]);
          if($file_array[$i] == "")
          {
          continue;
          }
          $cell = explode("|", $file_array[$i]);
          echo($cell[6]);
          echo($cell[13]);
          echo($cell[16]);
        echo($cell[35]);
        echo($cell[38]);
        }

Men har nu aldrig prøvet at "åbne" en tmpfil på den måde.
Avatar billede thomashove Nybegynder
06. september 2004 - 21:56 #9
sukos -> havde heller aldrig prøvet det...men det virker faktisk.
normalt plejer man jo at uploade filen og gemme den vha. copy()
Avatar billede kgp43 Nybegynder
06. september 2004 - 22:09 #10
Thomashove: Havde glemt enctype... dit forslag virker superb :)
Jeg takker for jeres hjælp.
Avatar billede sukos Juniormester
06. september 2004 - 22:10 #11
Det her også fint nok, eneste "bøf" er jo hvis man ikke ved præcis hvor mange | der findes på hver linie

<html><head><title>Til http://www.eksperten.dk/spm/536879</title>
</head>
<body>

<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input name="upfile" type="file"<br>
<input type="submit" value="Vis indhold">
</form>

<?php
if(isset($_FILES["upfile"])) {

$file_array = file($_FILES["upfile"]["tmp_name"]);
      for ($i = 0; $i < count($file_array); $i++)
          {
       
          $file_array[$i] = trim($file_array[$i]);
          if($file_array[$i] == "")
          {
          continue;
          }
          echo"<br>\n";
          $cell = explode("|", $file_array[$i]);
          echo($cell[0]);
          echo($cell[1]);
          echo($cell[2]);
          echo($cell[3]);
          echo($cell[14]);
          echo($cell[6]);
          }

}
?>
</body></html>
Avatar billede sukos Juniormester
06. september 2004 - 22:10 #12
hehe :O)
Avatar billede thomashove Nybegynder
06. september 2004 - 22:12 #13
glad for at kunne hjælpe ;-)

fortsat lystig kodning....
Avatar billede kgp43 Nybegynder
06. september 2004 - 22:51 #14
Thomashove: takker :)
Sukos: Kan bedst lide at have det delt på 2 sider, men forstår hvor du vil hen :)
Avatar billede kgp43 Nybegynder
08. september 2004 - 07:24 #15
Hejsa igen,

Skyldes dette problem overstående script?
- Jeg har ingen problemer med at uploade data i mindre filer, men den vil ikke uploade data fra file på 3MB (og derover). Har ændret timeout i php.ini til 300, men den vil stadig ikke uploade dataene. Skyldes dette en fejl i overstående kode?
Avatar billede kgp43 Nybegynder
08. september 2004 - 07:37 #16
agrrr.... det gav jo ikke mening :P

Prøver lige igen:


Jeg har problemer med at uploade data i filer på 3MB (og derover), men den har ingen problemer med at uploade data fra filer under 3MB. Har ændret i php.ini, så timeout er sat til 300 (5 min), men den vil stadig ikke uploade dataene. Skyldes dette en fejl i overstående kode?

Nb. Der tager mig 3 minutter at uploade en fil på 3MB.
Avatar billede sukos Juniormester
08. september 2004 - 08:03 #17
upload_max_filesize
og
post_max_size
i php.ini, har betydning for hvor meget du kan uploade. Prøv:

<?php
echo min(ini_get("post_max_size"), ini_get("upload_max_filesize"));
?>
Avatar billede kgp43 Nybegynder
08. september 2004 - 10:14 #18
prøver det lige når jeg kommer hjem :)
Avatar billede kgp43 Nybegynder
08. september 2004 - 12:43 #19
Får dette output: 2M

Hvad skal jeg gøre for at hæve den til 10M?
Avatar billede sukos Juniormester
08. september 2004 - 19:21 #20
Retter i php.ini? :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