Titel toevoegen bij uploaden meerdere bestanden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ronny -

Ronny -

19/10/2012 12:10:15
Quote Anchor link
Beste PHP-hulpers,

Voor een project ben ik bezig met een script waarbij meerdere foto's geupload kunnen worden.
Aan deze foto's moet een titel kunnen worden meegegeven. Nu ben ik bezig geweest met mijn script en kom ik er niet uit.

Ik krijg een veld om het in te voeren, en krijg geen errors te zien.
Echter worden de titels niet in de database geplaatst.

Hiervoor gebruik ik het volgende script:

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
<?php      
        $errors
= array( );
        ini_set( 'display_errors', 1 );
        error_reporting( E_ALL );
        
        $query ="SELECT link FROM albums";
        $result = mysql_query($query);

        echo "<form method='post' action='admin.php' enctype='multipart/form-data'>
                <p><label>Selecteer foto's:</label><br>
                <input name='fotos[]' type='file' multiple='' /></p>
                
                <p><label>Plaats foto's in:</label><br>
                <select name='pagina'>"
;                
                while($row = mysql_fetch_array($result)) {
                echo    "<option>".$row['link']."</option>";                                                                
                }

                
                echo "</select></p><p><input type='submit' class='opslaan' name='submit_fotos' value='Toevoegen' /></p>
            </form>"
;
            
                        if (isset($_POST['submit_fotos']) && isset($_FILES['fotos'])) {
                      for($i = 0; $i < count ($_FILES['fotos']['name']); $i++) {
        /* Hiertussen moet zit nog script voor het uploaden van de bestanden met een for loop. Niet belangrijk hiervoor ga ik vanuit maar wel redelijk lang, daarom niet gepost. */
                                  }
                        }

    
                        $pagina = empty($_POST['pagina']) ? die ("") : mysql_real_escape_string($_POST['pagina']);
                        
                        $b_query = "INSERT INTO fotos (src, link) VALUES ('$fotoNaam', '$pagina')";
                        $b_result = mysql_query($b_query) or die ("<p class='error'>Error in query: $b_query.<span class='close'>X</span></p>".mysql_error());

/* Voor elke foto die geupload word komt er dus een input veld waar de titel ingevuld kan worden. */
                        echo "<form method='post' action='admin.php'>
                                <p><label>Geef naam aan foto:</label><br>
                                <input type='text' name='titel' class='field' value='' /> <input type='submit' class='opslaan' name='submit_titel' value='Toevoegen' /></p>
                            </form>"
;


                        echo "<p class='update'>Deze foto (".$_FILES['fotos']['name'][$i].") is toegevoegd.<span class='close'>X</span></p>";
                        
/* als de titel dus is ingevoerd zet moet die hem hier dus in de database zetten. Echter gebeurd dit dus niet.. */
                        if (isset($_POST['submit_titel'])) {
                            if (empty($_POST['titel'])) {
                                echo "<p class='error'>Er moet een naam voor de foto worden ingevuld! <span class='close'>X</span></p>";
                            }
else {
                                $titel = empty($_POST['titel']) ? die ("") : mysql_real_escape_string($_POST['titel']);
                                
                                $c_query = "INSERT INTO fotos (titel) VALUES ('$titel')";
                                $c_result = mysql_query($b_query) or die ("<p class='error'>Error in query: $c_query.<span class='close'>X</span></p>".mysql_error());
                                echo "<p class='update'>Foto naam is toegevoegd.<span class='close'>X</span></p>";
                            }
                        }
                    }
                }
            }

            
            $fileHandle = fopen(''.$pagina.'.php', 'w') or die("<p class='error'>Het bestand kan niet geopend worden.<span class='close'>X</span></p>");
            fwrite($fileHandle, '<?php include "include/add.php"; ?>');
            fclose($fileHandle);
        }


?>


Hopelijk is het een beetje duidelijk voor jullie en weten jullie wat ik fout doe.
Aangezien ik ook geen foutmeldingen oid krijg weet ik ook niet hoe ik het zou moeten oplossen, waar ik op moet zoeken of wat andere opties zijn.

Tips, suggesties en oplossingen zijn dus meer als welkom!
Bij voorbaat dan :)
 
PHP hulp

PHP hulp

03/05/2024 12:30:41
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/10/2012 13:05:19
Quote Anchor link
Hoi Ronny,

Je maakt een query die je opslaat in $c_result, en je laat mysql query uitvoeren met $b_result.
Ik denk dat het daar mis gaat, $b_result zou $c_result moeten zijn.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$c_query
= "INSERT INTO fotos (titel) VALUES ('$titel')";
$c_result = mysql_query($b_query) or die ("<p class='error'>Error in query: $c_query.<span class='close'>X</span></p>".mysql_error());
?>


Je geeft zelf aan dat je er niet meer uitkomt. Als ik naar jouw script kijk dan begrijp ik dat wel.
Dus geef ik je nog wat advies:

Jouw code wordt al een aardige spaghetti brij met veel if() else lussen. Probeer dit te beperken en ga gebruik maken van functies. Hou daarbij zoveel mogelijk het genereren van html en het bewerken van data van elkaar gescheiden.

bijvoorbeeld zo:

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

// database functies
function insert_title($table, $titel) {
    $query = "INSERT INTO ".$table." (titel) VALUES ('".$titel."')";
    return $result = mysql_query($query);
}

function
select_links() {
    $arr = array();
    $query ="SELECT link FROM albums";

    $result = mysql_query($query);
    while($arr[] = mysql_fetch_array($result));
    return $arr;
}


// html functies
function make_select($arr, $name) {
    $html = '<select name="'.$name.'">';
    foreach($arr as $row)
        $html .= '<option>'.$row['link'].'</option>';
    return $html.'</select>';
}


// script start
$arr = select_links();

?>


<html>
<body>
<form method='post' action='admin.php' enctype='multipart/form-data'>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo make_select($arr, 'pagina'); ?>

</form>
</body>
</html>
Gewijzigd op 19/10/2012 13:48:23 door Frank Nietbelangrijk
 
Kris Peeters

Kris Peeters

19/10/2012 13:44:05
Quote Anchor link
Ik vind ook dat men meer in functies moet steken.
Het maakt de logica gemakkelijker. Het maakt alles leesbaarder; het maakt alles meer herbruikbaar.

En vooral: binnen die functie kan je de werking apart testen en verfijnen.
 
Obelix Idefix

Obelix Idefix

19/10/2012 18:59:36
Quote Anchor link
Uiteraard staat het een ieder vrij om zijn/haar vraag op meerdere fora te posten.
Wel zo netjes om dat dan even aan te geven, zodat je ook kunt kijken wat daar al staat aan informatie/reacties.

Vraag staat (o.a.?) op http://www.pfz.nl/forum/topic/8618-titel-toevoegen-bij-uploaden-meerdere-bestanden/
 
Ronny -

Ronny -

22/10/2012 18:57:49
Quote Anchor link
Bedankt voor je antwoord Frank.

De fout van de c_ & b_query was inderdaad een domme fout, gewoon over het hoofd gezien mede door mijn onduidelijke code, dat klopt.
Echter heb ik dit nu aangepast en heeft het mijn probleem niet opgelost.

Ik heb wel geprobeerd mijn script te debuggen en te kijken hoe ver mijn script komt.
Dan zijn dit de stappen die hij uitvoert:

- Foto(s) worden toegevoegd via het form met de submit knop '$submit_fotos'.
- Pagina word 'geresfrest' door de 'action="admin.php"' in het form en de pagina word opnieuw geladen.
- Er komen echo's met daarin de tekst dat de foto is toegevoegd (foto's zijn op dat moment goed geupload en in de database gezet). Tegelijk hiermee verschijnt ook het nieuwe form waarin de titels toegevoegd moeten worden.
Dit gebeurd dus met de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php $b_query = "INSERT INTO fotos (src, link) VALUES ('$fotoNaam', '$pagina')";
                        $b_result = mysql_query($b_query) or die ("<p class='error'>Error in query: $b_query.<span class='close'>X</span></p>".mysql_error());

/* Voor elke foto die geupload word komt er dus een input veld waar de titel ingevuld kan worden. */
                        echo "<form method='post' action='admin.php'>
                                <p><label>Geef naam aan foto:</label><br>
                                <input type='text' name='titel' class='field' value='' /> <input type='submit' class='opslaan' name='submit_titel' value='Toevoegen' /></p>
                            </form>"
;


                        echo "<p class='update'>Deze foto (".$_FILES['fotos']['name'][$i].") is toegevoegd.<span class='close'>X</span></p>";?>


- Als dat form dan ingevuld word en de pagina door de 'action="admin.php"' opnieuw 'gerefresht' word lijkt er niks te gebeuren.
Het volgende stukje van het script lijkt dus niet uitgevoerd te worden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php if (isset($_POST['submit_titel'])) {
                            if (empty($_POST['titel'])) {
                                echo "<p class='error'>Er moet een naam voor de foto worden ingevuld! <span class='close'>X</span></p>";
                            }
else {
                                $titel = empty($_POST['titel']) ? die ("") : mysql_real_escape_string($_POST['titel']);
                                
                                $c_query = "INSERT INTO fotos (titel) VALUES ('$titel')";
                                $c_result = mysql_query($b_query) or die ("<p class='error'>Error in query: $c_query.<span class='close'>X</span></p>".mysql_error());
                                echo "<p class='update'>Foto naam is toegevoegd.<span class='close'>X</span></p>";
                            }
                        }
?>


Iemand enig idee wat ik hieraan kan doen?

In reactie op Obelix en Idefix:
Mijn excuses. Naar mijn idee had het niet veel nut om het erbij te vermelden en wist ook niet dat mensen hier een probleem van zouden maken.
Mijn idee hierachter om het op meerdere forums te posten was zodat ik dan meer (goede) feedback kan krijgen, meerdere dingen kan proberen en meerdere dingen kan leren.

In reactie op Frank & Kris:
Tevens bedankt voor jullie tips over het gebruik van functies.
Ik zal hier de tijd voor nemen om dit te bekijken en hiermee proberen te leren werken.
Het ziet er inderdaad een stuk overzichtelijker uit en het helpt mij wellicht mijn code over een jaar ook nog te kunnen begrijpen haha!

Nogmaals bedankt voor jullie antwoorden en ik hoop dat jullie me nog verder kunnen helpen :)
Gewijzigd op 22/10/2012 19:02:22 door Ronny -
 



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.