Foto gallery & email script in 1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Henk Smit

Henk Smit

17/03/2011 10:03:28
Quote Anchor link
Ik zoek eigenlijk een vrij simpel scriptje:

Ik heb 1 map waarin ongeveer 3000 foto's staan (klein formaat).
Deze wil ik laten weergeven, 500 per pagina.
Bij elke foto moet een checkbox/radio button komen.
Onderaan de pagina moet een forumulier zitten waar een naam + e-mail adres ingevuld kan worden.

Het forumlier stuurt mij vervolgens een mailtje met daarin de naam & het e-mail adres dat is ingevuld en de bestandsnamen van de geselecteerde foto's.

Dit zodat ik deze foto's daarna kan gaan bewerken en mailen aan de gene die ze wil hebben.

Wie kan mij hierin op weg helpen of heeft zoiets liggen?
 
PHP hulp

PHP hulp

05/05/2024 01:56:01
 
- Mark -

- Mark -

17/03/2011 10:18:54
Quote Anchor link
Dit zal wel niemand kant en klaar hebben liggen. Veel werk is het echter niet. Het is best gemakkelijk zelf te maken. hoeveel ervaring met php heb je?
 
Henk Smit

Henk Smit

17/03/2011 10:20:43
Quote Anchor link
Als ik scripts zie kan ik ze wel enigsinds aanpassen, maar echt diepgaande kennis heb ik (nog) niet. Heb mijn eigen site in wordpress en zelf een theme aangepast naar mijn (relatief simpele) wensen en eisen.
Vrij (beperkte) basis kennis dus.
Gewijzigd op 17/03/2011 10:21:12 door Henk Smit
 
Maikel  B

Maikel B

17/03/2011 10:26:44
Quote Anchor link
Je kan een kant en klaar foto gallery script pakken en daar zelf een (simpel) formuliertje bij maken. Formulieren zijn zeer makkelijk te maken en als je er dan niet uit komt kun je het alsnog hier vragen :)
 
- Mark -

- Mark -

17/03/2011 10:31:42
Quote Anchor link
Grof weg heb je ongeveer het volgende nodig.

glob() / Database
Met deze php functie kun je al je foto's ophalen en in een array stoppen. Dit is echter niet heel snel met grote aantal foto's ik zou met een database gaan werken. Je moet dan eenmalig de locatie van elke foto invoegen. Je zou eenmalig een los stukje script kunnen schrijven die dat voor je doet, dit hoeft niet met de hand.

Pagination
Zo wordt het verdelen van content over meerdere pagina's genoemd.

Foto's weergeven
Je hebt al je foto's in een array/ de database staan dus je kunt er gewoon met een lus doorheen lopen. Je kunt dan direct de checkbox eronder plaatsen zodat een foto geselecteerd kan worden.

Formulier afhandeling
Het is nu alleen nog maar een kwestie van het formulier afhandelen en de E-mail versturen met de gekozen opties.

swiftmailer
voor het versturen van de E-mail. klik
 
Henk Smit

Henk Smit

17/03/2011 10:36:15
Quote Anchor link
Waarom met een database?
Neem aan dat je toch ook gewoon (gegenereerde) statische HTML kunt gebruiken?
De bestanden hebben als naam IMG_1234.jpg waarbij 1234 een willekeurig nummer is.

Zelf schrijven gaat me zo te lezen toch boven mijn kunnen.
 
- Mark -

- Mark -

17/03/2011 10:44:26
Quote Anchor link
Dat is ook mogelijk maar dan is het stukken meer werk om een zoek functie in te bouwen. En dat lijk me toch wel handig met zo'n groot aantal foto's. Gericht zoeken door 3000 foto's doe je namelijk niet even snel.
 
Henk Smit

Henk Smit

17/03/2011 10:49:37
Quote Anchor link
Het gaat ook niet om het zoeken.
De foto's zijn vakantie foto's waar anderen die mee waren naar kijken.
Welke ze op groot formaat willen hebben mogen ze dan selecteren zodat ik daar dan een grotere versie van kan opsturen.
Er worden namelijk ook geen tags, omschrijvingen, etc toegevoegd.
Alleen foto's + selectie boxen & formulier, that's it.
 
- Mark -

- Mark -

17/03/2011 10:57:44
Quote Anchor link
Onderstaande code is al wat ouder maar is goed genoeg om je pagina's aan te maken als je hem wat aanpast. Ik zou het wel lokaal draaien en niet op de server of met minder afbeeldingen in 1 keer. het is denk ik wat aan de zware kant.

Je hoeft nu alleen maar de checkboxen + opmaak in de lus te gooien en het formulier er buiten houden.
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
<?php

    /*--------------------------------------------------------------------------------------------------------------------------    
    (§) Settings.
    --------------------------------------------------------------------------------------------------------------------------*/    

    # De locatie van de te doorzoeken map.

    
        $location = '';


    # We zoeken alleen afbeeldingen dus alleen de volgende extensies worden toegestaan.
    
        $extensions = array('png', 'jpg');


    /*--------------------------------------------------------------------------------------------------------------------------    
    (§) Defaults.
    --------------------------------------------------------------------------------------------------------------------------*/    

    # Set " $images " array voor het opslaan van de afbeeldingen.

    
        $images = array();
        

    /*--------------------------------------------------------------------------------------------------------------------------    
    (§) Bestanden ophalen en de afbeeldingen eruit filteren.
    --------------------------------------------------------------------------------------------------------------------------*/    

    # Alle bestanden ophalen

    
        $files = glob($location.'*.*');


    # Eerst kijken we of er wel wat is gevonden.
    
        if(!empty($files)){

        /*---- INFO: Ja, Er zijn 1 of meerdere bestanden gevonden. ----*/

        # Alle gevonden bestanden doorlopen.

        
            foreach($files as $file){
                
            # Informatie over het bestand ophalen.
            
                $info = pathinfo($file);
            
            
            # Controleren of we met een geldige afbeelding te maken hebben.
            
                if(in_array($info['extension'], $extensions)){

                /*---- INFO: ... ----*/

                # afbeelding toevoegen aan de $images array waarin al onze afbeeldingen staan.


                    $images[$file] = $info;
                    
                }
            }
        }


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Demo :: Image viewer.</title>
</head>

<body>
<?php

    /*--------------------------------------------------------------------------------------------------------------------------    
    (§) Afbeeldingen weergeven.
    --------------------------------------------------------------------------------------------------------------------------*/    
    
    # Eerst gaan we kijken of er wel afbeeldingen zijn gevonden.


        if(!empty($images)){

        /*---- INFO: Ja, er zijn 1 of meerdere afbeeldingen gevonden. ----*/

        # alle afbeeldingen aflopen.

        
            foreach($images as $img => $info){
                
            # Afbeelding weergeven.
            
                echo '<img src="'.$img.'">';  
                
            }
        }

        else{

        /*---- INFO: Nee, er zijn geen afbeeldingen gevonden. ----*/

        # Foutmelding weergeven.

        
            echo 'Geen afbeeldingen gevonden.';  
            
        }


?>

</body>
</html>
 
Dashti webdeveloper

Dashti webdeveloper

17/03/2011 11:00:42
Quote Anchor link
Hi Henk

Ik kan je wel helpen met bouwen van de website.
jij zei dat je 3000 foto's hebt, is het niet verstandiger om te verdelen in albums? Dat is makkelijker voor de gebruiker als hij volgende keer weer op je site komt en een foto zoekt?
En heb je een design of huisstijl voor je website, of moet ik dat ook voor je ontwerpen?

gr Dashti
 
- Mark -

- Mark -

17/03/2011 11:01:50
Quote Anchor link
PS Waarom laat je ze niet gewoon de grotere afbeeldingen downloaden via je website? Het is dan ook niet zo arbeids intensief van jouw kant. En niet iedereen kan grote hoeveelheden opslaan in hun mailbox.
 
Henk Smit

Henk Smit

17/03/2011 11:05:02
Quote Anchor link
@ Mark, thanks ik zal eens kijken hoever ik hier mee kom.
De grote versies zijn 22,5MB per stuk. Zoveel storage heb ik niet online.
Dat het mij werk kost vind ik niet erg, ik bewerk de meeste toch allemaal na, welke ik dan niet zelf al heb bewerkt komen dan op die manier nog wel aan de beurt.
De foto's mail ik ook niet naar de personen, ik plaats die in een zip op mijn webserver, zodat ze het kunnen downloaden. :)

@ Dashti, heb al een website draaien, dit script zou in mijn eigen site (eventueel als embedded pagina) komen te draaien.

Dat van de albums is wel een goed idee, ik maak denk ik dan gewoon een paar pagina's met daarop 1 of meerdere dagen waarop foto's zijn genomen. Dat maakt het ook iets overzichtelijker.

De foto's blijven niet eeuwig staan, een maand of 2, vandaar dat ik er ook niet al te veel tijd & aandacht aan wil besteden. :)

Toevoeging op 17/03/2011 11:19:23:

@Mark, het script wat je hebt geplaatst werkt deels.
De home locatie moet ik server side invullen als:
/home/account/domains/domein.nl/public_html/folder/subfolder/dag1/

De bestanden worden gevonden, echter de output van de html (client) kan dit path niet opvragen. Die kan er pas vanaf /folder/subfolder/dag1/ bij.
Weet je hier wellicht nog iets voor?
Gewijzigd op 17/03/2011 11:06:18 door Henk Smit
 
- Mark -

- Mark -

17/03/2011 11:25:28
Quote Anchor link
zet eens tussen de foreach loop die de afbeeldingen weergeeft tijdelijk print_r($info);

Verander het stuk dat de afbeeldingen weergeeft eens naar onderstaande. wel even '_image_location_' vervangen door de correcte locatie.

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
<?php

    /*--------------------------------------------------------------------------------------------------------------------------    
    (§) Afbeeldingen weergeven.
    --------------------------------------------------------------------------------------------------------------------------*/    
    
    # Eerst gaan we kijken of er wel afbeeldingen zijn gevonden.


        if(!empty($images)){

        /*---- INFO: Ja, er zijn 1 of meerdere afbeeldingen gevonden. ----*/

        # alle afbeeldingen aflopen.

        
            foreach($images as $img => $info){
                
            # Afbeelding weergeven.
            
                echo '<img src="_image_location_/'.$info['basename'].'">';  
                
            }
        }

        else{

        /*---- INFO: Nee, er zijn geen afbeeldingen gevonden. ----*/

        # Foutmelding weergeven.

        
            echo 'Geen afbeeldingen gevonden.';  
            
        }


?>
Gewijzigd op 17/03/2011 11:41:06 door - Mark -
 
Henk Smit

Henk Smit

17/03/2011 11:45:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Array ( [dirname] => /home/account/domains/domein.nl/public_html/folder/subfolder/1 [basename] => IMG_1661.jpg [extension] => jpg [filename] => IMG_1661 )


Dat krijg ik te zien bij print_r($info);
Het aangepaste stuk code werkt. :)
Nu nog het form bouwen en kijken hoe ik meerdere checkboxes kan meesturen. :)
Gewijzigd op 17/03/2011 11:48:09 door Henk Smit
 
- Mark -

- Mark -

17/03/2011 11:52:49
Quote Anchor link
:p dat dacht ik al.

Over de checkboxen.

Je kunt het beste werken met arrays.

<input type="checkbox" name="selected[]" value="_foto_naam_">

Al de geselecteerde namen komen nu in $_POST['selected'] te staan. op de plaats van _foto_naam_ kun je $_info['basename'] of $_info['filename'] zetten. net wat je wilt.
 
Henk Smit

Henk Smit

17/03/2011 12:11:29
Quote Anchor link
<input type="checkbox" name="selected[]" value="$info['filename']">;

Eet ie niet.
Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';'

Geen idee wat ie daarmee bedoeld.
I feel stupid. :S
 
- Mark -

- Mark -

17/03/2011 12:13:57
Quote Anchor link
geef de volledige regel eens die je hebt. je moet zowiezo vars altijd buiten de quotes halen. Kijk maar eens hoe ik echo.
 
Henk Smit

Henk Smit

17/03/2011 12:15:38
Quote Anchor link
# Afbeelding weergeven.

echo '<img src="/folder/subfolder/'.$info['basename'].'">';
echo '<input type="checkbox" name="selected[]" value='$info['filename']'>';

Geeft error:

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /home/account/domains/domein.nl/public_html/folder/subfolder/1.php on line 100
 
- Mark -

- Mark -

17/03/2011 12:19:18
Quote Anchor link
:p ik zou zeggen zoek de verschillen. Enkele en dubbele quotes werken niet hetzelfde. dubbel voert uit, enkel niet. Normaal gebruik je altijd enkele quotes. Dat scheelt ook een hoop werk voor als je html moet echoen. Je hoeft dan namelijk niet zo veel te escapen.
 
Henk Smit

Henk Smit

17/03/2011 12:25:14
Quote Anchor link
Lezen is idd ook een vak. ;)
Nou maar eens stoeien hoe ik dat array in een mail gooi.
First time for everything!
 
- Mark -

- Mark -

17/03/2011 12:29:25
Quote Anchor link
:p eerst het formulier afhandelen, daarna kun je de gevens pas in een E-mail gooien.
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

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.