Garreth Skrevet 18. september 2009 Del Skrevet 18. september 2009 (endret) Hei Har et skjema som er satt opp slik: Klikk for å se/fjerne innholdet nedenfor <table class="skjema_personer" cellpadding="0" cellspacing="0"> <thead> <tr> <th scope="col"> </th> <th scope="col" abbr="Navn">Navn</th> <th scope="col" abbr="Alder">Alder</th> <th scope="col" abbr="Høyde">Høyde</th> </tr> </thead> <tbody> <tr> <th scope="row" abbr="Person 1">Person 1</th> <td><input id="person1_navn" name="person1_navn"></td> <td><input id="person1_alder" name="person1_alder"></td> <td><input id="person1_høyde" name="person1_høyde"></td> </tr> <tr> <th scope="row" abbr="Person 2">Person 2</th> <td><input id="person2_navn" name="person2_navn"></td> <td><input id="person2_alder" name="person2_alder"></td> <td><input id="person2_høyde" name="person2_høyde"></td> </tr> </tbody> </table> Jeg har lagt til et javascript som gjør at man kan legge til ekstra felter til flere personer. Jeg vil derfor gå gjennom verdiene automatisk i form_handleren som skal sende en mail med verdiene til en gitt e-post adresse. Slik ønsker jeg å presentere resultatet: <tr> <th>Person 1:</th> <td>Ola Nordmann<td>24år</td><td>190cm</td> </tr> <tr> <th>Person 2:</th><td>Kari Nordmann</td><td>20år</td><td>170cm</td> </tr> osv Jeg har prøvd med dette: Klikk for å se/fjerne innholdet nedenfor $count = 1; foreach($_POST as $key => $val){ $count_step = $count++; //Filtrer $post verdiene slik at den bare viser verdier med "person" if(substr($key,0,6) != "person") continue; $msgformat .= "<tr>\n"; $msgformat .= "<th scope=\"row\" abbr=\"Person $count_step\">Person $count_step:</th>\n"; //Her vil jeg gjerne vise 3 $val før den går videre $msgformat .= "<td>$val</td>"; $msgformat .= "<tr>\n"; } Men den looper igjennom hver eneste verdi som en egen linje i tabellen, jeg ønsker at den skal vise 3 og 3 verdier sammen. Hvordan kan jeg gjøre det? Endret 18. september 2009 av Garreth Lenke til kommentar
Steinmann Skrevet 18. september 2009 Del Skrevet 18. september 2009 Hva med å ha et felt som forteller hvor mange brukere du sender med i skjema, som javascriptet automatisk øker. Så kan du istedenfor å gå igjennom alt som ligger i post gå igjennom for hver person. Lenke til kommentar
Jonas Skrevet 18. september 2009 Del Skrevet 18. september 2009 (endret) <?php $_POST = array ( 'Ola Nordmann', '24år', '190cm', 'Kari Nordmann', '20år', '170cm', ); if ( count ( $_POST ) % 3 != 0 ) die ( 'z0mg' ); echo '<ul>'; for ( $aTell = 0, $aMax = count ( $_POST ); $aTell < $aMax; $aTell += 3 ) { echo '<li>'; for ( $bTell = 0, $bMax = 3; $bTell < $bMax; $bTell++ ) echo $_POST[$aTell + $bTell]; echo '</li>'; } echo '</ul>'; ?> Edit: Eventuelt noe litt mer elegant. <?php $_POST = array ( 'Ola Nordmann', '24år', '190cm', 'Kari Nordmann', '20år', '170cm', ); if ( count ( $_POST ) % 3 != 0 ) die ( 'z0mg' ); echo '<ul>'; for ( $iTell = 0, $iMax = count ( $_POST ); $iTell < $iMax; $iTell += 3 ) echo '<li>' . implode ( ' ', array_slice ( $_POST, $iTell, 3 ) ) . '</li>'; echo '</ul>'; ?> Endret 18. september 2009 av Jonas Lenke til kommentar
Garreth Skrevet 18. september 2009 Forfatter Del Skrevet 18. september 2009 (endret) Hmm, det der var temmelig avansert Jeg bruker en if statment for å filtrere ut disse personene fra $_Post variabelen (jeg henter ut alle andre $_Post verdier "manuelt"), slik: foreach($_POST as $key => $val){ if(substr($key,0,6) != "person") continue; //Kode for å skrive ut verdiene til personene her } Jeg ser ikke helt hvordan jeg skal få til den samme filteringen med din kode. Endret 18. september 2009 av Garreth Lenke til kommentar
Cucum(r) Skrevet 18. september 2009 Del Skrevet 18. september 2009 (endret) Sjekk denne kommentaren på php.net: $_POST Edit Følg rådet til Sebastian også: Ha ein JS-funksjon som oppdaterer ein counter (x) ved lagt til/fjerna felt, og bruk verdien x i person[x] Djangoplug I Django er det såpass enkelt som dette: name = request.POST.getlist('name') age = request.POST.getlist('age') height = request.POST.getlist('height') for name,age,height in zip(name,age,height): print 'Hei, mitt namn er %s, eg er %s gammal og %s høg' % (name,age,height) :--) Endret 18. september 2009 av Henrik Lied Lenke til kommentar
Garreth Skrevet 18. september 2009 Forfatter Del Skrevet 18. september 2009 (endret) Takk Henrik, visste ikke om den måten med array! Hehe, ja hadde vært mye lettere om jeg kunne brukt django Endret 18. september 2009 av Garreth Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå