Avatar billede tomb3 Nybegynder
09. november 2005 - 06:07 Der er 13 kommentarer og
2 løsninger

Dropdown der ændre action

Har en uploadform, hvor action peger på selve uploadscriptet.
Ønsker en dropdown, hvor man kan vælge forskellige kategorier, hvorefter action ændres til valgte kategori.

Eks.:

[Down down menu]
- Kat1
- Kat2
- Kat3

Når kat2 vælges, skal action="" i min form ændres til url for kat2.


Form:

<form method="post" enctype="multipart/form-data" action="upload/kat1.php">
Select file: <input type="file" name="userfile">
<input type="submit" value="Upload">
</form>



Nogen der kan hjælpe?
Avatar billede tomb3 Nybegynder
09. november 2005 - 06:08 #1
Ups.. Kom til at smide den forkert, skulle selvfølgelig have være i JavaScript.
Er vist lidt træt :S
Avatar billede showsource Seniormester
09. november 2005 - 06:11 #2
er det ikke nemmere blot at lade php bruge værdien i din dropdown?
I stedet for at ha' flere forskellige filer som gør samme job?
Avatar billede roenving Novice
09. november 2005 - 06:11 #3
Så flyt den !-)

-- dvs. læg selv et svar her, markér dit navn i boksen til venstre og accepter svaret, og opret den derefter i javascript-kategorien !-)
Avatar billede roenving Novice
09. november 2005 - 06:14 #4
-- men løsningen kunne f.eks. være:

<select onchange="if(this.selectedIndex>0)this.form.action='upload/'+this.value+'.php'">
  <option>Vælg kategori</option>
  <option value="kat1">Kategori 1</option>
  <option value="kat2">Kategori 2</option>
  <option value="kat3">Kategori 3</option>
  <option value="kat4">Kategori 4</option>
</select>
Avatar billede tomb3 Nybegynder
09. november 2005 - 06:19 #5
showsource> Doh.. jo :)

Men hvordan får jeg strikket det ind?

Er $folder jeg skal have dropdown til at ændre.

upload.php >


<?
// Upload settings
$folder = "upload/kat1"; // Folder in which to store files
$maxlimit = 500000; // Set maximum file limit (in bits)
$allowed_ext = "jpg,gif,png,jpeg"; // Set allowed extensions (split using comma)
$overwrite = "no"; // Allow file overwrite? yes/no

$match = ""; // Clear match variable; for security purposes
$filesize = $_FILES['userfile']['size']; // Get file size (in bits)
$filename = strtolower($_FILES['userfile']['name']); // Get file name; make it all lowercase


if(!$filename || $filename==""){ // File not selected
  $error = "- No file selected for upload.<br>";
}elseif(file_exists($folder.$filename) && $overwrite=="no"){ // Check if file exists
  $error = "- File already exists: $filename<br>";
}

// Check if file size
if($filesize < 1){ // File is empty
  $error .= "- File size is empty.<br>";
}elseif($filesize > $maxlimit){ // File is more than maximum
  $error .= "- File size is too big.<br>";
}

$file_ext = preg_split("/\./",$filename); // Split filename at period (name.ext)
$allowed_ext = preg_split("/\,/",$allowed_ext); // Create array of extensions
foreach($allowed_ext as $ext){
  if($ext==$file_ext[1]) $match = "1"; // File is allowed
}

// File extension not allowed
if(!$match){
  $error .= "- File type isn't allowed: $filename<br>";
}

if($error){
  print "Error trying to upload file:<br> $error"; // Display error messages
}else{
  if(move_uploaded_file($_FILES['userfile']['tmp_name'], $folder.$filename)){ // Upload file
      print "Success! The file has been uploaded: $filename";
  }else{
      print "Error! File size might exceed upload limit of server. Try again."; // Display error
  }
}

?>
Avatar billede roenving Novice
09. november 2005 - 06:59 #6
-- og jeg er iøvrigt helt enig med showsource i, at du lige så godt kan hente værdien server-side, det er vist helt almindeligt ikke at være så klart-tænkende på denne tid ...

-- og jeg ville gætte på:

// Upload settings
$folder = "upload/" + $_POST["selectKat"]; // Folder in which to store files
Avatar billede showsource Seniormester
09. november 2005 - 12:54 #7
Ved faktisk om + kan gøre det, tror det nu ikke :O)

// Upload settings
$folder = "upload/". $_POST["selectKat"]; // Folder in which to store files
Avatar billede tomb3 Nybegynder
09. november 2005 - 15:12 #8
Hvordan får jeg det til at virke? Er ikke så skarp til php endnu ;)
Skal vel have definet mine kategorier?

Hvad med min form?
Avatar billede tomb3 Nybegynder
09. november 2005 - 17:23 #9
Har lavet det således:

Form>

<form method="post" enctype="multipart/form-data" action="upload.php">
<select size="1" name="category">
<option selected>Vælg en kategori</option>
<option value="1">Kategori 1</option>
<option value="2">Kategori 2</option>
<option value="3">Kategori 3</option>
</select><br>
Select file: <input type="file" name="userfile">
<input type="submit" value="Upload">
</form>


Upload.php >

if ($_POST['category'] == 1) { $folder = "upload/kat1/"; }
elseif ($_POST['category'] == 2) { $folder = "upload/kat2/"; }
elseif ($_POST['category'] == 3) { $folder = "upload/kat3/"; }
Avatar billede showsource Seniormester
10. november 2005 - 08:53 #10
Du kan ligeså¨godt lade din select ha' en defaultmappe.

<form method="post" enctype="multipart/form-data" action="upload.php">
Kategori: <select size="1" name="category">
<option value="1">Kategori 1</option>
<option value="2">Kategori 2</option>
<option value="3">Kategori 3</option>
</select><br>
Select file: <input type="file" name="userfile">
<input type="submit" value="Upload">
</form>

Og i din upload.php

if(is_dir("upload/kat". $_POST["category"])) { // Findes dir?
$folder = "upload/kat". $_POST["category"] ."/";
}else{
$folder = "upload/kat1/";
}
Avatar billede tomb3 Nybegynder
14. januar 2006 - 17:42 #11
Smid svar begge 2 :)
Avatar billede roenving Novice
15. januar 2006 - 05:19 #12
Oki '-)
Avatar billede showsource Seniormester
15. januar 2006 - 16:53 #13
ok
Avatar billede tomb3 Nybegynder
19. januar 2006 - 16:37 #14
Tak for hjælpen gutter :)
Avatar billede roenving Novice
19. januar 2006 - 17:11 #15
-- og jeg takker for point ;~}
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