25. juni 2003 - 21:33
Der er
16 kommentarer og 1 løsning
Hvordan tæller jeg array?
Hejsa, Som overskriften lyder, hvordan tæller jeg et array; tror det hedder 2d array. Hvis jeg eksempelvis har: <input type="file" name="filnavn[]"> <input type="file" name="filnavn[]"> <input type="file" name="filnavn[]"> <input type="file" name="filnavn[]"> og jeg poster til en anden side... så kan jeg jo ikke tælle med: count($_FILES['filnavn']); Jeg skal nemlig lave en slags løkke... som uploader alle de billeder man nu har valgt, derfor kræver det at jeg jo ved hvor mange billeder der er valgt til at blive uploaded. Håber nogen kan hjælpe mig; tak.
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan sikkert få noget ud af at se på dette, et script jeg har lavet der kan upload x antal billeder, i dette tilfælde 10 -> <?php if (isset($_POST['up'])) { $i = 0; while (list($name, $value) = each($_FILES['upfil']['name'])) { if ($value) { $dist = $_SERVER["DOCUMENT_ROOT"] ."/gallery/"; $files = $value; $temparr = explode(".", $files); $temparr[count($temparr)-2] = time(); $files = implode(".", $temparr); $rand = rand(1,100000); $files = "$rand$files"; move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files); } $i++; } } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <?php for ($s = 0; 10 > $s; $s++) { ?> Fil til upload <input type="file" name="upfil[]"><br> <?php } ?> <input type="submit" value="Upload" name="up"> </form>
tester lige... du var lidt hurtig der :)
hvordan er det lige det du har lavet med at filnavnene har en masse tal... hvad gør de og hvad er meningen med de lange tal?
Tricket er at hvis to uplaoder på samme tid eller to filer har samme navn overskriver de ikke hinanden, de for et unikt navn, tiden siden 1970 i sekunder kunne egentlig være nok, men hvis uplaodningen går hurtigt eller to gør det på samme tid vil de overksirve derofr for den et random number på der lægger mellem 1 og 100.000
Hvis du blot ønsker deres oprindligenavne gør du blot sådan her -> <?php if (isset($_POST['up'])) { $i = 0; while (list($name, $value) = each($_FILES['upfil']['name'])) { if ($value) { $dist = $_SERVER["DOCUMENT_ROOT"] ."/gallery/"; $files = $value; move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files); } $i++; } } ?>
Jeg vil gerne have lavet det lidt smartere (det virker nemlig, tak :) Lidt med at jeg sætter billedernes sti ind i en tabel... så der vil jeg gerne kunne have at navnet ville være noget som: id_nr.fil-extention eksempel 1 (3 billeder uploaded): 35_1.gif 35_2.gif 35_3.gif eksempel 2 (et billede uploaded): 36_1.jpg "id" er variablen: $faasidsteID og så ved jeg ikke lige hvordan man sætter "_nr" på også... det er det jeg lige vil spørge dig om, tak :)
if (isset($_POST['up'])) { $i = 0; $nr = 1; while (list($name, $value) = each($_FILES['upfil']['name'])) { if ($value) { $dist = $_SERVER["DOCUMENT_ROOT"] ."/gallery/"; $files = $value; $temparr = explode(".", $files); $temparr[count($temparr)-2] = "$faasidsteID_$nr"; $files = implode(".", $temparr); move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files); $nr++; } $i++; } }
Tak, det virker! :) Hvis jeg nu fremover godt vil tælle hvor mange der er i sådan et array, hvis jeg vil vide det... er det så bare: echo each($_FILES['navn']; eller hva...? hvis jeg vil skrive for eksempel: Du har $x_antal billeder tilføjet til det id...
Hvis de hedder filnavn[] $check = $_FILES['filnavn']['name']; foreach ($check as $a) { if ($a) { $u++; } } $u indeholder så det antal man har valgt.
25. juni 2003 - 22:07
#10
Okay, mange tak Noget andet er lige at filerne der bliver uploaded hedder: 1.gif,2.gif altså der står ikke <id>_nr.gif Jeg har følgende kode nu: if ($_FILES['billedeupload']) { $i = 0; $nr = 1; while (list($name, $value) = each($_FILES['billedeupload']['name'])) { if ($value) { $dist = "images/upload/"; $files = $value; $temparr = explode(".", $files); $temparr[count($temparr)-2] = "$faasidsteID_$nr"; $files = implode(".", $temparr); move_uploaded_file($_FILES['billedeupload']['tmp_name'][$i], $dist . $files); $destination = $dist . $files; mysql_query("INSERT INTO tabel (annonceID,billede) VALUES ('$faasidsteID','$destination')") or die (mysql_error()); $nr++; } $i++; } }
25. juni 2003 - 22:09
#11
Prøv -> $temparr[count($temparr)-2] = $faasidsteID."_".$nr; Ellers er du sikker på -> $faasidsteID indeholder noget?
25. juni 2003 - 22:14
#12
yes sir, det virker! :) Tak
25. juni 2003 - 22:14
#13
Det var så lidt.
26. juni 2003 - 00:21
#14
Hvis jeg lige kan spørge om et ekstra spørgsmål... hvis du har tid/lyst til at svare det... Hvordan gør jeg så det kun er grafikfiler og ikke zip-filer m.m. som må uploades? Tak.
26. juni 2003 - 00:41
#15
if(eregi(".jpg$|.gif$|.jpeg$", $files)) {
26. juni 2003 - 00:42
#16
if ($_FILES['billedeupload']) { $i = 0; $nr = 1; while (list($name, $value) = each($_FILES['billedeupload']['name'])) { if ($value) { $dist = "images/upload/"; $files = $value; if(eregi(".jpg$|.gif$|.jpeg$", $files)) { $temparr = explode(".", $files); $temparr[count($temparr)-2] = $faasidsteID."_".$nr; $files = implode(".", $temparr); move_uploaded_file($_FILES['billedeupload']['tmp_name'][$i], $dist . $files); $destination = $dist . $files; mysql_query("INSERT INTO tabel (annonceID,billede) VALUES ('$faasidsteID','$destination')") or die (mysql_error()); $nr++; } } $i++; } }
26. juni 2003 - 01:29
#17
Tak, det kører bare som smurt. :)
Vi tilbyder markedets bedste kurser inden for webudvikling