Avatar billede mike2002 Nybegynder
21. maj 2007 - 20:40 Der er 9 kommentarer og
1 løsning

"Luk vindue funktion" i en if-statement

Jeg har dette script til upload af filer (nappet fra en eller anden php-tutorial-side - er nemlig ikke selv den store wiz):

//html-form//
<?php
//check that we have a file
if((!empty($_FILES["filnavn"])) && ($_FILES['filnavn']['error'] == 0)) {
  //Check if the file is JPEG image and it's size is less than 350Kb
  $filename = basename($_FILES['filnavn']['name']);
  $ext = substr($filename, strrpos($filename, '.') + 1);
  if (($ext == "jpg") or ($ext == "jpeg") or ($ext == "JPG") or ($ext == "JPEG")
                                      && ($_FILES["filnavn"]["type"] == "image/jpeg") &&
    ($_FILES["filnavn"]["size"] < 350000)) {
    //Determine the path to which we want to save this file
      $newname = dirname(__FILE__).'/../billeder/'.$filename;
      //Check if the file with the same name is already exists on the server
      if (!file_exists($newname)) {
        //Attempt to move the uploaded file to it's new place
        if ((move_uploaded_file($_FILES['filnavn']['tmp_name'],$newname))) {
          echo "Din fil er blevet gemt som: ".$newname.
                   
  $query = "INSERT INTO billeder SET billednavn='".$_FILES['filnavn']['name']."'";

  $Result1 = mysql_query($query, $Hujelauget) or die(mysql_error());

        } else {
          echo "Fejl: Der opstod et problem under overførslen";
        }
      } else {
        echo "Fejl: Filen ".$_FILES["filnavn"]["name"]." eksisterer allerede";
      }
  } else {
    echo "Fejl: kun .jpg billeder under 350Kb kan uploades";
  }
} else {
echo "Fejl: din fil blev ikke overført";
}
?>

Jeg har nu tre spørgsmål:

1. Jeg kan ikke få lavet en "luk vinduet"-funktion i samme if-statement som "Din fil er blevet gemt som..." da jeg får fejl lige så snart jeg prøver at indsætte tags... Kan det ikke lade sig gøre?

2. I forlængelse af 1: Linjeskift? Ville gerne have "luk vindue"-funktionen et par linjer ned - men stadig ingen <br> tags.

3. Når upload-siden loades vises den generelle fejl "Fejl, din fil blev ikke overført" - fordi scriptet køres med det samme vinduet loader (tror jeg?). Kan man ikke ændre det?

Håber ikke jeg har stillet for lidt point i udsigt i forh. t. sværhedsgraden...?
Avatar billede jakobdo Ekspert
21. maj 2007 - 21:17 #1
1: Åbner selve vinduet i et popup vindue? Hvis ja, kan du bruge koden: <a href="#" onclick="window.close();">Luk Vindue</a>

2: Hvis ikke du vil bruge <br />, så skal du måske overveje <p> eller <div>

3: Du har garanteret en input submit knap, tjek om den er sat uden om din if/else, f.eks.
if(isset($_POST['uploadFile']))
{
//check that we have a file
if((!empty($_FILES["filnavn"])) && ($_FILES['filnavn']['error'] == 0)) {
....
echo "Fejl: din fil blev ikke overført";
}
}
Avatar billede mike2002 Nybegynder
21. maj 2007 - 22:48 #2
->1: ja, det er et popup vindue, men problemet er jo, at jeg får fejl, når jeg indsætter noget som helst kode, der starter med '<' i denne linje, som f.eks.:

if ((move_uploaded_file($_FILES['filnavn']['tmp_name'],$newname))) {
          echo "Din fil er blevet gemt som: ".$newname.<a href="#" onclick="window.close();">Luk Vindue</a>

giver fejl: unexpected '<'

og denne her, som jeg ellers troede lidt på:

if ((move_uploaded_file($_FILES['filnavn']['tmp_name'],$newname))) {
          echo "Din fil er blevet gemt som: ".$newname.?><a href="#" onclick="window.close();">Luk Vindue</a><?php ...//videre med php//...

giver fejl: unexpected ';'

2: stadig samme problem...

3: Med:

if(isset($_post['uploadFile']))
{

...//kode//...

echo "Fejl: din fil blev ikke overført";
}
}

forsvinder fejlmeddelelsen ved load af vindue, men overførslen sker ikke. Der kommer hverken fejlmeddelelser eller noget...

Skal 'if(isset($_post['uploadFile']))' hos mig hedde 'if(isset($_post['filnavn']))' eller hvad? Jeg har prøvet - samme resultat...

Min form ser i øvrigt sådan ud:

<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
  <p>Fil, der skal overf&oslash;res:
    <input name="filnavn" type="file" id="filnavn">
  </p>
  <p>
    <input name="Submit" type="submit" id="Submit" value="Overfør">
</p>
</form>

men den er der vist ikke meget spændende i...

Anyhows - er på vej i seng for i dag. Kigger forbi igen i morgen!
Avatar billede mike2002 Nybegynder
21. maj 2007 - 22:59 #3
Rodede alligevel lidt videre med det.

1. og 2. er løst. Der manglede li'ssom ." i slutningen af en linje. Den ser nu sådan ud:

if ((move_uploaded_file($_FILES['filnavn']['tmp_name'],$newname))) {
          echo "It's done! The file has been saved as: ".$newname.".";
?>
          <br>
          <a href="#" onclick="window.close();">Luk Vindue</a>

<?php

osv.

if(isset... vil jeg gerne have til at virke, hvis nogen kan hjælpe???
Avatar billede jakobdo Ekspert
22. maj 2007 - 08:51 #4
Vis mig hvordan din form ser ud, så skal jeg give dig koden som virker med isset()
Avatar billede mike2002 Nybegynder
22. maj 2007 - 09:41 #5
Det ville være super-fedt. Her får du hele filen (efter user-auth.):

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

<body>
<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
  <p>Fil, der skal overf&oslash;res:
    <input name="filnavn" type="file" id="filnavn">
  </p>
  <p>
    <input name="Submit" type="submit" id="Submit" value="Overfør">
</p>
</form>
<?php

//check that we have a file
if((!empty($_FILES["filnavn"])) && ($_FILES['filnavn']['error'] == 0)) {
  //Check if the file is JPEG image and it's size is less than 350Kb
  $filename = basename($_FILES['filnavn']['name']);
  $ext = substr($filename, strrpos($filename, '.') + 1);
  if (($ext == "jpg") or ($ext == "jpeg") or ($ext == "JPG") or ($ext == "JPEG")
                                      && ($_FILES["filnavn"]["type"] == "image/jpeg") &&
    ($_FILES["filnavn"]["size"] < 350000)) {
    //Determine the path to which we want to save this file
      $newname = dirname(__FILE__).'/../billeder/'.$filename;
      //Check if the file with the same name is already exists on the server
      if (!file_exists($newname)) {
        //Attempt to move the uploaded file to it's new place
        if ((move_uploaded_file($_FILES['filnavn']['tmp_name'],$newname))) {
          echo "Fedt! Din fil er gemt som: ".$newname.".";?>
          <br>
          <a href="#" onclick="window.close();">Luk Vindue</a><?php
                   
  $query = "INSERT INTO billeder SET billednavn='".$_FILES['filnavn']['name']."'";

  $Result1 = mysql_query($query, $Hujelauget) or die(mysql_error());

        } else {
          echo "Fejl: Der opstod et problem under overførslen";
        }
      } else {
        echo "Fejl: Filen ".$_FILES["filnavn"]["name"]." eksisterer allerede";
      }
  } else {
    echo "Fejl: kun .jpg billeder under 350Kb kan uploades";
  }
 
} else {
echo "Fejl: din fil blev ikke overført";
}

?>
</body>
</html>
Avatar billede jakobdo Ekspert
22. maj 2007 - 09:59 #6
<?php

$respons = '';

//Is the Submit button pushed?
if(isset($_POST['Submit']))
{
    //check that we have a file
    if((!empty($_FILES["filnavn"])) && ($_FILES['filnavn']['error'] == 0))
    {
        //Check if the file is JPEG image and it's size is less than 350Kb
        $filename = basename($_FILES['filnavn']['name']);
        $ext = substr($filename, strrpos($filename, '.') + 1);
        if (($ext == "jpg") or ($ext == "jpeg") or ($ext == "JPG") or ($ext == "JPEG") && ($_FILES["filnavn"]["type"] == "image/jpeg") && ($_FILES["filnavn"]["size"] < 350000))
        {
            //Determine the path to which we want to save this file
            $newname = dirname(__FILE__).'/../billeder/'.$filename;
           
            //Check if the file with the same name is already exists on the server
            if (!file_exists($newname))
            {
                //Attempt to move the uploaded file to it's new place
                if ((move_uploaded_file($_FILES['filnavn']['tmp_name'],$newname)))
                {
                    $respons = 'Fedt! Din fil er gemt som: '.$newname.'<br /><a href="#" onclick="window.close();">Luk Vindue</a>';
                    $query = "INSERT INTO billeder SET billednavn='".$_FILES['filnavn']['name']."'";
                    $Result1 = mysql_query($query, $Hujelauget) or die(mysql_error());
                }
                else
                {
                    $respons = "Fejl: Der opstod et problem under overførslen";
                }
            }
            else
            {
                $respons = 'Fejl: Filen '.$_FILES['filnavn']['name'].' eksisterer allerede';
            }
        }
        else
        {
            $respons = 'Fejl: kun .jpg billeder under 350Kb kan uploades';
      }
    }
    else
    {
        $respons = 'Fejl: din fil blev ikke overført';
    }
}
?>
<html>
<head>
<title>Upload billede</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if(!empty($respons))
{
    echo $respons . '<br />';
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
  <p>Fil, der skal overf&oslash;res:
    <input name="filnavn" type="file" id="filnavn">
  </p>
  <p>
    <input name="Submit" type="submit" id="Submit" value="Overfør">
</p>
</form>
</body>
</html>
Avatar billede mike2002 Nybegynder
22. maj 2007 - 11:03 #7
Det ser godt ud - prøver det så snart jeg kommer hjem... Læg et svar, så du kan få dine velfortjente points.

Skal formen altid stå efter php-koden?

Smart med den $respons-variabel! Tak skal du ha'!
Avatar billede jakobdo Ekspert
22. maj 2007 - 11:09 #8
Svar!
Det er altid godt at lave din php kode først, og så output efterfølgende.
Hvis nu man skulle få lyst til at bruge header() så vil du forstå hvorfor. :o)
Avatar billede mike2002 Nybegynder
22. maj 2007 - 11:24 #9
Ja, ok. Er ikke helt inde i alt det med headers.... Men skal huske det alligevel.
Avatar billede jakobdo Ekspert
22. maj 2007 - 11:49 #10
:o)
Og 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