Avatar billede mr-baluba Nybegynder
01. marts 2005 - 12:30 Der er 3 kommentarer og
1 løsning

Fil upload og db entry

Hej folkens. Jeg er ved at lave et simpelt (ikke for mig :P) foto galleri, hvor jeg har en "image submit side" som uploader et fil til serveren samt sætter info ind i en sql db (filnavn, kategori og kommentar). Jeg bruger dreamweaver mx, men tænkte at det var her jeg skulle spørge da jeg bruger php til at uploade.

Filen bliver uploadet korrekt, men der bliver ikke sat noget ind i db'en - og jeg får en "cannot find page" fejl når jeg submitter formen. Kan nogen se hvorfor?

<?php
//    ---------------------------------------------
//    Pure PHP Upload version 1.1
//    -------------------------------------------
if (phpversion() > "4.0.6") {
    $HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",500000);
define("DESTINATION_FOLDER", "images");
define("no_error", "");
define("yes_error", "");
$_accepted_extensions_ = "jpg, gif, png";
if(strlen($_accepted_extensions_) > 0){
    $_accepted_extensions_ = @explode(",",$_accepted_extensions_);
} else {
    $_accepted_extensions_ = array();
}
$_file_ = $HTTP_POST_FILES['filnavn'];
if(is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['filnavn']['error'] == 0){
    $errStr = "";
    $_name_ = $_file_['name'];
    $_type_ = $_file_['type'];
    $_tmp_name_ = $_file_['tmp_name'];
    $_size_ = $_file_['size'];
    if($_size_ > MAX_SIZE && MAX_SIZE > 0){
        $errStr = "File troppo pesante";
    }
    $_ext_ = explode(".", $_name_);
    $_ext_ = strtolower($_ext_[count($_ext_)-1]);
    if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
        $errStr = "Estensione non valida";
    }
    if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
        $errStr = "Cartella di destinazione non valida";
    }
    if(empty($errStr)){
        if(@copy($_tmp_name_,DESTINATION_FOLDER . "/" . $_name_)){
            header("Location: " . no_error);
        } else {
            header("Location: " . yes_error);
        }
    } else {
        header("Location: " . yes_error);
    }
}

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "uploadForm")) {
  $insertSQL = sprintf("INSERT INTO billeder (navn, kategori, kommentar) VALUES (%s, %s, %s)",
                      GetSQLValueString($HTTP_POST_VARS['filnavn'], "text"),
                      GetSQLValueString($HTTP_POST_VARS['kategori'], "text"),
                      GetSQLValueString($HTTP_POST_VARS['kommentar'], "text"));

  mysql_select_db($database_something, $something);
  $Result1 = mysql_query($insertSQL, $something) or die(mysql_error());

  $insertGoTo = "imgdone.htm";
  if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>
... her kommer så resten af html'en

Ps, har brugt en extension til upload delen.
Avatar billede angam Nybegynder
02. marts 2005 - 20:35 #1
Prøv engang at rette
$_accepted_extensions_ = "jpg, gif, png";
til
$_accepted_extensions_ = ".jpg,.gif,.png";
(fjern mellemrummet) - mellemrummet gør at du får et array af fil-ekstensions array = (' jpg',' gif',' png') - herefter tester den for om hver enkelt filtype findes i filnavnet - ' gif' findes ikke i 'test.gif', men det gør '.gif' derimod.

De to konstanter no_error og yes_error skal pege på hhv. 'upload_ok.php' eller 'fejl.php' (hvad du nu kalder dem) - lige nu peger de på "" (ingenting!).

Prøv at se om det hjælper ..
Avatar billede angam Nybegynder
02. marts 2005 - 20:38 #2
... ovenstående besvarer ikke db-problemet, som jeg stadigvæk prøver at finde hoved og hale i skal jeg indrømme ;-)
Avatar billede mr-baluba Nybegynder
03. marts 2005 - 09:21 #3
Hmm, hvis jeg gør som du siger kommer den "rigtigt" nok til fejlsiden, men billedet bliver ikke uploadet. Og hvis jeg beholder...
$_accepted_extensions_ = "jpg, gif, png";  og peger på yes/no_error siderne, så sker det samme. Billedet bliver uploadet men jeg får "page not found".
Har kigget på andre upload scripts, men kan ikke få det til at fungere.
Avatar billede mr-baluba Nybegynder
03. marts 2005 - 10:52 #4
Fik det til at køre nogenlunde med et andet script herfra E. Har dog stadig lidt småproblemer. Lukker og laver et nyt når jeg lige har fundet hoved og hale :P
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