Afbeelding uploaden in database en daarna tonen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Branco Rensen

Branco Rensen

21/01/2015 12:07:44
Quote Anchor link
Hallo PHPers,
Ik heb een vraag, ik ben bezig met een paneel waar gebruikers informatie in kan worden bewerkt, nu wil ik dat gebruikers ook hun afbeelding kunnen bewerken. Is dit mogelijk? En zoja, hoe? Ik had al wat tutorials gevonden op internet maar ik kom er niet uit hoe ik dit moet implenteren in mijn systeem.

Dit is een stukje van mij code
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
                                 <div class="box-body">
                                            <?php
                                                if(isset($_GET['action'])){
                                                    if($_GET['action'] == "bewerk"){
                                                        if(trim($_POST['naam']) == ""){
                                                            $_POST['naam'] = $mdFetch['naam'];
                                                        }

                                                        if(trim($_POST['email']) == ""){
                                                            $_POST['email'] = $mdFetch['email'];
                                                        }

                                                        if(isset($_POST['admin'])){
                                                            $admin = 1;
                                                        }
else{
                                                            $admin = 0;
                                                        }

                                                        if(trim($_POST['afbeelding']) == ""){
                                                            $_POST['afbeelding'] = $mdFetch['afbeelding'];
                                                        }

                                                        $passerror = false;
                                                        if(trim($_POST['pass1']) == ""){
                                                            $password = $mdFetch['wachtwoord'];
                                                        }
else{
                                                            if(trim($_POST['pass2']) == ""){
                                                                $passerror = true;
                                                            }
else{
                                                                if($_POST['pass1'] == $_POST['pass2']){
                                                                    $password = sha1($_POST['pass1']);
                                                                }
else{
                                                                    $passerror = true;
                                                                }
                                                            }
                        }

                      if(!$passerror){
                        if($db->query("UPDATE gebruikers SET naam='".$db->real_escape_string($_POST['naam'])."',
                                                             email='"
.$db->real_escape_string($_POST['email'])."',
                                                             wachtwoord='"
.$password."',
                                                             admin='"
.$admin."',
                                                             WHERE id='"
.$db->real_escape_string($mdFetch['id'])."'")){
                         ?>

                         <div class="callout callout-info">
                         <button type="button" class="close" data-dismiss="alert">&times;</button>
                         <strong>Gelukt!</strong> Je gegevens zijn bijgewerkt!
                         </div><?php
                      }else{
                        ?>

                        <div class="callout callout-danger">
                         <button type="button" class="close" data-dismiss="alert">&times;</button>
                         <strong>Mislukt!</strong> Je gegevens zijn niet bijgewerkt!
                         </div>
                        <?php
                      }
                    }
else{
                      ?>

                      <div class="callout callout-danger">
                      <button type="button" class="close" data-dismiss="alert">&times;</button>
                      <strong>Mislukt!</strong> Je gegevens zijn niet bijgewerkt, de wachtwoorden zijn niet ingevuld of niet gelijk aan elkaar!
                      </div>
                      <?php
                    }  
                    }
elseif($_GET['action'] == "verwijder"){
                      if($db->query("DELETE FROM gebruikers WHERE id='".$db->real_escape_string($_GET['id'])."'")){
                        ?>

                        <div class="callout callout-info">
                         <button type="button" class="close" data-dismiss="alert">&times;</button>
                         <strong>Gelukt!</strong> Je hebt je account verwijderd!
                         </div>
                         <?php
                      }else{
                        ?>

                        <div class="callout callout-danger">
                        <button type="button" class="close" data-dismiss="alert">&times;</button>
                        <strong>Mislukt!</strong> Je hebt je account niet verwijderd!
                        </div>
                        <?php
                      }
                    }  
                    }
else{
                    ?>

                    <?php  include ("afbeelding/filter.php"); ?>
                    <form action="?id=<?php echo $mdFetch['id']; ?>&action=bewerk" enctype="multipart/form-data" method="post">
                      <div class="form-group">                    
                        <label for="id">Medewerker ID</label>
                            <input type="text" class="form-control" disabled="" name="id" value="<?php echo $mdFetch['id']; ?>">
                            <p class="help-block">Het ID kan niet worden bewerkt.</p>      
                      </div>
                      <div class="form-group">                    
                        <label for="naam">Gebruikersnaam</label>
                            <input type="text" class="form-control" name="naam" value="<?php echo $mdFetch['naam']; ?>">      
                      </div>
                      <div class="form-group">                    
                        <label for="email">Emailadres</label>
                            <input type="text" class="form-control" name="email" value="<?php echo $mdFetch['email']; ?>">      
                      </div>
                      <div class="form-group">                    
                        <label for="email">Wachtwoord</label>
                            <input type="password" class="form-control" name="pass1">
                        </label>
                        <label>Bevestig wachtwoord </label>
                                <input type="password" class="form-control" name="pass2"/>

                            <p class="help-block">Laat deze velden leeg als het wachtwoord niet gewijzigd hoeft te worden.</p>    
                      </div>  
                        <div class="form-group">
                            <input name="afbeelding" type="file" accept="image/jpeg" id="afbeelding" size="50"/>
                        </div>
                        <?php if($userFetch['admin'] == 1){ ?>
                      <div class="form-group">                      
                        <label>Rang</label>  <br>
                              <input type="radio" name="admin"> Administrator&nbsp;&nbsp;
                             <input type="radio" name="medewerker"> Medewerker <br><br>
                        <?php } ?>
                      <input type="submit" id="submit" class="btn btn-primary btn-flat" value="Bewerk!">
                    </form>  
                    <?php } ?>
                  </div>  
              </div>


Kan iemand mij op weg helpen?

Met vriendelijke groet,
Branco Rensen
 
PHP hulp

PHP hulp

25/12/2024 05:34:35
 

21/01/2015 12:26:07
Quote Anchor link
Woooooowww. Ik zou eerst hier iets aan doen.

Er worden hier heel veel dingen gedaan die niet hoeven denk ik. Probeer eerst de dingen op te geven die fout kunnen gaan/zijn en daar je afhandeling op te maken.

Verder raadt ik je aan om admin gerelateerde dingen in een aparte "handle" te plaatsen.
user_handle.php
user_admin_handle.php

Daarna moet je ook even uitleggen wat er precies niet lukt in deze spaghetti code.

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
<?php
if(isset($_GET['action'])){
    if($_GET['action'] == "bewerk"){
        if(trim($_POST['naam']) == ""){
            $_POST['naam'] = $mdFetch['naam'];
        }

        if(trim($_POST['email']) == ""){
            $_POST['email'] = $mdFetch['email'];
        }

        if(isset($_POST['admin'])){
            $admin = 1;
        }
else{
            $admin = 0;
        }

        if(trim($_POST['afbeelding']) == ""){
            $_POST['afbeelding'] = $mdFetch['afbeelding'];
        }

        $passerror = false;
        if(trim($_POST['pass1']) == ""){
            $password = $mdFetch['wachtwoord'];
        }
else{
            if(trim($_POST['pass2']) == ""){
                $passerror = true;
            }
else{
                if($_POST['pass1'] == $_POST['pass2']){
                    $password = sha1($_POST['pass1']);
                }
else{
                    $passerror = true;
                }
            }

?>
Gewijzigd op 21/01/2015 12:39:46 door
 
Branco Rensen

Branco Rensen

21/01/2015 12:32:51
Quote Anchor link
Bedankt voor die tip, ga ik iets mee doen.

Wat er fout is gegaan? Ik krijg het script wel zo ver om de naam van de afbeelding te posten, maar niet het bestand ergens te droppen, en ik wil graag weten hoe ik dat moet doen?
 

21/01/2015 12:44:31
Quote Anchor link
Je zal hier de code moeten plaatsen om de afbeelding te uploaden.
http://www.sitepoint.com/handle-file-uploads-php/

Ik zou eerst echt even naar de opbouw van het script kijken. Er zijn teveel ifjes e.d
We wachten op een 2e verbeterde versie van het script en natuurlijk mag je ons lastigvallen hoe het beter kan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if(trim($_POST['afbeelding']) == ""){
$_POST['afbeelding'] = $mdFetch['afbeelding'];
}
 
Branco Rensen

Branco Rensen

21/01/2015 12:48:57
Quote Anchor link
nu je het over de opbouw hebt, hoe zou dit beter kunnen dan?

Toevoeging op 21/01/2015 12:52:56:

De link die je stuurde kom ik niet uit, sorry, heb je misschien wat meer voorbeelden? Ik heb zelf op google ook al gezocht maar het lukt me niet echt.
 

21/01/2015 13:10:04
Quote Anchor link
Oke ik heb het forumlier voor je opgeschoond en het in 2en gedeeld.
Je zal hier nog wat dingetjes bij moeten zetten natuurlijk en het uitbreiden. Maar dit is een goede opzet van het verwerken van formulier data.

De upload van de afbeelding zal op de plek moeten komen waar ik de comment heb neergezet in de user_handle.php
Je zal ook wat info moeten verkrijgen hoe je een plaatje upload en dit moeten uitzoeken. We kunnen alles voorzeggen maar hier leer je helaas niets van.
Niet gemeen bedoelt, maar ik "leer" meerdere mensen PHP en doe dit altijd zo. Ze weten nu veel beter hoe PHP werkt en hoe dingen afgehandeld moeten worden.

Deel 1: formulier
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
<div class="box-body">
        <?php include('afbeelding/filter.php'); ?>
        <form action="user_handle.php?id=<?= $mdFetch['id']; ?>" enctype="multipart/form-data" method="post">
            <div class="form-group">
                <label for="id">Medewerker ID</label>
                <input type="text" class="form-control" disabled="" name="id" value="<?= $mdFetch['id']; ?>">

                <p class="help-block">Het ID kan niet worden bewerkt.</p>
            </div>
            <div class="form-group">
                <label for="naam">Gebruikersnaam</label>
                <input type="text" class="form-control" name="naam" value="<?= $mdFetch['naam']; ?>">
            </div>
            <div class="form-group">
                <label for="email">Emailadres</label>
                <input type="text" class="form-control" name="email" value="<?= $mdFetch['email']; ?>">
            </div>
            <div class="form-group">
                <label for="email">Wachtwoord</label>
                <input type="password" class="form-control" name="pass1">
                </label>
                <label>Bevestig wachtwoord </label>
                <input type="password" class="form-control" name="pass2"/>

                <p class="help-block">Laat deze velden leeg als het wachtwoord niet gewijzigd hoeft te worden.</p>
            </div>
            <div class="form-group">
                <input name="afbeelding" type="file" accept="image/jpeg" id="afbeelding" size="50"/>
            </div>
            <?php if ($userFetch['admin'] == 1): ?>
            <div class="form-group">
                <label>Rang</label> <br>
                <input type="radio" name="admin"> Administrator&nbsp;&nbsp;
                <input type="radio" name="medewerker"> Medewerker <br><br>
                <?php endif; ?>
                <input type="submit" id="submit" class="btn btn-primary btn-flat" value="Bewerk!">
            </div>
        </form>
</div>



Deel 2: user_handle.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
<?php
// Kijk of de request method van de server gelijk is een POST, anders redirect naar het formulier terug
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    header('Location: edit.php');
}


// Controlleer of de wachtwoorden niet leeg zijn of niet identiek aan elkaar
if($_POST['pass1'] == '' || $_POST['pass2'] == '' or $_POST['pass1'] != $_POST['pass2'])
{

    // Zet hier in een sessie neer wat er fout is gegaan en geef dit weer bij het formulier

    // Redirect naar de edit pagina (met het formulier erop)

    header('Location: edit.php');
}



// Hier kunnen we dingen gaan controleren van het forumulier
$naam           = trim($_POST['naam']);
$email          = trim($_POST['email']);
$afbeelding     = $_FILE['afbeelding'];
$password       = sha1($_POST['pass2']);

// Je zou de admin nu kunnen bepalen, maar ik zou dit liever in de sessie opnemen


// Hier kan je de afbeelding gaan uploaden met, move_uploaded_file()



$db->query("UPDATE gebruikers SET naam='" . $db->real_escape_string($naam) . "',
         email='"
. $db->real_escape_string($email) . "',
         wachtwoord='"
. $password . "',
         WHERE id='"
. $db->real_escape_string($_GET['id']) . "'");
?>
 
Branco Rensen

Branco Rensen

21/01/2015 13:31:14
Quote Anchor link
Dankje, ik kom hier een eind verder mee... Ik weet opzich de basis van PHP maar sommige dingen gaan me net iets te ver, zoals het uploaden van die afbeelding... Ik heb een compleet scriptje gevonden om die afbeelding te uploaden maar dat zijn 2 pagina's, met Filter.php en Upload.php, hoe kan ik dit hier invoegen? Ik kan je het script hier laten zien als dat nodig is?

Toevoeging op 21/01/2015 13:53:07:

Het is opgelost! Bedankt voor jullie hulp!
 

21/01/2015 15:06:56
Quote Anchor link
Goed bezig. Blijf oefenen en behoud de denkwijze die ik hanteer.
Je moet zo denken dat je nooit of bijna nooit een else wilt schrijven. Er zijn natuurlijk uitzonderingen.
 



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.