Avatar billede MarkA Praktikant
22. april 2008 - 17:46 Der er 7 kommentarer og
1 løsning

Hjælp til array?

Jeg har lavet et galleri hvor man skal kunne uploade flere billeder af gangen, me uanset om man uploader 1 eller flere billeder bliver beskrivelsen når den sendes til databasen kaldt for "array".

Lidt kode:

formularen:
<?php

$images = 1;
$descript = 1;

?>
<form enctype="multipart/form-data" action="do_add_pics.php" method="post">
    <table>
<?
    for($i = 1; $i <= $images; $i++)
    {
        echo '<tr><td>Billede '.$i.'</td><td><input type="file" name="pictures['.$i.']" /></td></tr>'."\r\n";
        echo '<tr><td>beskrivelse '.$i.'</td><td><input type="text" name="descript['.$i.']" /></td></tr>'."\r\n";
        echo '<tr><td>&nbsp;</td></tr>'."\r\n";
    }   
   
   
       
?>
<tr><td colspan="2" align="center"><input type="submit" name="upload" value="Upload File" /></td></tr>
</table>
</form>


resize og upload siden:
<?
session_start();
function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim ); //Billedets originale width
    $oh = imagesy( $srcim ); //Billedets originale height
    $wscale = $maxw / $ow; //Skalering af width
    $hscale = $maxh / $oh; // Skalering af height
    $scale = ( $hscale < $wscale ? $hscale : $wscale ); // Skalerings forhold udregnes
    $nw = round( $ow * $scale, 0 ); // Billedets nye width
    $nh = round( $oh * $scale, 0 ); // Billedets nye height
    $dstim = imagecreatetruecolor( $nw, $nh ); // Billedet oprettes med den nye mål
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}

include('conn.php'); //Forbinder til database
$tabel = 'gallery';  //tabellen som billederne skal hentes fra
$img  = 'img';      //Navn på mappen hvor filer skal gemmes.
$cwd  = getcwd();  //Current Work Dir

//opretter fil
$img = $cwd . '/' . $img . '/';

//Hvor mange filer blev uploadet?
$count = 0;

if(isset($_POST['upload']))
{
    foreach ($_FILES['pictures']['error'] as $key => $error)
    {
        $ext = strtolower(end(explode('.',$_FILES['pictures']['name'][$key])));
        if ($error == UPLOAD_ERR_OK && ($ext == 'jpg' || $ext == 'jpeg'))
        {
            $tmp  = $_FILES['pictures']['tmp_name'][$key];
            $full = $_FILES['pictures']['name'][$key];
            $descript = $_POST['descript'];
           
       
            if(move_uploaded_file($tmp, $img . $full))
            {
                //Resize nummer 1
                resize($img . $full, $img . '' . $full, 800, 800);
               
                //Resize nummer 2
                resize($img . $full, $img . 'small_' . $full, 200, 200);
               
                $add_file = mysql_query("INSERT INTO $tabel VALUES('','$full','$descript','mark')") or die(mysql_error());
                $count++;
            } print "$_POST[description]";
        }
       
       
    }
    echo 'Vi har uploadet ' . $count . ' billeder<br />';
}
?>

Nogle der kan se hvad poblemet er???
Avatar billede coderdk Praktikant
22. april 2008 - 19:48 #1
$descript = $_POST['descript'];

skal vel være

$descript = $_POST['descript'][$key];

?
Avatar billede showsource Seniormester
22. april 2008 - 19:55 #2
kan han ikke, for $key nr. 5 findes ikke, + der er måske 10 billeder.

Men nok:

$nr = array_keys($_POST['descript']);
$i = 0;

og efter foreach()
$i++;

og senere:
$descript = $_POST['descript'][$i];
Avatar billede showsource Seniormester
22. april 2008 - 20:15 #3
nåh, og
$i++;
skal ligge efter $descript.....
Avatar billede MarkA Praktikant
22. april 2008 - 20:39 #4
hmmm.. kan ikke helt følge med... vil du prøve at smide det ind i koden???
Avatar billede MarkA Praktikant
22. april 2008 - 21:02 #5
coderdk!!!!

Din løsning virker.. Poster du ikke et svar så du kan få nogle point
Avatar billede coderdk Praktikant
22. april 2008 - 22:36 #6
ok :)
Avatar billede MarkA Praktikant
23. april 2008 - 07:05 #7
Takker for hjælpen
Avatar billede showsource Seniormester
23. april 2008 - 07:51 #8
hehe, der var vist noget jeg havde misforstået! :O()
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