Avatar billede gizmo1234 Nybegynder
17. marts 2004 - 23:06 Der er 6 kommentarer og
1 løsning

Upload af billeder og data på en gang

Hej.
Jeg har tidligere spurgt her på exp om hvordan man uploader flere billeder + data på samme tid, og jeg fik også et svar, men det virker ikke helt endnu.

Her er den side hvor man skal skrive data'en og vælge billedet som skal uploades:

<?php
if(ini_get("file_uploads") == 1) {
?>
<tr><td><hr><b>Flere filer p&aring; samme tid:</b></td>

</tr><tr>

    <td><form enctype="multipart/form-data" action="upload.php" method="post">
<input name="upfile[]" type="file" size="48" class="input"><br>
<input type="text" name="tekst[]" size="48" class="input"><br>

<input name="upfile[]" type="file" size="48" class="input"><br>
<input type="text" name="tekst[]" size="48" class="input"><br>

<input name="upfile[]" type="file" size="48" class="input"><br>
<input type="text" name="tekst[]" size="48" class="input"><br>

<input name="upfile[]" type="file" size="48" class="input"><br>
<input type="text" name="tekst[]" size="48" class="input">
<input type="submit" name="Submit" value="Inds&aelig;t">
</form><?php
}else{
echo"Tilsyneladende er filupload ikke tilladt på denne server?<br>\n";
echo"Pr&oslash;v evt. at fjerne den f&oslash;rste if-s&aelig;tning i denne fil.";
}
?>



Og her er upload.php:



<?
$con = mysql_connect("localhost", "******", "******");
mysql_select_db("******");
mysql_close;
?>



<?php


$stop = "</td>\n</tr></table>\n</center></body></html>";

$dist = $_SERVER["DOCUMENT_ROOT"] ."/pass/upload/";


if(isset($_FILES["upfile"])) {


$str1 = $_FILES["upfile"]["name"];
$str2 = $_FILES["upfile"]["size"];
$str3 = $_FILES["upfile"]["type"];



$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "image/x-png");

    if ($_FILES["upfile"]["name"] == "") {
echo"Ingen fil blev valgt <a href=\"opret.php\">tilbage</a>";
echo $stop;
exit;
    }

    if (!in_array($_FILES["upfile"]["type"], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>". $str3 ."</b> er ikke tilladt for upload! <a href=\"opret.php\">tilbage</a>";
echo $stop;
exit;
    }


if(move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i])) {

mysql_query("INSERT INTO `upload` (`tekst`, `billede`) VALUES ('". $_POST["tekst"][$i] ."', '". $_FILES["upfile"]["name"][$i] ."')") or die (mysql_error());
    //til brug for info om filtyper
    $str1 = $_FILES["upfile"]["name"][$i];
    $str2 = $_FILES["upfile"]["size"][$i];
    $str3 = $_FILES["upfile"]["type"][$i];

    echo "<b>Navn:</b> ". $str1 .", <b> st&oslash;rrelse:</b> ". $str2 ." bytes, <b>filtype:</b> ". $str3 ."<br>\n";
        echo"Med teksten, ". $_POST["tekst"][$i] ."<br>\n";
    }

        }
     


?>






Når man har valgt nogle billeder, og skrevet noget data ind, og trykker indsæt, kommer man videre og så står der:

Filen kan ikke uploades.
Array er ikke tilladt for upload! tilbage


Og hverken billederne eller data bliver overført.

Hvad er der galt?
Avatar billede sukos Juniormester
18. marts 2004 - 06:37 #1
Det er fordi du IKKE bruger det script til upload af flere filer:
Men prøv denne:


<html><head><title>Upload resultat</title>
<link rel="stylesheet" type="text/css" href="upload.css">
</head>
<body>

<center>

<table><tr>
<td><?php

//stien, hvortil filer skal uploades, her et subdir til roden af domænet   
$dist = $_SERVER["DOCUMENT_ROOT"] ."/exp/upload/";


if (isset($_FILES["upfile"])) {

echo"&Oslash;nskede filer til upload:<p>\n";

$antal = 0;

//Find antallet af filer til upload med en for-løkke
for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) {

    if ($_FILES["upfile"]["name"][$i] !="") {
    //Læg en til $antal for hver fil.
    $antal++;

        if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) {

    if(move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i])) {

mysql_query("INSERT INTO `upload` (`tekst`, `billede`) VALUES ('". $_POST["tekst"][$i] ."', '". $_FILES["upfile"]["name"][$i] ."')") or die (mysql_error());

    //til brug for info om filtyper
    $str1 = $_FILES["upfile"]["name"][$i];
    $str2 = $_FILES["upfile"]["size"][$i];
    $str3 = $_FILES["upfile"]["type"][$i];

    echo "<b>Navn:</b> ". $str1 .", <b> st&oslash;rrelse:</b> ". $str2 ." bytes, <b>filtype:</b> ". $str3 ." Med tekst: ". $_POST["tekst"][$i] ."<br>\n";
    }else{
    echo"Upload mislykkedes desværre!";
    }
        }else{

    echo"Upload til serveren skete ikke!";

            }
        }
    }

if($antal < 1) { //Hvis der ingen filer er valgt
echo"V&aelig;lg en eller flere filer til upload! <a href=\"uploadform.php\">tilbage</a>";
    }else{
echo"<a href=\"uploadform.php\">tilbage</a>";
    }

}
?></td>

</tr></table>

</center>

</body></html>
Avatar billede gizmo1234 Nybegynder
18. marts 2004 - 06:59 #2
Det virkede i første hug :)
Tusinde tak Sukos!
Kommer du lige med et svar?
Avatar billede sukos Juniormester
18. marts 2004 - 10:04 #3
Nej, jeg fik rigeligt i sidste spm.
Avatar billede gizmo1234 Nybegynder
18. marts 2004 - 14:04 #4
Ok, det bestemmer du :)

Men endnu engang, tak for hjælpen!
Avatar billede gizmo1234 Nybegynder
18. marts 2004 - 18:59 #5
Har lige et spørgsmål mere.

Er det muligt at gøre sådan at hvert billede af de 5 mulige får forskellige navn, så når man skal vise dem, kan man skrive:

<img src='$row[billede1]'> <img src='$row[billede2]'> osv. ??

Det er fordi jeg skal bruge det til at vise køkkener, og så skal man på den første upload vise billedet af selve køkkenet, som så kommer til at være øverst, og det gør den også. Men så nedenunder det store billede skal der være 3-4 små billeder, som viser detaljer af køkkenet, og jeg kan ikke lige regne ud hvordan man skal få dem frem, for når man uploader mere end 1 billede af gangen, laver den jo 2 rows, og hvordan kan man så hente de 3-4 andre billeder, som passer til det første billede?
Avatar billede gizmo1234 Nybegynder
18. marts 2004 - 19:07 #6
For at i kan se hvad jeg mener, kan du se her:

http://www.biga-aarhus.dk/tilbud.php

Hvis man så vælger et af køkkenere, kommer du ind til en side med mere information om køkkenet. Og det store billede er så billede1, som jeg godt kan få frem, men så nedenunder der kan du se de 3 andre billeder. Hvordan kan det fixes?

Og kan man gøre sådan at man i det hele taget kan vælge at den skal hente præcis de og de sider?? Jeg er næsten sikker på at det kan lade sig gøre, for der er jo andre der kan gøre det, men hvordan gøres det? Altså hvordan får man den til at forstå at den skal hente billederne og informationerne fra lige præcis den og den rows i databasen, når man går under den ene side, og hente billeder og data fra en anden row når man går ind under en anden side?
Avatar billede gizmo1234 Nybegynder
18. marts 2004 - 20:05 #7
Jeg har lavet et nyt spørgsmål om det, så jeg kan give points til folk hvis de kan hjælpe mig.
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