Gå til innhold

[Script/guide] Laste opp bilder! m/ Galleri visn.


Anbefalte innlegg

Heisann!

Jeg har laget et simpelt lite galleri.. For de mer enkle brukerne her, som ønsker det.

 

Scriptet er ikke noe ferdig, med design og alt, men, simpelthen bare kode, som du kan lett integrere i hjemmesiden din. Scriptet lister simpelthen bildene, som vi har lastet opp, der informasjonen lagres i databasen.. :)

 

Trenger noen hjelp, ang. integrering, endring, så kan det postes her.

 

Legg til i MySQL(*1)

 

CREATE TABLE IF NOT EXISTS `imgbase` (
 `img_id` int(11) NOT NULL AUTO_INCREMENT,
 `img_file` varchar(56) DEFAULT NULL,
 `img_date` int(11) NOT NULL,
 `img_name` varchar(56) DEFAULT NULL,
 PRIMARY KEY (`img_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

 

*1. eks: PhpMyAdmin, velg database/evt opprett. Deretter trykker du på SQL-knappen øverst, legger inn gitt "kode".

 

Dette er en viktig fil å ha med, den sørger for at alt lastes opp, og info havner i databasen!

script.php

 

<?php

//**** kontakte databasen ***************************************************//
 mysql_connect("localhost", "DB_Brukernavn", "DB_passord") or die(mysql_error()) ; 
 mysql_select_db("din_database") or die(mysql_error()) ; 
//***************************************************************************//


$set_photo = "";

if ($userdata['img_file'] == "" && !empty($_FILES['img_file'])) {

   $newphoto = $_FILES['img_file'];
   if (is_uploaded_file($newphoto['tmp_name']) && $newphoto['size'] <= 2100000) { //Max 2MB

       $photoext = strrchr($newphoto['name'],".");
       if (eregi(".gif", $photoext) || eregi(".jpg", $photoext) || eregi(".png", $photoext)) {

           $imgname = substr($newphoto['name'], 0, strrpos($newphoto['name'], "."));
           $photoname = time();
           $photoname = $photoname."".$photoext;
           $set_photo = $photoname;
           move_uploaded_file($newphoto['tmp_name'], "gallery/".$photoname);
           chmod("gallery/".$photoname,0644);
           $size = getimagesize("gallery/".$photoname);

           if ($size['0'] > 3072 || $size['1'] > 3072) { //Max 3072x3072 pixler

               unlink("gallery/".$photoname);
               $set_photo = "";

           }

       }

   }

}


$unix = time();

//Writes the information to the database 
mysql_query("INSERT INTO `imgbase` (img_file, img_name, img_date) VALUES ('$set_photo', '$imgname', '$unix')") ; 


?> 

 

 

Nå må vi laste opp filer!

upload.php (denne filen lager formen, som bruker script.php..)

 

<?php

echo "
<html>
<head>
<title>Uploader - by troopeR</title>
</head>

<body>";



if ($_POST['save']) {
require_once "script.php";
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=">';
} else {

echo "
<form enctype='multipart/form-data' action='' method='POST'>
<table>
<tr>
  <td width='100'>bilde:
  </td>
  <td>
     <input type='file' name='img_file' style='width:200px;'>
  </td>
</tr>
<tr>
  <td>
  </td>
  <td>
     <input type='submit' name='save' value='Last opp' />
  </td>
</table>
</form>\n";

}

echo "
</body>

</html>
";

?>

 

 

Gratulerer! Nå kan du laste opp bilder! :D

Men, vi ønsker vel kansje å vise bildene til gjester, og andre? ;)

view.php

 

<?php

//**** Connects to your Database *************************************************//
 mysql_connect("localhost", "DB_Brukernavn", "DB_Passord") or die(mysql_error()) ; 
 mysql_select_db("din_database") or die(mysql_error()) ; 
//********************************************************************************//


$result = mysql_query("SELECT * FROM `imgbase` ORDER BY img_date DESC");
$rows = mysql_num_rows($result);
if ($rows != 0) {
       $counter = 0; $columns = 3; 
       echo "<table width='800' align='center' cellpadding='0' cellspacing='1' style='font-family:Arial, verdana;font-size:12px;'>\n<tr>\n";
       while ($data = mysql_fetch_assoc($result)) { //evt fetch_array
               if ($counter != 0 && ($counter % $columns == 0)) echo "</tr>\n<tr>\n";
               echo "<td valign='top' align='center' width='210'>";

               echo "
	  <div style='border:1px solid #cdcdcd;font:12px verdana;overflow:hidden;width:200px;height:200px;'>
	     <a href='gellery/".$data['img_file']."' alt=''>
	     <img width='300' src='gallery/".$data['img_file']."'>
	     </a>
	  </div>
	  <div>
	     <b>".$data['img_name']."</b><br>
	     ".date('d. M Y - H:i', $data['img_date'])."
	  </div>";

               echo "</td>\n";
               $counter++;
       }
       echo "</tr>\n</table>\n";
}

?> 

 

 

 

Kan annbefale å integrere upload.php i en passordsikret side.

Evt, så kan du endre linjen:

 

if ($_POST['save']) {

//Til noe slik:
if ($_POST['save'] && $_POST[password] == "hyperavnsert_passord" {

Men, du må da også legge til en input passord, i samme fil..

//Finn linjene
     <input type='file' name='img_file' style='width:200px;'>
  </td>
</tr>

Dette skal inn under linjene over:

 <tr>
  <td width='100'>Passord:
  </td>
  <td>
     <input type='password' name='password' style='width:200px;'>
  </td>
</tr>

 

 

 

Trenger noen hjelp, så kan det postes her.. Har noen en idè, eller forbedring.. post det her! Skal ikke være noen feil med koden, men kan hende "passord"-delen jeg la til på slutten ikke er helt fin, skal bare være å fjerne hermetgnene rundt passordet, om det ikke fungerer.

 

Håper noen finner dette intressant! Det fungerer, tross alt, og er en flott måte å gå frem for å lage et lite galleri, kan evt. brukes i støre sammenhenger, om en bare passer på sikkerheten da.. ;)

 

 

EDIT: Husk å opprette en mappe ved navn "gallery".

Endret av slacky
Lenke til kommentar
Videoannonse
Annonse

Hmm... du kunne gjort som meg og laget en versjon som ikke trenger en database for å funke :D

 

Mekker opp en mappestruktur ala:

 

/gallery/

 

og i gallery vil da være mappe bli et album:

 

/gallery/biltur.til.sverige/

/gallery/skjermdumper/

osv

 

Og så får du PHP til å liste opp alle mappene i /gallery/ til å bli et klikkbart album.

 

Ved upload velger bruker om bildet skal legges inn i en eksisterende mappe eller om det skal lages en ny mappe i /gallery/ og bilde da lagres i denne.

 

Du blir da kvitt MySQL biten :D Jeg utvidet littegrann og du får også leste metadata av bildet. Du får da lagt inn både kommentar og dato som igjen kan leses av PHP. Smekker det på plass med lightbox og alt blir nice and dandy

 

Edit: men bra insj da!

Endret av South_Bridge
Lenke til kommentar

Hehe, det er slett ikke umulig å gjøre det slik, om det skal brukes til et privat album.

Men, skal flere laste opp bilder, så kan det være smart å benytte seg av mySQL.

Det gir også mulighet for flere utvidelser.

 

Men, slik kommer ann på bruk... De fleste har tilgang til MySQL, om de har tilgang til php :b

Legge egene sider for vært bilde, ved å legge id i hver rad (for hvær bilde), er ikke et problem. Da kan man veldig simpelt legge til et kommentarsystem.

 

Ellers takk ;)

Lenke til kommentar

Hehe, det er slett ikke umulig å gjøre det slik, om det skal brukes til et privat album.

Men, skal flere laste opp bilder, så kan det være smart å benytte seg av mySQL.

Det gir også mulighet for flere utvidelser.

 

Men, slik kommer ann på bruk... De fleste har tilgang til MySQL, om de har tilgang til php :b

Legge egene sider for vært bilde, ved å legge id i hver rad (for hvær bilde), er ikke et problem. Da kan man veldig simpelt legge til et kommentarsystem.

 

Ellers takk ;)

 

Flere utvidelser? Jeg er ikke helt med... det er ikke noe informasjon(som er vettug) som du ikke kan lagre i metadata til bildet. er man da litt nøysommelig slipper man å ha en databaseinteraksjon i det hele tatt.

Scenarioet du beskriver med en side for hvert bilde er iaff ikke noe problem. Ved å være litt omstendig bytter man igrunn ut lesing av databasen med lesing av filstruktur og metadata fra bildene, resultatet (visuelt) blir det samme... og med "min" metode slipper man sql forbindelsen.

 

KANSKJE det vil være noe ytelse å hente på det, men common, jeg tviler det har noe å si for hobbyprosjekter og lignende... med mindre man skal bygge om norges samlede fotoalbum da :p

 

fornuftig diskusjon :D

Lenke til kommentar

Vi går litt of topic.. :E Alt er mulig slik du går frem, med div. endringer.. Men, ser de lettere å bygge en brukerstruktur, adminområde, lagre dato, navn, beskrivelse av bilde o.l rundt noe som allerede er koblet til en database. Din, det kan man liksågodt gjøre med flatfiler også.. Alt går ann, og forskjellene rundt det er utrolig små.. Begge har sine negativer.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...