fotoalbums-met-mysql

Gesponsorde koppelingen

PHP script bestanden

  1. fotoalbums-met-mysql

« Lees de omschrijving en reacties

Mysql tabellen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE `foto_album` (
  `id` int(4) NOT NULL auto_increment,
  `naam` varchar(255) NOT NULL default '',
  `datum` varchar(255) NOT NULL default '',
  `map` varchar(255) NOT NULL default '',
  `views` int(4) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 AUTO_INCREMENT=115 ;

CREATE TABLE `foto_album_foto` (
  `id` int(4) NOT NULL default '0',
  `bestand` varchar(255) NOT NULL default '',
  `album` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Fotoboek.php / index.php / maakt_niet_uit_eigenlijk.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
<?php
/* (c) Stefanuzz.nl
/* Dit script is gratis te gebruiken
/* Cool toch?
*/

// De syntax iets is belangrijk! (Geen idee waar ik syntax vandaan heb, gebruik de meest rare worden altijd..)
// Door middel van ?foto=[albumnr].[album_foto_nr] gaan wat we wel niet moeten doen
// Door explode te gebruiken splits ik dus alles

$syntax = $_GET[foto];
$syntax = explode(".", $syntax);

// Overzicht start
if($_GET[foto] == "overzicht"){
// Titel
echo '<span style="font-size:16px;">Foto-albums</span><br /><br />';
    // Alle files in een array zetten
    $files = glob("fotomap/*");
    // Foreach loop
    foreach($files as $f){
        // Haal fotomap er uit
        $f = str_replace("fotomap/", "", $f);
        // Select query
        $select = "SELECT * FROM foto_album WHERE map = '" . $f . "'";
        $query = mysql_query($select);
        // Als de map niet bestaat, inserten!
        if(mysql_num_rows($query) < 1){
        
            $insert = "INSERT INTO foto_album (id, naam, datum, map) VALUES ('', '" . $f . "', '".date('Y').".".date('m').".".date('d')."', '" . $f . "')";
            $res = mysql_query($insert);
        // Anders niks doen
        }else{
        
            
        }
        
    }

    // Select nu alle albums
    $select_albums = "SELECT * FROM foto_album ORDER BY datum DESC";
    $query_albums = mysql_query($select_albums);
    // Even tellen
    $albums = mysql_num_rows($query_albums);
    // Zijn er geen fotoboeken? Dan dat melden!
    if($albums < 1){
    
      echo 'Er zijn geen fotoboeken beschikbaar op dit moment';
    // Anders alles uitpersen!
    }else{
    
    // While met de query
      while($list = mysql_fetch_object($query_albums)){
        
            if(is_dir('fotomap/' . $list->map)){
                    // Bestaat de dir? Dan niks doen a.u.b.
                    // Aantal albums het zelfde houden

                    $albums = $albums;
                                        
            }
else{
                    // De dir bestaat niet omdat deze zojuist is verwijderd? Dan kwakken we de album uit de database!
                    $delete = "DELETE FROM foto_album WHERE id = '" . $list->id . "'";
                    $res2 = mysql_query($delete);
                    // Aantal albums - 1
                    $albums = $albums - 1;
                        
            }

            // Zijn er geen fotoalbums?
            if($albums < 1){
            
                echo 'Er zijn geen fotoboeken beschikbaar op dit moment';
            // Anders gaan we nu de hele zooi er uit persen!
            }else{
                // Wat CSS uitspugen
                echo '<table style="border:1px solid #CCCCCC; width:90%;" onClick="window.location.href=\'?foto=' . $list->id . '\'">';
                
                // Nu komt het leuke werk; we gaan een thumbnailtje verzorgen.
                $fotos = glob("fotomap/" . $list->map . "/*");
                // Is er eigenlijk wel een foto in de map?
                if(!$fotos){
                    echo '<tr><td style="border:1px solid #CCCCCC;"><a href="?foto=' . $list->id . '"><img src="gfx/geenthumb.png" border="0" /></a></td>';
                }
else{
                // Anders zorgen we er voor dat er een thumb komt..                
                $a = "0";    
                    // Zorg voor een thumb dan!
                    foreach($fotos as $f){
                                
                        
                        // Als het aantal thumbnails dat geplaatst is, nog steeds 0 is, dan kunnen we verder.
                        if($a == "0"){
                            // In Windows wordt er - als je in een map in je verkenner - nog wel eens thumb.db aangemaakt. Deze willen we natuurlijk niet zien.
                            if($f == "Thumbs.db"){
                            
                            // En anders echo'en we de thumbnail! (Met nog wat CSS)
                            }else{
                                echo '<tr><td style="text-align:center; width:150px; height:150px;"><a href="?foto=' . $list->id . '"><img src="thumbnail.php?im=' . $f . '&maxsize=150" border="0"></a>';
                                
                                echo '</td>';
                                // Tel het aantal geplaatste thumbnails + 1 (Dit kan nooit meer worden dan 1)
                                $a++;
                            }

                        // Als er nog geen thumbnails zijn geplaatst, is het getal 0. Nu is het getal waarschijnlijk 1 of groter.
                        }else{
                        // Echo niks
                        }
                        
                    }            
                }

                // Nu nog even netjes de datum er bij zetten waarop we het album geplaatst werd            
                $datum = explode (".", $list->datum);
                // Ja sorry, er zat nog wat CSS in..
                echo '<td style="width:*; text-align:center;"><a href="?foto=' . $list->id . '" class="fotoalbum">' . $list->naam . '</a><br /><span style="color:#CCCCCC;">' . $datum[2] . ' ' . maand($datum[1]) . ' ' . $datum[0] . '</span><br /><a href="?foto=' . $list->id . '">Bekijk nu &raquo;</a></td></tr>';
                
            }
    
            
            echo '</table><br />';        
      }
      
    }

// Hiep hoi, het fotoboeken overzicht nu gehad. Nu gaan we knutselen met een foto...
// Als het eerste stuk voor de punt een cijfer is en het er na ook, dan weet ik zeker dat we een foto willen zien..

}elseif(is_numeric($syntax[0]) && is_numeric($syntax[1])){

    // Selecteer de foto uit de database
    $select = 'SELECT * FROM foto_album_foto WHERE id = "' . $syntax[1] . '" && album = "' . $syntax[0] . '"';
    $query = mysql_query($select);
    
    // Bestaat de foto eigenlijk wel?
    if(mysql_num_rows($query) > 0){
        
        // Nu gaan we uitzoeken uit welk album dit foto'tje komt
        $select2 = 'SELECT * FROM foto_album WHERE id = "' . $syntax[0] . '"';
        $query2 = mysql_query($select2);
        // VEROUDERD! Ik weet het.. ik gebruikte altijd fetch_object, dat schijnt wel wat trager te zijn... ach., ik denk dat een niet php-fanaat er niet al te moeilijk over doet.
        $list = mysql_fetch_object($query);
        $list2 = mysql_fetch_object($query2);
        
        // Laat maar zien uit welk foto deze album komt
        echo '<span style="font-size:16px;">Foto uit album "' . $list2->naam . '"</span><br /><br />';
        // Uiteraard! Laat de foto zien
        echo '<img src="' . $list->bestand . '">';
        // Terug naar het overzicht knopje is altijd fijn
        echo '<br /><br /><a href="?foto=' . $syntax[0] . '#' . $syntax[1] . '">&laquo; Terug naar overzicht</a>';
        
        echo '<br /><table>';
        
        // Nu gaan we even kijken welke foto voor deze foto zat..
        $aantalfotominder = "SELECT * FROM foto_album_foto WHERE album = '" . $syntax[0] . "' AND id < '" . $syntax[1] . "' ORDER BY id DESC LIMIT 1";
        $queryfotominder = mysql_query($aantalfotominder);

        // Ja, ff in een while zetten dan maar? Beetje onnodig, maar ja, verouderd..
        while($lista = mysql_fetch_object($queryfotominder)){

            $back1 = $lista->id;
            $back1_bestand = $lista->bestand;

        }

        
        // En nu kijken we welke foto er voor de foto zat die voor de huidige foto zat..
        $aantalfotominder2 = "SELECT * FROM foto_album_foto WHERE album = '" . $syntax[0] . "' AND id < '" . $back1 . "' ORDER BY id DESC LIMIT 1";
        $queryfotominder2 = mysql_query($aantalfotominder2);

        // Inderdaad, in een while
        while($listb = mysql_fetch_object($queryfotominder2)){

            $back2 = $listb->id;
            $back2_bestand = $listb->bestand;

        }

        
        // Nu kijken we welke foto er na deze foto zit
        $aantalfotomeer1 = "SELECT * FROM foto_album_foto WHERE album = '" . $syntax[0] . "' AND id > '" . $syntax[1] . "' ORDER BY id ASC LIMIT 1";
        $queryfotomeer1 = mysql_query($aantalfotomeer1);

        while($listc = mysql_fetch_object($queryfotomeer1)){

            $meer1 = $listc->id;
            $meer1_bestand = $listc->bestand;

        }

        // En kijken we welke foto er na de foto zit die na deze huidige foto komt.
        $aantalfotomeer2 = "SELECT * FROM foto_album_foto WHERE album = '" . $syntax[0] . "' AND id > '" . $meer1 . "' ORDER BY id ASC LIMIT 1";
        $queryfotomeer2 = mysql_query($aantalfotomeer2);

        while($listd = mysql_fetch_object($queryfotomeer2)){

            $meer2 = $listd->id;
            $meer2_bestand = $listd->bestand;

        }

        // Nog even het id'tje krijgen van het huidige fotoalbum. Als iemand zomaar wat heeft ingetypt in de adresbalk, komt er niks uit de query en krijg je dus een error.
        $falbum = mysql_query("SELECT id FROM foto_album_foto WHERE album = '" . $syntax[0] . "'");
        
        // Uh wat ik hier mee moet weet ik zelf niet eens meer..
         $query10 = mysql_query("SELECT * FROM foto_album_foto WHERE album = '" . $syntax[0] ."' ORDER BY id DESC limit 1");
         $list10 = mysql_fetch_object($query10);

        // Nu kijken we of er daadwerklijk een foto voor de foto zat die voor deze foto zit.. (ingewikkeld? Nee hoor!)
        if(strlen($back2) < 1){
            echo '<tr><td style="text-align:center; width:75px; height:75px;">&nbsp;</td>';
        }
else{
            echo '<tr><td style="text-align:center; width:75px; height:75px;"><a href="?foto=' . $syntax[0] . '.' . $back2 . '#' . $back2 . '"><img src="thumbnail.php?im=' . $back2_bestand . '&maxsize=75" border="0" /></a></td>';
        }

        
        // Doen we dat zelfde nu, maar dan met de foto voor de huidige foto
        if(strlen($back1) < 1){
            echo '<td style="text-align:center; width:75px; height:75px;">&nbsp;</td>';
        }
else{
            echo '<td style="text-align:center; width:75px; height:75px;"><a href="?foto=' . $syntax[0] . '.' . $back1 . '#' . $back1 . '"><img src="thumbnail.php?im=' . $back1_bestand . '&maxsize=75" border="0" /></a></td>';
        }

        
        // De huidige foto
        echo '<td style="text-align:center; width:75px; height:75px;"><img src="thumbnail.php?im=' . $list->bestand . '&maxsize=75" border="0" /></td>';

        // Is er wel een foto hier na?
        if(strlen($meer1) < 1){
          echo '<td style="width:75px; height:75px;"></td>';
        }
elseif($meer1 == $syntax[1]){
          echo '<td style="width:75px; height:75px;"></td>';
        }
else{
          echo '<td style="text-align:center; width:75px; height:75px;"><a href="?foto=' . $syntax[0] . '.' . $meer1 . '#' . $meer1 . '"><img src="thumbnail.php?im=' . $meer1_bestand . '&maxsize=75" border="0" /></a></td>';
        }

        
        // En is er eigenlijk wel een foto na de foto hier na?
        if(strlen($meer2) < 1){
          echo '<td style="width:75px; height:75px;"></td>';
        }
elseif($list10->id == $syntax[1]){
          echo '<td style="width:75px; height:75px;"></td>';
        }
else{
         echo '<td style="text-align:center; width:75px; height:75px;"><a href="?foto=' . $syntax[0] . '.' . $meer2 . '#' . $meer2 . '"><img src="thumbnail.php?im=' . $meer2_bestand . '&maxsize=75" border="0" /></a></td></tr>';
        }

        
        // Dan nog even de tekst gevallen echo'en.
         if(strlen($back2) < 1){
           echo '<tr><td style="text-align:center;"></td>'; }
         else{
           echo '<tr><td style="text-align:center;"><a href="?foto=' . $syntax[0] . '.' . $back2 . '#' . $back2 . '"><< Daarvoor</a></td>'; }
        // Dan nog even de tekst gevallen echo'en.
         if(strlen($back1) < 1){
           echo '<td style="text-align:center;"></td>';
         }
else{
           echo '<td style="text-align:center;"><a href="?foto=' . $syntax[0] . '.' . $back1 . '#' . $back1 . '">< Vorige</a></td>';
         }

        // Dan nog even de tekst gevallen echo'en.
         echo '<td style="text-align:center;">Huidige</td>';
        // Dan nog even de tekst gevallen echo'en.
         if(strlen($meer1) < 1){
            echo '<td style="text-align:center;"></td>';
         }
else{
            echo '<td style="text-align:center;"><a href="?foto=' . $syntax[0] . '.' . $meer1 . '#' . $meer1 . '">Volgende ></a></td>';
         }

        
        
        
        // Dan nog even de tekst gevallen echo'en.
         if($list10->id == $syntax[1]){
             echo '<td style="text-align:center;"></td></tr>';
         }

         elseif(strlen($meer2) < 1){
             echo '<td style="text-align:center;"></td></tr>';
         }
else{
             echo '<td style="text-align:center;"><a href="?foto=' . $syntax[0] . '.' . $meer2 . '#' . $meer2 . '">Daarna >></a></td></tr>';
         }


        
      
        echo '</table>';
        // En voor de gebruiksvriendelijkheid nog een fijne terug knop.
                echo '<br /><br /><a href="?foto=' . $syntax[0] . '#' . $syntax[1] . '">&laquo; Terug naar overzicht</a>';

        
    }
else{
            // Soms gaat het wel eens de soep in, daar heb ik even een error voor :-)
            echo '<span class="titel_error" style="color:red;">ERROR - Er deed zich een fout voor...</span><br /><br />
    Er ging iets fout. Waarschijnlijk bestaat deze album niet, of bestaat de foto die bij deze album hoort niet.<br /><br />
    <a href="?foto=overzicht">Ga terug en probeer het opnieuw.</a> ++ Fout: Foto&Album bestaat niet.'
;
    exit();
    
    }


// Nu nog even een overzichtje maken van de foto's die in een album staan
}elseif(is_numeric($_GET[foto])){
    
    // Selecteren album
    $select = "SELECT * FROM foto_album WHERE id = '" . $_GET[foto] . "'";
    $query = mysql_query($select);
    // $list defieneren
    $list = mysql_fetch_object($query);
    
    echo '<span class="titel_kop">Foto-album "' . $list->naam . '"</span><br /><br />';
    // Alle files in $bestanden zetten
    $bestanden = glob("fotomap/" . $list->map . "/*");
    $inserts = "0";
    $fotonr = "1";
    // Foreach loop beginnen
    foreach($bestanden as $b){
        
        // Selecteren van foto uit database
        $select_foto = "SELECT * FROM foto_album_foto WHERE bestand = '" . $b . "'";
        $query_foto = mysql_query($select_foto);
            // Als foto in database staat, niks doen
            if(mysql_num_rows($query_foto) > 0){
                echo '<!-- Bestand: ' . $b . ' -> Foto staat in database -->';
            // Anders in database zetten.
            }else{
                $select_laatste = "SELECT * FROM foto_album_foto ORDER BY id DESC LIMIT 1";
                $query_laatste = mysql_query($select_laatste);
                
                    while($list_laatste = mysql_fetch_object($query_laatste)){
                        $laatste = $list_laatste->id;
                    }

                // Laatste id opzoeken.. tja.. daar hebben we ook auto_increment voor, maar dat werkte niet echt..
                $laatste++;
                // En nog even de insert dan..            
                $insert = "INSERT INTO foto_album_foto (id, bestand, album) VALUES ('" . $laatste . "', '" . $b . "', '" . $_GET[foto] . "')";
                $res = mysql_query($insert);
                    if($res){
                        echo '<!-- Bestand: ' . $b . ' -> Foto staat niét in database > Foto in database gezet. -->';
                        $inserts++;
                    }
else{
                        echo '<!-- Bestand: ' . $b . ' -> Foto staat niét in database > Foto kon niet in de database gezet worden. -->';
                    }
                
                                
            }
        
    }

    // Mooi, de controles nu gehad, nu gaan we de lijst met foto's
    $select3 = "SELECT * FROM foto_album_foto WHERE album = '" . $_GET[foto] . "'";
    $query3 = mysql_query($select3);
        // Zijn er meer dan 0 foto's?
        if(mysql_num_rows($query3) > 0){
            // We beginnen met tellen!
            $count = "0";
            echo '<table width="100%">';
            // While dan maar!
            while($list3 = mysql_fetch_object($query3)){
                // Als de count 0 is, betekent dat dat we een nieuwe rij moeten beginnen
                if($count == 0){
                    echo '<tr><td width="25%">';
                // En anders gewoon een nieuwe cel
                }else{
                    echo '<td>';
                }

                // Nu even de thumb laten zien
                
                    echo '<a href="?foto=' . $_GET[foto] . '.' . $list3->id . '.' . $fotonr . '"><img src="thumbnail.php?im=' . $list3->bestand . '" border="0" /></a>';
                // Als we nu trouwens op count = 3 zitten, moeten we de rij afsluiten.
                if($count == 3){
                    echo '</td></tr>';
                    $count = "0";
                // En anders alleen de cel zelf.
                }else{
                    echo '</td>';
                    $count++;
                }

                // Tellen we nog even de hoeveelste deze foto wel niet was..
                $fotonr++;
            }

            // En de tabel nog ff dicht..
            echo '</table>';
        // Stonden er toch geen foto's in? Dan even dat melden
        }else{
            echo 'Geen foto\'s gevonden voor in deze album';
        }

    // Nu nog even wat stats fabriceren.. dank u
    echo '<b>Aantal foto\'s:</b> ' . mysql_num_rows($query3) . '<br /><b>Aantal foto al in database:</b> ' . (mysql_num_rows($query3) - $inserts) . '<br /><b>Aantal foto in database gezet:</b> ' . $inserts . '<br /><br /><a href="?foto=overzicht">&laquo; Terug naar het overzicht</a>';
// En ja, als er niks is ingevuld, dan gaan we je doorversturen naar het overzicht!
}else{

    echo '<span class="titel_error">ERROR - Er deed zich een fout voor...</span><br /><br />
    <a href="?foto=overzicht">Je wou waarschijnlijk naar het overizcht? Klik hier!.</a>'
;
    
}


?>


Thumbnail.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php

$im
= $_GET['im'];

    $im = $im;
    
    $maxsize = $_GET['maxsize'];
    
    if($maxsize){
        $maxsize = $maxsize;
    }
elseif($_GET[foto]){
        $maxsize = 100;
    }
else{
        $maxsize = 100;
    }

        

            
// The file
$filename = $im;

// Set a maximum height and width
$width  = $maxsize;
$height = $maxsize;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig < $height_orig)) {
    $width = ($height / $height_orig) * $width_orig;
}
else {
    $height = ($width / $width_orig) * $height_orig;
}


// Resample
$image_p = imagecreatetruecolor($width, $height);
$image   = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
imagedestroy($image);
imageDestroy($image_p);

?>

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.