Gå til innhold

Vise 3 og 3 verdier sammen i en foreach


Anbefalte innlegg

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 av Garreth
Lenke til kommentar
Videoannonse
Annonse

<?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 av Jonas
Lenke til kommentar

Hmm, det der var temmelig avansert :p

 

 

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 av Garreth
Lenke til kommentar

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 av Henrik Lied
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...