Avatar billede daki Juniormester
28. juli 2003 - 12:32 Der er 19 kommentarer og
2 løsninger

Upload og visning af billeder

CREATE TABLE medlemmer (
  id int(11) NOT NULL auto_increment,
  navn varchar(255) default NULL,
  url varchar(255) default NULL,
  billede int(20) default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Til ovenstående tabel mangler jeg 2 scripts.

Script til upload:

1. indtaste navn og url samt vælge 1 billede til upload.
2. upload skal placere billede i en bestemt mappe og give en fast størrelse.
3. ønsker jeg at ændre i navn eller url, skal ref. til billede selvfølgelig beholdes.

Script til visning:
1. visningen af billeder skal være i en tabel med 3 kolonner / xx-antal rækker afhængig af hvor mange der er.
2. når man placere musen på et billede skal der komme en linie frem med navnet.
3. er der indtastet en url, skal man kunne klikke på billedet for at komme videre.

På forhånd tak.
Avatar billede swaxi Nybegynder
28. juli 2003 - 13:12 #1
hvis det har din interesse, vil jeg gerne give et tilbud på løsning af den beskrevne opgave. jeg arbejder ikke gratis, men det er en rimeligt simpel opgave, så det løber ikke op i så meget.
info@kyberfabrikken.dk
Avatar billede daki Juniormester
28. juli 2003 - 14:20 #2
Jeg har forsøgt med dette script, men som du kan se mangler jeg selve upoload delen. Kan du hjælpe med den del ??

<?php
include_once("admin.head.inc.php");
               
if (!isset($src))
  {
  ?>
  <form action="edit_medlemmer.php?src=ny_medlem" method="post">
  <h3>Tilføj Medlem:<h2>Navn:<br>
  <input type="text" name="navn" class="blackborder" size="50"><br>
  Hjemmeside:<br>
  <input type="text" name="url" class="blackborder" size="50" value="http://"><br>
  Billede:<br>
  <input type="file" name="billede" class="blackborder" size="50"><br><br>
  <input type="submit" value="Indsæt nyt medlem" class="blackborder">
  </form>
  <br>
  <h3>Nuværende Medlemmer:<br>
  <table width="400" cellpadding="0" cellspacing="3" border="0" align="center" bgcolor="#FFFF8F" class="blackborder">
      <tr>
        <?
        $sql="select navn,url,id from medlemmer order by id";
        $result=mysql_query($sql,$db);
        $empty1="";
        while ($myrow = mysql_fetch_array($result))
            {
            $navn=$myrow["navn"];
            $url=$myrow["url"];
            $id=$myrow["id"];
            ?>
            <td width="15" valign="middle">
              <form action="edit_medlemmer.php?src=ret" method="post">
              <input type="hidden" name="id" value="<?echo "$id";?>">
              <input type="image" src="images/ret.gif" border="0">
              </form>
            </td>
            <td width="15" valign="middle">
              <form action="edit_medlemmer.php?src=delete" method="post">
              <input type="hidden" name="id" value="<?echo "$id";?>">
              <input type="image" src="images/slet.gif" border="0">
              </form>
            </td>
            <td valign="top">
            <?
            echo "$navn<br>$url</td></tr><tr>";
            }
            echo "</tr></table>";
  }
               
if (isset($src) && $src == "ret"):
  $sql="select * from medlemmer where id='$id';";
  $result=mysql_query($sql,$db);
  $myrow = mysql_fetch_array($result);
  ?>
  <form action="edit_medlemmer.php?src=update&id=<? echo "$id"; ?>"  method="post">
  <h3>Ret Medlem:<h2>
  Navn:<br>
  <input type="text" name="navn" value="<? echo "$myrow[navn]"; ?>" class="blackborder" size="50"><br>
  Hjemmeside:<br>
  <input type="text" name="url" class="blackborder" size="50" value="<? echo "$myrow[url]"; ?>"><br>
  <input type="submit" value="Ret medlem" class="blackborder">
  </form>
  <?           
endif;

if (isset($src) && $src == 'ny_medlem')
  {
  $sql="insert into medlemmer values('','$navn','$url','$billede');";
  $result1=mysql_query($sql,$db);
  if (!$result1)
      {
      echo "<b>Nyt medlem blev IKKE indsat!</b>";
      }
  else
      {
      echo "<b>Nyt medlem blev indsat!</b>";
      }
  ?><meta http-equiv="REFRESH" content="3;URL=edit_medlemmer.php"><?
  }
 
if (isset($src) && $src == "update")
  {
  $sql="update medlemmer set navn='$navn',url='$url' where id='$id';";
  $result1=mysql_query($sql,$db);
  if (!$result1)
      {
      echo "<b>Medlem blev IKKE rettet!</b>";
      }
  else
      {
      echo "<b>Medlem blev rettet!</b>";
      }
  ?><meta http-equiv="REFRESH" content="3;URL=edit_medlemmer.php"><?
  }

if (isset($src) && $src == 'delete')
  {
  $sql="delete from medlemmer where id='$id'";
  $result1=mysql_query($sql,$db);
  if (!$result1)
      {
      echo "<b>Medlem blev IKKE slettet!</b>";
      }
  else
      {
      echo "<b>Medlem blev slettet!</b>";
      }
  ?><meta http-equiv="REFRESH" content="3;URL=edit_medlemmer.php"><?
  }
       
include_once("admin.foot.inc.php");
?>
Avatar billede daki Juniormester
28. juli 2003 - 14:44 #3
Og sådan vises alle informationer i øjeblikket:

<html>
<head>
</head>

<body background="images/bg.gif" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
<table width="450" cellpadding="10" cellspacing="0" border="0" align="center">
  <td valign="top">
      <table width="100%" cellpadding="8" cellspacing="0" border="0">
        <tr>
            <td background="images/kridt_bg.gif">
              <table width="100%" cellpadding="15" cellspacing="0" border="0">
                  <tr>
                    <td background="images/bg.gif">
                    <h1><center>Medlemmer af Thisted FC's Erhvervsklub
                    <h3>Tryk på medlemmernes logo for at komme til deres respektive hjemmesider...
                    <br><br></center></h3>

<table align="center" border="0" width="380" bgcolor="#CCCCCC" cellpadding="0" cellspacing="0" class="blackborder">
  <tr>
      <td>
        <table cellpadding="1" cellspacing="0" border="0" align="center">
            <tr>
              <td><a href="http://www.mbthisted.dk" target="new"><img src="medlemmer/autogaarden.gif" class="blackborder"></a>
              </td>
              <td><img src="medlemmer/basseskro.gif" class="blackborder"></a>
              </td>
              <td><a href="http://www.bogn.dk" target="new"><img src="medlemmer/bjorndal.gif" class="blackborder"></a>
              </td>
            </tr>
            <tr>
              <td><img src="medlemmer/brdbjerg.gif" class="blackborder"></a>
              </td>
              <td><a href="http://www.brundsmedie.dk" target="new"><img src="medlemmer/brund.gif" class="blackborder"></a>
              </td>
              <td><a href="http://www.coloplast.dk" target="new"><img src="medlemmer/coloplast.gif" class="blackborder"></a>
              </td>
            </tr>

osv.

        </table>
      </td>
  </tr>
</table>

                    </td>
                  </tr>
              </table>
            </td>
        </tr>
      </table>
  </td>
</table>
</body>
</html>

Håber det også kan være tilæ lidt hjælp
Avatar billede swaxi Nybegynder
28. juli 2003 - 15:47 #4
upload af filer er ikke så indviklet som folk gør det til - du skal bare være klar over at det fungerer en smule forskelligt på forskellige versioner af php.
kig på : http://dk.php.net/manual/en/features.file-upload.php

når filen så er uploaded, skal du konvertere billedet til den størrelse du vil have. det kan du gøre enten med GBlib (som er indbygget i de fleste udgaver af php) eller med imagemagick (som ikke er indbygget, emn som regel findes som binær på serveren). imagemagick giver det bedste resultat, men dels er det lidt mere (om end ikke meget) bøvlet at bruge, dels er det ikke alle webhosts, der vil give dig adgang til at bruge det.
Avatar billede daki Juniormester
28. juli 2003 - 16:49 #5
Jeg har prøvet at se på diverse scripts både her på exp. og andre steder, men jeg kan ikke få dem passet ind i mit script, det er derfor jeg beder om hjælp.

Kan ikke helt fatte sammenhængen i php-programmering endnu.
Avatar billede webcreator Nybegynder
28. juli 2003 - 16:52 #6
Jeg mener at der ligger et upload-script på www.webcafe.dk - prøv at tjekke det.
Avatar billede swaxi Nybegynder
28. juli 2003 - 17:47 #7
prøv at lave følgende ændringer i dit første script :

<snip>
  <!-- enctype skal sættes til "multipart/form-data" ved filupload -->
  <form enctype="multipart/form-data" action="edit_medlemmer.php?src=ny_medlem" method="post">
  <h3>Tilføj Medlem:<h2>Navn:<br>
  <input type="text" name="navn" class="blackborder" size="50"><br>
  Hjemmeside:<br>
  <input type="text" name="url" class="blackborder" size="50" value="http://"><br>
  Billede:<br>
  <!-- MAX_FILE_SIZE angiver den maximale størrelse en fil må have i bytes -->
  <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  <input type="file" name="billede" class="blackborder" size="50"><br><br>
  <input type="submit" value="Indsæt nyt medlem" class="blackborder">
  </form>
</snip>


<snip>
if (isset($src) && $src == 'ny_medlem')
  {
  define('BILLEDE_DIR', '/var/www/uploads/');
  if (move_uploaded_file($_FILES['billede']['tmp_name'], BILLEDE_DIR.$_FILES['billede']['name'])) {
    $billedenavn = $_FILES['billede']['name'];
  } else {
    die("Possible file upload attack!");
  }
  $sql="insert into medlemmer values('','$navn','$url','$billedenavn')";
</snip>
Avatar billede swaxi Nybegynder
28. juli 2003 - 17:52 #8
... du skal self. lige rette linien
    define('BILLEDE_DIR', '/var/www/uploads/');
til det dir, hvor du vil have dine billeder liggende (og du skal i øvrigt sætte adgang til dette dir med chmod 777)
Avatar billede daki Juniormester
29. juli 2003 - 12:39 #9
Ja, så har jeg fået upload til at fungere.
Er det svært, at sætte det op til et fast størrelse på billedet 153x66 pixles.

Har du/I et forslag til hvordan jeg kan lave visningen.
Avatar billede swaxi Nybegynder
29. juli 2003 - 15:49 #10
som nævnt tidligere, er  upload een ting, behandling af billeder en anden.
det nemmeste er nok at bruge GDlib, da det er indbygget i php. du kan læse mere om GDlib på :
http://dk.php.net/manual/en/ref.image.php

ellers kan du prøve med det her eksempel, jeg lige fandt på min maskine :
<?

function resize($img,$w,$h)
{
    $dim = GetImageSize($img);
    if ($dim[2]==1) {
        $image = ImageCreateFromGIF($img);
    } else if ($dim[2]==2) {
        $image = ImageCreateFromJPEG($img);
    } else if ($dim[2]==3) {
        $image = ImageCreateFromPNG($img);
    }
    $thumb = imagecreate ($w, $h);
    $imagedata = getimagesize($img);
    imagecopyresized ($thumb, $image, 0, 0, 0, 0, $w, $h, $imagedata[0], $imagedata[1]);
    imagejpeg($thumb, $img);
}

resize("somepic.jpg", 153, 66);

?>
Avatar billede daki Juniormester
30. juli 2003 - 16:19 #11
Hvis jeg har forstået det korrekt, så skal function resize() sættes i starten af sciptet og resize() skal placeres inden jeg bruger move_uploaded_file(), og "somepic.jpg" skal erstattes med navnet på den fil som skal uploadets.
Avatar billede swaxi Nybegynder
30. juli 2003 - 16:55 #12
nej ... du bliver nødt til at bruge move_uploaded_file() inden du bruger resize()
det skyldes at når man uploader en fil, bliver den først uploaded til tmp-dir'et på serveren. før du kan gøre noget ved filen, skal du først kopiere den fra dette sted og til der hvor den skal gemmes.

selve funktionen resize() kan du såddan set placere hvor som helst, men kotyme er at placere den i starten af scriptet.
jeg kan i øvrigt se at den er lidt sjusket lavet. det ville være pænere at bruge det her (men ovennævnte kode virker såmen også) :

function resize($img,$w,$h)
{
    $dim = GetImageSize($img);
    if ($dim[2]==1) {
        $image = ImageCreateFromGIF($img);
    } else if ($dim[2]==2) {
        $image = ImageCreateFromJPEG($img);
    } else if ($dim[2]==3) {
        $image = ImageCreateFromPNG($img);
    }
    $thumb = imagecreate ($w, $h);
    imagecopyresized ($thumb, $image, 0, 0, 0, 0, $w, $h, $dim[0], $dim[1]);
    imagejpeg($thumb, $img);
}
Avatar billede swaxi Nybegynder
30. juli 2003 - 16:58 #13
og bare for at skære det ud i pap :

<snip>
if (isset($src) && $src == 'ny_medlem')
  {
  define('BILLEDE_DIR', '/var/www/uploads/');
  if (move_uploaded_file($_FILES['billede']['tmp_name'], BILLEDE_DIR.$_FILES['billede']['name'])) {
    $billedenavn = $_FILES['billede']['name'];
  } else {
    die("Possible file upload attack!");
  }
  resize(BILLEDE_DIR.$billedenavn, 153, 66);
  $sql="insert into medlemmer values('','$navn','$url','$billedenavn')";
</snip>
Avatar billede daki Juniormester
31. juli 2003 - 12:31 #14
Når jeg prøve at teste funktionen lokalt får jeg følgende fejl.

Fatal error: Call to undefined function: imagecreatefromjpeg() in

P.T. kan jeg ikke teste på mit webhotel, da der skiftes server i øjeblikket.


Har du et forslag til hvordan jeg får lavet visningen, eller ???
Avatar billede swaxi Nybegynder
31. juli 2003 - 14:42 #15
den fejl skyldes at du ikke har GBlib, eller at der er noget galt med den. kører du på en lokal windows-installation ?

jeg vil skyde på at dit webhotel understøtter det, da det er mere eller mindre standard. (ellers skulle du seriøst overveje at skifte udbyder)
Avatar billede daki Juniormester
31. juli 2003 - 14:55 #16
GBlib, er det noget som skal installeres og i såfald hvor får jeg fat i det.
Avatar billede swaxi Nybegynder
31. juli 2003 - 16:36 #17
jeg formoder at du har en lokal installation under windows.

til windows er gdlib lavet som en DLL. du skal muligvis selv installere gdlib, og herefter ændre i php.ini - det afhænger helt af hvilken installation af php du kører med.
prøv at søge på din maskine efter filen php_gd.dll eller php_gd2.dll
hvis du ikke har een af dem liggende, har du ikke gdlib installeret.
Avatar billede swaxi Nybegynder
31. juli 2003 - 16:39 #18
Avatar billede daki Juniormester
01. august 2003 - 11:35 #19
Så virker det, tak for hjælpen.
Jeg har en anden til at hjælpe med visningdelen, så du får ikke alle points.
Avatar billede daki Juniormester
06. august 2003 - 15:54 #20
Points skal vel også uddeles :-)
Avatar billede find_p Nybegynder
02. december 2007 - 14:55 #21
daki,
Er det muligt at få al kode til ovenstående projekt?
Jeg har behov for noget der ligner meget og er total nybegynder.
Jeg tænker at en god måde at lære på, er ved at studere noget der virker og forsøge at tilpasse dette til mine behov.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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