Avatar billede julle Nybegynder
13. august 2002 - 12:21 Der er 10 kommentarer og
1 løsning

Tildel ID nr, på et uploadet billede

Jeg har lavet en lille database, hvor man kan oprette varer og uploade billeder der til. ( Se evnt her: http://www.crazykings.dk/tilfoej.gif )

MEN! - Jeg vil gerne have at det billede man uploader, at der kommer til at stå ID nr foran det. Altså 34-pics.jpg fx.

Hvordan får jeg lavet det?..... Lige nu tildeles ID jo først når jeg har gemt varen, så jeg kan jo ikke bare skrive:

copy($uploadpics,"pics/$id$uploadpics_name");

Plz, help me!

[ HER ER KONDEN ]




      if ($action == "tilfoejvare")
{





if($uploadpics)
{

$billede = "$uploadpics_name";
copy($uploadpics,"pics/$billede");
}


    mysql_query("INSERT INTO $tabel (antal, kortbeskrivelse, langbeskrivelse, lejepris, cat, pics, varenavn)
                            VALUES('$antal', '$kortbeskrivelse', '$langbeskrivelse', '$lejepris', '$cat', '$billede', '$varenavn')")



or die (mysql_error()); ;

                        print "Varen <b>$varenavn</b> er tilføjet til databasen.<br>";


}

?>

          <form ENCTYPE="multipart/form-data" method="post" action="<? print"$PHP_SELF"; ?>" target="_self">
            Varenavn:<br><input type="text" name="varenavn"><br>
      Antal i udlejningen:<br><input type="text" name="antal"><br>
            Kort beskrivelse:<br> <input name="kortbeskrivelse" SIZE="25"><br>
            Lang beskrivelse:<br> <textarea rows="10" name="langbeskrivelse" cols="40"></textarea><br>
            Hvilken kategori skal varen ind under?<br>
                <SELECT name="cat">
<option value="1">Komplette anlæg</option">
<option value="2">Højttalere</option">
<option value="3">Forstærker</option">
<option value="4">Mixer</option">
<option value="5">Lyseffekter</option">
<option value="6">Lys-controller</option">
<option value="7">Røgmaskiner</option">
<option value="8">Mikrofoner</option">
<option value="9">Kabler</option">
<option value="10">Rig</option">
<option value="11">Diverse</option">   

                </select> <br>




Leje pr. døgn<br> <input type="text" name="lejepris"><br>


Billede:(Kun jpg & Gif)<br><INPUT NAME="uploadpics" TYPE="file"> <br><br>

                        <input type="hidden" name="action" value="tilfoejvare">
                        <input type="submit" value="Tilføj vare til databasen">
</form>
Avatar billede Slettet bruger
13. august 2002 - 12:24 #1
Hvorfor ikke blot indsætte den i databasen først, og så uploade billedet bagefter? Så kan du med PHP hente sidst indsatte id med last_insert_id()
Avatar billede julle Nybegynder
13. august 2002 - 12:27 #2
Den løsning havde jeg også tænkt på. Men det bliver for bøvlet i længden. Jeg skal kunne indsætte data + billede på samme tid....
Avatar billede NanoQ Nybegynder
13. august 2002 - 13:03 #3
julle, jeg har deaktiveret dit spørgsmål http://www.eksperten.dk/spm/245732

Det er IKKE tilladt at oprette spørgsmål alene for at henvise til et andet.

Jeg vil opfordre dig til at læse Ekspertens regler (www.eksperten.dk/regler.phtml)

NanoQ/coadmin
Avatar billede fri-hash Nybegynder
13. august 2002 - 13:08 #4
her er et stykke kode som jeg bruger og virker efter hensigten .... indsætter data i databasen .... flytter den uploadede fil ... og sidst renamer filen til det format man ønsker, inkl databaseID'et

det er på ingen måde tilpasset dine krav, men kan måske være til inspiration:

if( isset($URL) )
  {
    $URLstatus = "Filen $URL_name er uploadet ... go' ryger!";

    $Str=filesize($URL);
    $Str=round($Str / 1024 * 100) / 100; //størrelse i KB

    require("dbdefine.php");
    require("connect.php");

    $indsaet="INSERT INTO uploads (Type, URL, Kategori, Uploader, Beskrivelse, Stemmeantal, Rating, Str)
          VALUES ('$Type', '$URL_name', '$Kategori', '$Uploader', '$Beskrivelse', 0, 0, $Str)";

    $result = mysql_query($indsaet) or die(mysql_error());     //udfør statement


    $fileID = mysql_insert_id() ;
    $nynavn = "upl" . $fileID ;

    $URL_name = explode(".", $URL_name);
    $URL_name = $nynavn . "." . $URL_name[1];

   
    move_uploaded_file ($URL, "uploadbilleder/$URL_name") or die(mysql_error());

    $rename = "UPDATE uploads SET URL='$URL_name' WHERE ID=$fileID";
    $renameres = mysql_query($rename) or die(mysql_error());


    mysql_close($conn);  //disconnect

   
  }
else
  {
    $URLstatus = "Filen $URL_name blev IKKE uploadet - ryg en fed og prøv igen senere :-)";
  }
Avatar billede kimg Nybegynder
13. august 2002 - 13:11 #5
Kan du ikke bare kalde det sidste ID, fra din database;
$unik = $id+1;
$billede = "".$unik."$uploadpics_name";

Kim
Avatar billede julle Nybegynder
13. august 2002 - 13:38 #6
Hej Kim!


Godt forslag, men der kommer rod i det så!... Hvad nu hvis jeg går ind og sletter en varen, der ligger lige før den hvor jeg har uploadet, så vil der være 2 billeder, med samme ID.
Avatar billede kimg Nybegynder
13. august 2002 - 13:41 #7
Du kan bruge auto_increment på (id) i database, og gøre det unikt, så skulle det da køre.

Kim
Avatar billede kimg Nybegynder
13. august 2002 - 13:44 #8
Et alternativ jeg selv bruger.

$random = md5 (uniqid (""));
  $unik = substr ("$random", 0, 5);

$billede = "".$unik."$uploadpics_name";

Kim
Avatar billede fri-hash Nybegynder
13. august 2002 - 13:57 #9
problemet med autoincrement er at den kører videre selvom der slettes i DB ... f.eks den senest oprettede vare har id=3 .. den slettes så igen, hvorefter det højeste id i tabeller er 2 ... men den næste vare der indsættes får id=4
Avatar billede julle Nybegynder
13. august 2002 - 15:24 #10
Har selv fundet en løsning.



    mysql_query("INSERT INTO $tabel (antal, kortbeskrivelse, langbeskrivelse, lejepris, cat, pics, varenavn)
                            VALUES('$antal', '$kortbeskrivelse', '$langbeskrivelse', '$lejepris', '$cat', '$billede', '$varenavn')")

or die (mysql_error()); ;

if($uploadpics)
{
$id = mysql_insert_id();
$billede = "$id$uploadpics_name";
copy($uplo
Avatar billede Slettet bruger
14. august 2002 - 11:31 #11
hehe...det var jo faktisk det jeg foreslog, men som du mente var bøvlet :)
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
Computerworld tilbyder specialiserede kurser i database-management

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