Avatar billede hugovipper Nybegynder
14. januar 2009 - 19:15 Der er 13 kommentarer og
1 løsning

Husk indhold i form

Hej

skal bruge noget hjælp til et det script her:

$b = array();
if(isset($_GET['a']))
{
    $a = $_GET['a']+1;
    for($i=1; $i<$a; $i++)
    {
      $b[$i] = "$i";
    }
}else{
    $a=1;
    $b[1] = 1;
}

echo '<form action="upload_billede.php" method="post" enctype="multipart/form-data">';
foreach($b as $c){
  echo' <br>Vælg fil: <input type="file" name="file[]" id="file" /> ';
}   
echo '<br><input type="submit" name="submit" value="Upload fil" />
</form>';

echo '<a href="vaelg billed.php?a='.$a++.'">Tilføj en fil mere';

Det skal være sådan at den husker filen der er blevet valgt selvom jeg jeg trykker "Tilføj en fil mere"

håber der nogen der kan hjælpe
Avatar billede g1mzee Nybegynder
14. januar 2009 - 19:22 #1
Hej, jeg har desværre ikke svaret på dit spørgsmål, men jeg tror jeg ved hvordan du kan løse problemet selv.
Jeg vil sige det er noget javascript du skal have gang i, sådan du undgår at siden bliver opdateret.
Håber det var til støtte..
Held og lykke med det :)
Er ikke ligefrem en haj til javascript ^^
Avatar billede fant0mas Nybegynder
14. januar 2009 - 19:48 #2
Fil felter kan ikke forudfyldes af sikkerhedsmæssige årsager!
Som g1mzee siger, så kan du tilføje flere felter med javascript.
Avatar billede fant0mas Nybegynder
14. januar 2009 - 20:05 #3
Ikke testet:

<script type="text/javascript">
function insertNew(){
var ctn = document.getElementById('contain');
var input = document.createElement('input');
input.type = 'file';
input.name = 'file[]';
ctn.appendChild(input);
}
</script>
<?php
if(isset($_POST['submit'])){
var_dump($_FILES['file']);
}
echo '
<form action="upload_billede.php" method="post" enctype="multipart/form-data">
<div id="contain" style="width:200px;">
<input type="file" name="file[]" id="file" />
</div>
<input type="submit" name="submit" value="Upload fil" />
</form>
';
echo '<a href="java script: void(0)" onclick="insertNew()">Tilføj en fil mere</a>';
?>
Avatar billede hugovipper Nybegynder
14. januar 2009 - 21:19 #4
#fant0mas

kan du så svar mig på hvor upload scriptet skal se ud.
kunne forstille mig det kunne være noget med foreach.(kig på vedlagt script i bunden)

Array $_FILE["file"] se sådan ud ved at vælge 4 filer
(
    [name] => Array
        (
            [0] => 1.php
            [1] => 2.txt
            [2] => 3.html
        )

    [type] => Array
        (
            [0] => application/octet-stream
            [1] => text/plain
            [2] => text/html
        )

    [tmp_name] => Array
        (
            [0] => /var/spool/php/phpEKffq4
            [1] => /var/spool/php/phpAXe2yz
            [2] => /var/spool/php/phpWzKg14
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )

    [size] => Array
        (
            [0] => 1989
            [1] => 2367
            [2] => 2120
        )

)


upload script der virker til en fil.

$_SESSION['mappe'] = "./orig/"

if ($_FILES["file"]["size"] < 200000000000)
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
        if (file_exists($_SESSION['mappe'] . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          $_SESSION['mappe'] . $_FILES["file"]["name"]);
          echo "Stored in: " . $_SESSION['mappe'] . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file<br>";
      }
Avatar billede fant0mas Nybegynder
14. januar 2009 - 21:34 #5
Tag et kig på
foreach()
Avatar billede hugovipper Nybegynder
14. januar 2009 - 21:40 #6
har prøvet men kan ikke få den til at virke kan ikke finde ud af hvad jeg skal køre den på.
Avatar billede fant0mas Nybegynder
14. januar 2009 - 23:13 #7
foreach ($_FILES['file']['name'] as $key => $file) {
echo $_FILES['file']['name'][$key];
echo $_FILES['file']['type'][$key];   
//osv...
}
Avatar billede hugovipper Nybegynder
14. januar 2009 - 23:46 #8
har fundet ud af det men tager ikke den første fil med i $_FILES["file"] hvis der vælges mere end en fil.

selve upload
<?php
if(isset($_FILES["file"])){
   
    $a = count($_FILES["file"]["name"])+1;
    for($i=1; $i<$a; $i++)
    {
    $b[$i] = "$i";
    }
}
foreach($b as $c){
    $c--;
    if(2 < strlen($_FILES["file"]["name"][$c]))
    {
    $file["name"] = $_FILES["file"]["name"][$c];
    $file["type"] = $_FILES["file"]["type"][$c];
    $file["tmp_name"] = $_FILES["file"]["tmp_name"][$c];
    $file["error"] = $_FILES["file"]["error"][$c];
    $file["size"] = $_FILES["file"]["size"][$c];
   
    $fil [$c]    = array("name" => $file["name"],
                    "type" => $file["type"],
                    "tmp_name" => $file["tmp_name"],
                    "error" => $file["error"],
                    "size" => $file["size"]);
   
    }else{
    $file["name"] = $_FILES["file"]["name"];
    $file["type"] = $_FILES["file"]["type"];
    $file["tmp_name"] = $_FILES["file"]["tmp_name"];
    $file["error"] = $_FILES["file"]["error"];
    $file["size"] = $_FILES["file"]["size"];   
   
    $fil [$c]    = array("name" => $file["name"],
                    "type" => $file["type"],
                    "tmp_name" => $file["tmp_name"],
                    "error" => $file["error"],
                    "size" => $file["size"]);
    }
   
}

$mappe = "./orig/";
foreach($fil as $name)
{
    if ($name["size"] < 200000000000)
      {
      if ($name["error"] > 0)
        {
        echo "Return Code: " . $name["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $name["name"] . "<br />";
        echo "Type: " . $name["type"] . "<br />";
        echo "Size: " . ($name["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $name["tmp_name"] . "<br />";
        if (file_exists($mappe . $name["name"]))
          {
          echo $name["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($name["tmp_name"],
          $mappe . $name["name"]);
          echo "Stored in: " . $mappe . $name["name"];
          }
        }
      }
    else
      {
      echo "Invalid file<br>";
      }
}
?>
Avatar billede fant0mas Nybegynder
15. januar 2009 - 08:10 #9
Det er ikke det pæneste kode, men det burde virke efter hvad jeg kan se.
Prøv lige med mit eksempel, det giver ingen mening at loope gennem array'et 3 gange bare for at få samme resultat som man startede med.
Avatar billede hugovipper Nybegynder
15. januar 2009 - 10:50 #10
Har det samme problem med at den ikke ligger den første fil ind i array'et hvis er er mere end en og så uploader den godt nok de andre filer men ikke den første.
den uploader godt nok den første fil hvis kun der er en.
Avatar billede fant0mas Nybegynder
15. januar 2009 - 13:19 #11
Så må du dumpe data'en punkt for punkt og se hvor den er gal.
Avatar billede hugovipper Nybegynder
15. januar 2009 - 13:39 #12
Har fundet problemmet Tak for hjælpen
Avatar billede fant0mas Nybegynder
15. januar 2009 - 13:53 #13
Kode 40?
Det var så lidt
Avatar billede hugovipper Nybegynder
15. januar 2009 - 14:01 #14
ja
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