Avatar billede kritt Nybegynder
09. december 2003 - 14:05 Der er 9 kommentarer og
1 løsning

rediger uploadede personprofil billede - PLZZ

jeg har her et script til at uploade et billede til en tilhørende profil, og det virker som det skal.

jeg har også en "rediger profil" side hvor det er meningen at man skal kunne ændre sit profil billede. Det kunne jo gøres på samme måde, men der ko0mmer så til at ligge 2 billeder for den pågældende bruger - det er vi self ik interesseret i, så hvis nogen ligger inde med en form for oprydningsscript har du fame 200 pts.

I kan jo tage udgangspunkt i nedenstående kode og give et bud på oprydningskoden eller i skal oxo være velkomne til at poste et helt nyt script hvis i alligevel ligger inde med det.

<?

if($_POST['up']){
$file = $_FILES['upfil']['tmp_name'];
$sti = "/godjamit/image/";
$dist = $_SERVER["DOCUMENT_ROOT"] ."$sti";
$billedewh = @GetImageSize($file);

$files = $_FILES['upfil']['name'];
$temparr = explode(".", $files);
$temparr[count($temparr)-2] = time();
$files = implode(".", $temparr);

move_uploaded_file($_FILES['upfil']['tmp_name'], $dist . $files);

$connection = mysql_pconnect("xxx","xxx","xxx");
mysql_select_db("xxx");
$insertSQL = "insert into persprofil (profilbillede, imgheight, imgwidth) values ('$files', '$billedewh[0]', '$billedewh[1]')";
mysql_query($insertSQL);

echo "Din fil er nu uploadet<br><br>";
echo $files;
}
?>

<form action="<?echo $PHP_SELF ?>" method="post" enctype="multipart/form-data">
<b>Fil til upload:</b><input type="file" name="upfil"><br>

</form>
Avatar billede erikjacobsen Ekspert
09. december 2003 - 14:07 #1
Hvis brugeren er der i forvejen kan du vel bare bruge samme filnavn som det første billede?
Avatar billede kritt Nybegynder
09. december 2003 - 14:08 #2
det uploadede billede's navn bliver automatisk genereret
Avatar billede erikjacobsen Ekspert
09. december 2003 - 14:10 #3
Ja, det kan jeg se - første gang. Men hvis brugeren allerede er der, kan
du jo bruge det navn, der blev lavet første gang.
Avatar billede kritt Nybegynder
09. december 2003 - 14:11 #4
ja du har sikkert ret, men jeg kan ikke gennemskue i koden hvordan navnet blir genereret eller hvordan jeg skal sætte det oprindelige navn
Avatar billede jenslyn_s Nybegynder
09. december 2003 - 14:11 #5
giv mig 12 timer, så har jeg en løsning.
Avatar billede kritt Nybegynder
09. december 2003 - 14:15 #6
jeg ville jo gerne hvis jeg kunne navngive billedet = $brugernavnet eller lign men jeg kan som sagt ikke gennemskue hvor eller hvordan det skal skrives i koden
Avatar billede Slettet bruger
09. december 2003 - 14:56 #7
Der står ingen steder i dit script hvordan du genkender brugeren.
Derfor har jeg i dette eksempel valgt at gætte på at i din database har du et felt med brugernavn - og du genkender brugeren med $user - ellers kan du jo selv rette det til :)

Utestet:

<?PHP
if($_POST['up']){
   
    // Her flyttes filen fra.
    $fra = $_FILES['upfil']['tmp_name'];
   
    // Hvad er det for en fil vi har.
    $ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));   
   
    // hvad hedder billedet
    $billede = $_FILES['upfil']['name'];
   
    // Vi skal have noget information fra databasen
    $connection = mysql_pconnect("xxx","xxx","xxx");
    mysql_select_db("xxx");
   
    // vi henter fra databasen hvor brugernavnet er det samme som brugeren.
    $query = mysql_query("SELECT * from persprofil WHERE brugernavn = '$user'") or die(mysql_error());
    $row = mysql_fetch_array($query);
   
    // vi tager navnet fra den tidligere fil
    list($et,$to) = explode(".",$row[profilbillede]);   
   
    // Vi giver vores billede et nyt navn
    $nytNavn = "$et.$ext";
   
    // her er vores destination
    $til = "".$_SERVER["DOCUMENT_ROOT"]."godjamit/image/" . $nytNavn;
   
    // her sker det magiske
    move_uploaded_file($fra, $til);
   
    // vi henter højden og breden fra billedet
    $info = getimagesize("$til");
    $width = $info[0];
    $height = $info[1];   

    $query = mysql_query("insert into persprofil (profilbillede, imgheight, imgwidth) values ('$nytNavn', '$width', '$height')") or die(mysql_error());

    echo "Din fil er nu uploadet<br><br>";
}
?>
Avatar billede kritt Nybegynder
09. december 2003 - 15:48 #8
jeg er desværre nødt til at gå hjem nu - fatter intet af hvad du har skrevet, men jeg tester det i morgen
gider du skrive en kort beskrivelse af $et, $to og $ext
Avatar billede Slettet bruger
09. december 2003 - 16:11 #9
med $ext finder jeg filendelsen. Dvs om det er jpg, gif, png osv.
$et og $to deler jeg det gamle billede op som findes i databasen ($et = navnet | $to = endelsen), for at få navnet på filen.

For at sikre dig at der kun er en fil pr bruger, burde du måske slette det gamle billede efter at have hevet informationerne ud af databasen, og inden overførslen af det nye billede. Eller gøre så man kun kan overføre en slags billeder, f.eks. jpg.
Avatar billede Slettet bruger
09. december 2003 - 16:37 #10
Har lavet et par rettelser. Det var bedre blot at slette det gamle billede og uploade det nye.
det var jo egentlig det spørgsmålet gik ud på, nemlig kun at have et billede pr bruger.
Jeg havde lavet en fejl i blot at indsætte noget data i databasen istedet for at opdatere den.
Istedet er jeg kommet frem til dette.
<?PHP
if($_POST['up']){
   
    // Her flyttes filen fra.
    $fra = $_FILES['upfil']['tmp_name'];
   
    // Hvad er det for en fil vi har.
    $ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));   
   
    // hvad hedder billedet
    $billede = $_FILES['upfil']['name'];
   
    // Vi skal have noget information fra databasen
    $connection = mysql_pconnect("xxx","xxx","xxx");
    mysql_select_db("xxx");
   
    // vi henter fra databasen hvor brugernavnet er det samme som brugeren.
    $query = mysql_query("SELECT * from persprofil WHERE brugernavn = '$user'") or die(mysql_error());
    $row = mysql_fetch_array($query);
   
    // vi tager navnet fra den tidligere fil
    list($et,$to) = explode(".",$row[profilbillede]);   
   
    // Vi giver vores billede et nyt navn
    $nytNavn = "$et.$ext";
   
    // her er vores destination
    $til = "".$_SERVER["DOCUMENT_ROOT"]."godjamit/image/" . $nytNavn;
   
    // inden vi uploader, sletter vi lige det gamle billede
    unlink($_SERVER["DOCUMENT_ROOT"] ."godjamit/image/$row[profilbillede]");
   
    // her sker det magiske
    move_uploaded_file($fra, $til);
   
    // vi henter højden og breden fra billedet
    $info = getimagesize("$til");
    $width = $info[0];
    $height = $info[1];   
   
    // Vi opdatere databasen, istedet for blot at indsætte noget nyt.
    mysql_query("update persprofil set profilbillede = '$nytNavn',imgheight = '$height',imgwidth = '$width' WHERE brugernavn = '$user'") or die (mysql_error());

    echo "Din fil er nu uploadet<br><br>";
}
?>
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