Avatar billede xeox Nybegynder
07. september 2004 - 13:16 Der er 25 kommentarer og
1 løsning

Hjælp til upload i DB

Hej eksperter !

Jeg har følgende script:

          <?php
            require("conn.php"); 
            ?>
          <?php
          error_reporting(E_ALL);          // DEBUG LINIE. nu udskrives alle fejlmeldinger

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

//til brug for info om filtyper
$tid = date("dmYHims");
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "application/x-zip-compressed", "application/octet-stream");

//stien, hvortil filerne skal placeres   
    $dist = "ann/";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
    echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
    exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Ikke tilladt til upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
exit;
    }

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
move_uploaded_file( $_FILES['upfile']["$tid"], $dist . $tid .$_FILES['upfile']['name']);

        }
    }
}

//indsætte i databasen
$message = '';
$filnavn = "http://bocowa.dk/ftc/ann/" . $_FILES['upfile']['name'];
  mysql_query("INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', 'http://bocowa.dk/ftc/ann/{$_FILES['upfile']['name']}', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')") or die(mysql_error());
    $HTTP_REFERER = $_SERVER['HTTP_REFERER'];
    $message = "<div align='center' style='font: smaller Verdana, Geneva, Arial, Helvetica, sans-serif; color: black;'>Annonchen blev lagt op.</div>";
?>

Det ligger et billede op på min server og laver navnet på billedet om til $tid.. Det virker fint, men når den så skal ligge det nye navn op i min MySQL så ligger den kun det originale navn op og ikke det nye, kan i se evt. en fejl ?
Avatar billede jakobdo Ekspert
07. september 2004 - 15:23 #1
Som jeg ser det, så bruger du jo ikke:

$filnavn = "http://bocowa.dk/ftc/ann/" . $_FILES['upfile']['name'];
Og du skal vel også indsætte den nye fil...
Du bruger 'http://bocowa.dk/ftc/ann/{$_FILES['upfile']['name']}' og det er vel dem netop uploadede fil!
Der skal du vel have fat i den fil du netop lige har uploadet, og så kalde den med navnet $tid...
Avatar billede trevi Nybegynder
07. september 2004 - 15:50 #2
"Der skal du vel have fat i den fil du netop lige har uploadet, og så kalde den med navnet $tid..."

ja hvordan gør jeg lige det
Avatar billede trevi Nybegynder
07. september 2004 - 15:51 #3
det virker nemlig ikke noget af det .. nu skriver den nemlig kun navnet, ikke engang stien der står bagved
Avatar billede trevi Nybegynder
07. september 2004 - 16:01 #4
update:

<html>
<head>
<title>Upload Annonche</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" height="493" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>
      <div align="center">
        <p>
          <?php
            require("conn.php");
            ?>
          <?php
          error_reporting(E_ALL);          // DEBUG LINIE. nu udskrives alle fejlmeldinger

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

//til brug for info om filtyper
$tid = date("dmYHims");
$Filnavnernu = "."  . $_FILES['upfile']['type'];
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "application/x-zip-compressed", "application/octet-stream");

//stien, hvortil filerne skal placeres
    $dist = "ann/";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
    echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
    exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Ikke tilladt til upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
exit;
    }

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se  http://dk.php.net/manual/en/function.is-uploaded-file.php  for "is_uploaded_file"
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
move_uploaded_file( $_FILES['upfile']['tmp_name'], $dist .$tid .$_FILES['upfile']["name"]);

        }
    }
}

//indsætte i databasen
$message = '';
$filnavn = "  http://bocowa.dk/ftc/ann/"  . $_FILES['upfile']['name'];
  mysql_query("INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', 'http://bocowa.dk/ftc/ann/{$_FILES['upfile']['name']}',  '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')") or die(mysql_error());
    $HTTP_REFERER = $_SERVER['HTTP_REFERER'];
    $message = "<div align='center' style='font: smaller Verdana, Geneva, Arial, Helvetica, sans-serif; color: black;'>Annonchen blev lagt op.</div>";
?>
            <?=$message?>
          <br>
          <br>
        </p>
      </div>
    </td>
  </tr>
</table>
</body>
</html>


Det her virker perfekt, bortset fra det med DB, den ikke ligger det nye navn ind
Avatar billede jakobdo Ekspert
07. september 2004 - 16:05 #5
Måske du kan finde hjælp i denne artikel:

http://www.udvikleren.dk/thread.php?techid=6&f=6&t=1920

Bemærk, det har $til og $fra variabel!
Lav din $fra som du ønsker, og gem den i DB!
Avatar billede xeox Nybegynder
07. september 2004 - 16:06 #6
hov, min bror havde ikke lukket af hans bruger.
Avatar billede xeox Nybegynder
07. september 2004 - 16:12 #7
det er ikke noget som hjælper mig, den ligger tingene fint op på serveren, men ikke i mysql !
Avatar billede eagleeye Praktikant
08. september 2004 - 00:22 #8
Jeg tror også du må lave en variable med fil destinationen:

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
$til = $dist .$tid .$_FILES['upfile']["name"]
move_uploaded_file( $_FILES['upfile']['tmp_name'], $til);


Så rette det i SQL sætningen så den bruger $til:

'http://bocowa.dk/ftc/{$til}'
Avatar billede xeox Nybegynder
08. september 2004 - 08:47 #9
den siger fejl her:
move_uploaded_file( $_FILES['upfile']['tmp_name'], $til);

den skriver:

Parse error: parse error, unexpected T_STRING in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 51
Avatar billede iss Novice
08. september 2004 - 08:51 #10
$til = $dist .$tid .$_FILES['upfile']["name"]
mangler en ;
Avatar billede xeox Nybegynder
08. september 2004 - 09:44 #11
ja det så jeg lige hehe ;) .. nu har jeg kun det sidste problem, nu virker det her perfekt, men når den ligger det op, der tager den både $tid og navnet på billedet og ligger op, både på server og DB, jeg vil gerne have den kun ændre navnet til $tid og ikke beholder det originale navn, hvordan kan jeg gøre det?
Avatar billede eagleeye Praktikant
08. september 2004 - 13:23 #12
Du kan rette $til så den ikke har fet orginale filnavn med, den filen skal vel havde en extention?:

$til = $dist .$tid ;
Avatar billede xeox Nybegynder
08. september 2004 - 13:33 #13
Ja det ved jeg godt :), men så laver den ikke en .jpg og .gif osv osv. :( ?
Avatar billede xeox Nybegynder
08. september 2004 - 13:39 #14
altså, den skriver det ikke bag på filen :(
Avatar billede jakobdo Ekspert
08. september 2004 - 13:43 #15
Hvad med at lave lidt debugging?
Inden du kører din INSERT INTO, så prøv med ECHO $til;
Du må give lidt mere info!
Avatar billede eagleeye Praktikant
08. september 2004 - 17:12 #16
Hvad med dette så:

$til = $dist .$tid. substr($_FILES['upfile']["name"],strrpos($_FILES['upfile']["name"],'.'));
Avatar billede xeox Nybegynder
08. september 2004 - 21:49 #17
ja fint nok, nu ligger den fint det helt korrekte op på serveren, men den desværre intet ligger på serveren ? den opretter slet ikke filen
Avatar billede eagleeye Praktikant
08. september 2004 - 21:51 #18
Men det virkede i går?

Hvor kommer $_FILES['upfile']['tmp_name'] fra i denne linje?
move_uploaded_file( $_FILES['upfile']['tmp_name'], $til);

Bør det ikke være:
move_uploaded_file( $_FILES['upfile']['name'], $til);
Avatar billede xeox Nybegynder
08. september 2004 - 21:56 #19
så den skal laves om til den anden igen?

bare sådan her:

$til = $dist .$tid ;

move_uploaded_file( $_FILES['upfile']['name'], $til);
Avatar billede eagleeye Praktikant
08. september 2004 - 21:58 #20
Ja men $til skal være sådan så efternavnet kommer med

$til = $dist .$tid. substr($_FILES['upfile']["name"],strrpos($_FILES['upfile']["name"],'.'));
move_uploaded_file( $_FILES['upfile']['name'], $til);
Avatar billede xeox Nybegynder
08. september 2004 - 22:04 #21
nu falder jeg snart af stolen, det virkede heller ikke :-O?

Den gør det samme .. den ligger det fint op i DB, men ikke på serveren, der ligger den intet op, og den står til korrekt folder, og folder er chmod til 777
Avatar billede eagleeye Praktikant
08. september 2004 - 22:09 #22
Prøv at udskrive $til og se om filnavnet og stien passer.

$til = $dist .$tid. substr($_FILES['upfile']["name"],strrpos($_FILES['upfile']["name"],'.'));
echo $til;
move_uploaded_file( $_FILES['upfile']['name'], $til);
Avatar billede xeox Nybegynder
08. september 2004 - 22:22 #23
Ja det gør den, den skriver fint at den ligger den op hehe.. ann/0809200422200935.gif
Avatar billede eagleeye Praktikant
08. september 2004 - 22:26 #24
ligger php filen i ftc folderen?

Eller skulle sti + filnavn være: /ftc/ann/0809200422200935.gif ?
Avatar billede xeox Nybegynder
08. september 2004 - 22:27 #25
nej filen ligger i ftc folderen, og så ligger der mappen ann som den skal ligge billedet i. så det er korrekt nok
Avatar billede xeox Nybegynder
23. oktober 2004 - 17:07 #26
-lukket-
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