Avatar billede uthsen Nybegynder
30. april 2009 - 23:24 Der er 12 kommentarer og
1 løsning

Koden skal vælge netop uploaded fil og ikke en tilfældig fil der ligger i mappen - eller...

Jeg vil gerne have denne kode til at vælge det billede i mappen som sidst er uploadet eller også skal koden slette alle filer i mappen før der uploades en ny billedfil. Det er altså OK hvis der altid kun er en enkelt billedfil.
Som det er nu vælger koden bare en tilfældig fil i mappen til visning.

Koden er her og problemet kommer i andet afsnit:
<!--**********************************************************************************************'-->
<a name="hvalp1billede"></a>
<?php
//SETTINGS
$uploadDir = 'hvalp1_upload/'; //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir = 'hvalp1_thumbs/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix = 'thumb_'; //Hvad skal tilføjes til originalt filnavn?
$thumbHeight = 200; //Thumb højde
$thumbWidth = 200; //Thumb bredde
$thumbQuality = 85; //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst
//Funktioner som bruges:
function getExtension1($filename){
return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}
function resize1( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
$extension = getExtension1($filename);
switch($extension)
{
case 'jpeg':
case 'jpe':
case 'jpg':
$srcim = imagecreatefromjpeg( $filename );
break;
case 'gif':
$srcim = imagecreatefromgif( $filename );
break;
case 'png':
$srcim = imagecreatefrompng( $filename );
break;
default:
return false;
}
$ow = imagesx( $srcim );
$oh = imagesy( $srcim );
$wscale = $maxw / $ow;
$hscale = $maxh / $oh;
$scale = min( $hscale, $wscale );
$nw = round( $ow * $scale, 0 );
$nh = round( $oh * $scale, 0 );
$dstim = imagecreatetruecolor( $nw, $nh );
imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
switch($extension)
{
case 'jpeg':
case 'jpe':
case 'jpg':
imagejpeg( $dstim, $newfilename, $quality );
break;
case 'gif':
imagegif( $dstim, $newfilename );
break;
case 'png':
$png_q = floor( abs( $quality / 10 - 9.9 ) );
imagepng( $dstim, $newfilename, $png_q );
break;
default:
return false;
}
imagedestroy( $dstim );
imagedestroy( $srcim );
return file_exists($newfilename);
}
//Er der trykket på Upload file knappen?
if(isset($_POST['myUpload1']))
{
//Har vi en fil?
if(is_uploaded_file($_FILES['myFile1']['tmp_name']))
{
//Filendelse
$extension = getExtension1($_FILES['myFile1']['name']);
//Er filen en af de filer vi gerne vil have?
if(in_array($extension,$allowedFileTypes))
{
//Vi flytter filen fra tmp til vores UPLOADDIR
if(move_uploaded_file($_FILES['myFile1']['tmp_name'],$uploadDir . basename($_FILES['myFile1']['name'])))
{
if(resize1($uploadDir . basename($_FILES['myFile1']['name']), $thumbDir . $thumbPrefix . basename($_FILES['myFile1']['name']), $thumbWidth, $thumbHeight, $thumbQuality)){
echo '<h5 style="color:green;">Filen ('.basename($_FILES['myFile1']['name']).') er uploaded og resized med succes</h5>';
}else{
echo '<h5 style="color:red;">Filen ('.basename($_FILES['myFile1']['name']).')er uploaded med succes, men resize fejlede</h5>';
}
}
else
{
echo '<h5 style="color:red;">Error - det var ikke muligt at uploade filen: '.basename($_FILES['myFile1']['name']).'</h5>';
}
}
else
{
echo '<h5 style="color:red;">Forkert filtype, tilladte filtype er: ('.implode(',',$allowedFileTypes).')</h5>';
}
}
else
{
echo '<h5 style="color:red;">Ingen fil er valgt<h5>';
}
}
//Vores form
echo '<form action="start.php" target="_self" method="post" enctype="multipart/form-data">';
echo 'File ('.implode(',',$allowedFileTypes).'): <input type="file" name="myFile1"><br />';
echo '<input type="submit" name="myUpload1" value="Upload file">';
echo '</form>';
?>
<!--***********************************************************HER KOMMER PROBLEMET************************************************-->
<?
/* Her findes et tilfældigt billede i mappen */
$filnavne = glob("hvalp1_thumbs/*.jpg");
$tilfaeldig = array_rand($filnavne);
$filnavn=$filnavne[$tilfaeldig];

/* Her findes størrelsen på billedet */
list($width, $height) = getimagesize($filnavn);

/* Her tilføjes html-kode, og billedet og dets størrelse indsættes i koden */
echo "<img src='$filnavn' width='$width' height='$height' alt='Her er en musetekst'>";

/* Her findes en tilfældig fil i mappen */
$filnavne = glob("hvalp1_thumbs/*.php");
$tilfaeldig = array_rand($filnavne);
$filnavn=$filnavne[$tilfaeldig];

/* Her indsættes den tilfældige fil */

?>
<br>

<!--********************************************************************************************'-->

Eksemplet kan downloades her:

http://www.dkk-chihuahua-hvalpe.dk/eksperten/enkeltbillede.zip

Nogen der kan hjælpe :O)

KH Helle
Avatar billede CCodam Nybegynder
01. maj 2009 - 01:21 #1
Hvad vil du helst have? at der altid kun er 1 fil eller at den tager den sidst uploadede?
Avatar billede jakobdo Ekspert
01. maj 2009 - 11:31 #2
Hvad med noget i stil med:

/* Her findes det sidste billede i mappen */
$filnavne = glob("upload/*.jpg");
sort($filnavne);
$filnavn=end($filnavne);

Og ønskes det store billede, bruger du:

/* Her findes det sidste billede i mappen */
$filnavne = glob("upload/*.jpg");
sort($filnavne);
$filnavn=str_replace('_small','',end($filnavne));
Avatar billede CCodam Nybegynder
01. maj 2009 - 12:15 #3
#2 Er du sikker på at glop henter filnavne ind i sådan en orden så det er last modified der kommer sidst?

Eller vil du her også lave det om til Billede1..2..3..4..5 når billederne blir uploadet?

Jeg er dog stadig ikke sikker på at glop her, vil finde Billede9 før Billede77...men det er da et forsøg værd :)

Jeg havde dog tænkt et lidt mere avanceret metode, og lede efter filen der sidst var rettet ved hjælp af php funktionen filemtime

Eller bruge php funktionen unlink til at slette alle filer i mappen, og derefter vise det eneste der er tilbage...
Avatar billede jakobdo Ekspert
01. maj 2009 - 12:38 #4
Hvad tror du min sort() før ?

sort($filnavne); //:o)
Avatar billede jakobdo Ekspert
01. maj 2009 - 12:38 #5
før = gør. :o/

Fedt man ikke kan stave og spille smart samtidig.
Avatar billede uthsen Nybegynder
01. maj 2009 - 12:54 #6
jakodo DET VIRKER!!!!!!-- ser det i hvert fald ud til ---og TAK TUSIND TAK FOR DET!!!
Så kan jeg vist godt gå ud for at nyde solen :O) - sikke en dejlig dag!!

jakodo læg et svar og få dine point!

KH Helle
Avatar billede uthsen Nybegynder
01. maj 2009 - 13:03 #7
koden kom til at se sådan ud:

<?
/* Her findes et tilfældigt billede i mappen */
$filnavne = glob("hvalp1_thumbs/*.jpg");
sort($filnavne);
$filnavn=end($filnavne);

/* Her findes størrelsen på billedet */
list($width, $height) = getimagesize($filnavn);

/* Her tilføjes html-kode, og billedet og dets størrelse indsættes i koden */
echo "<img src='$filnavn' width='$width' height='$height' alt='Her er en musetekst'>";

/* Her findes en tilfældig fil i mappen */
$filnavne = glob("hvalp1_thumbs/*.php");


sort($filnavne);
$filnavn=str_replace('_thumbs','',end($filnavne));


/* Her indsættes den tilfældige fil */

?>
<br>

Den fejler dog, hvis bruger oploader det samme billede mere end en gang, men det kan jeg godt leve med,hvis det ikke nemt kan rettes :O)

Så jakodo læg bare et svar :O)

KH Helle
Avatar billede jakobdo Ekspert
01. maj 2009 - 13:28 #8
Svar!
Avatar billede jakobdo Ekspert
01. maj 2009 - 14:05 #9
Takker for point.
Avatar billede CCodam Nybegynder
01. maj 2009 - 14:07 #10
Jakobdo, er du sikker på at sort ser Billede9 som noget der kommer før Billede7777777?

Jeg tror nemlig bare den tjekker char for char, og når til at sammenligne 7 og 0, så siger den fint, 7 kommer først, selvom det i realiteten er 9 da 7777777 er et større tal ;)

Men jeg regner med at du har styr på det?
Avatar billede CCodam Nybegynder
01. maj 2009 - 14:14 #11
og når den så sammenligner 7 og 9*
Avatar billede jakobdo Ekspert
01. maj 2009 - 14:19 #12
Måske sort skal rettes til natsort. :o)
Avatar billede CCodam Nybegynder
01. maj 2009 - 14:30 #13
#12 Se den funktion kendte jeg ikke...men så ser det jo langt fornuftigere ud :)

Altid rart at lære noget nyt...
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