Titel toevoegen bij uploaden meerdere bestanden

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
Beste PFZ-ers,

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:

PHP:
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
$errors = array( );
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

     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><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>";

          /* Tot hier kan ik in ieder geval stellen dat alles goed verloopt. Afbeeldingen zijn geüpload en in de database gezet. Voorlopig gaat alles dus goed. */
      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($c_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>";
                }
           }
          }

               /* Dit onderste gedeelte word dus niet uitgevoerd */


Ik heb geprobeerd te 'debuggen' en ben tot de volgende antwoorden gekomen:

- 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.
- Als dat form dan ingevuld word en de pagina door de 'action="admin.php"' opnieuw 'gerefresht' word lijkt er niks te gebeuren.

Hierop loop ik dus een beetje vast.
Ik heb geprobeerd naar oplossingen te googlen echter kom ik hiermee niet echt verder.
Vandaar dan ik mijn hulp aan jullie vraag.

Tips en suggesties zijn dus meer als welkom!
Bij voorbaat dank :)

Acties:
  • 0 Henk 'm!

  • ByteMe_
  • Registratie: Januari 2009
  • Niet online
Waarom 2 forms? Titel kan je toch als array bij de eerste form zetten? Hoe wou je controleren welke titel bij welk plaatje hoort? Ik kan het hele script niet helemaal volgen.

Je zou ook met:
foreach (array_expression as $key => $value) kunnen werken en zo alles wat gepost is kunnen opslaan in de database

Je probeert nu een titel te inserten, maar dat wordt een nieuwe row dus, die nergens aan is gekoppeld...

en hier bv in de foreach:
$b_query = "INSERT INTO fotos (src, link, titel) VALUES ('$fotoNaam', '$pagina', '$titel')";
$b_result = mysql_query($b_query) or die ("<p class='error'>Error in query: $b_query.<span class='close'>X</span></p>".mysql_error());

EDIT: owja en debuggen kan je gewoon zo doen: bij een bepaald stuk wara je denkt dat het fout gaat gebruik je bv:

print_r($_POST);
die();

Zo weet je wat er gepost wordt en wordt de rest van de post niet uitgevoerd (die() hoeft niet per se, maar doe ik altijd wel)

[ Voor 18% gewijzigd door ByteMe_ op 23-10-2012 19:13 ]

Mijn laatste reviews: Xiaomi Mi 9T | Mpow H12