login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dynamische form (array) naar database weg schrijven

Offline extranion - 01/11/2006 13:58 (laatste wijziging 01/11/2006 14:00)
Avatar van extranionNieuw lid Hallo beste sitemasters,

ik heb een form gemaakt op basis van een eerder form en aan elk veld een andere naam gegeven.

nu wil uit het form wat je hieronder ziet de values in de database zetten, ongeacht hoeveel tracks er in de form staan. want bijvoorbeeld de de ene keer vult een gebruiker 5 tracks in en de andere keer 10.

php bestand: http://www.plaatscode.be/3013/

dynamische form:
<form action='' method='post'>
<table><tr><td><br>CD1</td></tr><tr><td>Track 1 :</td><td>
<input name='tra_artiest[1][1]' type='text' value=''></td><td>
<input name='track[1][1]' type='text' value=''></td></tr>
<tr><td>Track 2 :</td><td>
<input name='tra_artiest[1][2]' type='text' value=''></td><td>
<input name='track[1][2]' type='text' value=''></td></tr>
<tr><td><br>CD2</td></tr><tr><td>Track 1 :</td><td>
<input name='tra_artiest[2][1]' type='text' value=''></td><td>
<input name='track[2][1]' type='text' value=''></td></tr>
<tr><td>Track 2 :</td><td>
<input name='tra_artiest[2][2]' type='text' value=''></td><td>
<input name='track[2][2]' type='text' value=''></td></tr>
<tr><td>Track 3 :</td><td>
<input name='tra_artiest[2][3]' type='text' value=''></td><td>
<input name='track[2][3]' type='text' value=''></td></tr>
<tr><td>Track 4 :</td><td>
<input name='tra_artiest[2][4]' type='text' value=''></td><td>
<input name='track[2][4]' type='text' value=''></td></tr>
<tr><td>Track 5 :</td><td>
<input name='tra_artiest[2][5]' type='text' value=''></td><td>
<input name='track[2][5]' type='text' value=''></td></tr>
<tr><td>Track 6 :</td><td>
<input name='tra_artiest[2][6]' type='text' value=''></td><td>
<input name='track[2][6]' type='text' value=''></td></tr>
<tr><td>Track 7 :</td><td>
<input name='tra_artiest[2][7]' type='text' value=''></td><td>
<input name='track[2][7]' type='text' value=''></td></tr>
<tr><td>Track 8 :</td><td>
<input name='tra_artiest[2][8]' type='text' value=''></td><td>
<input name='track[2][8]' type='text' value=''></td></tr><tr><td colspan=2>
<input type=submit value=Voegoe name=voegtoe></td></tr>
</table> </form>


database:
DROP TABLE IF EXISTS `tracks`;
CREATE TABLE IF NOT EXISTS `tracks` (
`tra_id` int(10) NOT NULL auto_increment,
`alb_id` int(5) NOT NULL default '0',
`tra_naam` text NOT NULL,
`tra_artiest` text NOT NULL,
`tra_type` int(1) NOT NULL default '0',
PRIMARY KEY (`tra_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

8 antwoorden

Gesponsorde links
Offline timo - 01/11/2006 14:01
Avatar van timo PHP ver gevorderde je kan steeds tussen de tracks er een tekenreeks zetten, iets als bv. #$$$#@@!@ en daar dan op exploden als je het eruit haalt... (zo'n rare tekenreeks omdat als je gwn & doet bv. dat in een titel kan voorkomen..
Offline extranion - 02/11/2006 22:31
Avatar van extranion Nieuw lid dit geeft geen antwoord op me vraag hij komt namelijk al binnen via een array.

nu moet hij nog worden weg geschreven naar de database.
Offline Thomas - 03/11/2006 10:15
Avatar van Thomas Moderator Dubbele for-lus?

  1. <?php
  2. // als $_POST['tra_artiest'] bestaat
  3. if(isset($_POST['tra_artiest']))
  4. {
  5. foreach($_POST['tra_artiest'] as $cd_number => $cd_content)
  6. {
  7. foreach($cd_content as $track_number => $track_title)
  8. {
  9. // hier je INSERT-query met $cd_number, $track_number en $track_content
  10. }
  11. }
  12. }
  13. ?>


Zoiets?
Offline extranion - 06/11/2006 12:44
Avatar van extranion Nieuw lid bedankt maar ik heb nog steeds een probleem.

Probleem is dat je nu alleen de artiest in de loop krijgt en niet in combinatie met de titel van het nummer.

Zodat je deze in 1x weg kan schrijven.

cd - track - artiest - title
Offline Thomas - 06/11/2006 12:53
Avatar van Thomas Moderator Ah k - die had ik ff over het hoofd gezien .

Je kunt, als $_POST['tra_artiest'][$cd_number][$track_number] bestaat, toch ook gebruik maken van $_POST['track'][$cd_number][$track_number]?
Offline extranion - 06/11/2006 13:13
Avatar van extranion Nieuw lid dus zou ik dan nog een extra loop moeten maken voor de track title of 4 lussen onder elkaar?

want als je meerdere lussen onder mekaar doet kan je die natuurlijk niet in 1x naar de database weg schrijven.
Offline Thomas - 06/11/2006 15:04
Avatar van Thomas Moderator Nope, op regel 9 kun je gewoon gebruik maken van $_POST['track'][$cd_number][$track_number].

Je kunt trouwens alles in één keer invoeren met één query:
  1. INSERT INTO tracks (velden)
  2. VALUES
  3. (eerste_rij),
  4. (tweede_rij),
  5. ...


Je moet dan zorgen dat je de rijen opspaart in een string, en deze na afloop in een query verwerkt.
Offline extranion - 17/11/2006 10:52
Avatar van extranion Nieuw lid dit werkt niet:( kan je mischien een wat uitgewerkter voorbeeld geven?

alvast bedankt
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.398s