Dit is een vervolg op mijn vraag over het opslaan van de parameters in de database. Omdat de lijst met waarden ontzettend lang is (55 records) wil ik deze graag in twee kolommen weergeven zodat de pagina korter wordt.

Ik heb het volgende bedacht:

<?php
$sql_ptp = "SELECT * FROM prijs_tp ORDER BY aantal";
$res_ptp = mysql_query($sql_ptp) or die (mysql_error());

if (mysql_num_rows($res_ptp) >= 1){
//er zijn gegevens gevonden

echo '<form method="post" action="?prijzen_tp">';
echo '<table cellspacing="0" cellpadding="0" width="100%">';
echo '<tr><td width="100"><b>Aantal</b></td>';
echo '<td><b>Prijs per persoon per nacht</b></td>';
echo '<td width="100"><b>Aantal</b></td>';
echo '<td><b>Prijs per persoon per nacht</b></td></tr>';

$i=0;

while ($row_ptp = mysql_fetch_array ($res_ptp)){
$color ^= 1;

if($i == ceil($res_ptp / 2)){
echo '<tr class="rij'.$color.'"><td>'.$row_ptp['aantal'].'</td>';
echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
}
else {
echo '<td>'.$row_ptp['aantal'].'</td>';
echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
echo '</tr>';
}
$i++;

}

echo '</table>';
echo '<p></p><input name="submit" type="submit" value="Opslaan" class="button"> <input name="submit" type="reset" value="Reset" class="button">';
echo '</form>';

}
?>

Alleen dit werkt niet zoals ik wil. Zoals ik zei heb ik 55 records in de database staan en nu is het zo dat alleen het veld waar aantal = 32 in de tweede kolom komt te staan.

aantal|ppn|aantal |ppn

| 25 | 11.99 | | |
| 26 | 12.00 | | |

ga maar door ga maar door

| 31 | 8.99 | 32 |8.01|
| 33 | 8.85 | | |

Ik heb zelf alleen geen idee waarom het alleen bij 32 zo is. De getallen die voorkomen in de berekening zijn

$res_ptp = 55

Ik heb dit idee van phpfreaks

Iemand anders een idee?
Dat is een goeie en als ik je goed begrijp dan heb je een tabel met zeg maar 55 id's in je tabel die je in twee kolommen met een van 25 id's en de andere 30 id's wil laten zien?

Dit probleem heb ik ook en weet ook zo 1-2-3 niet een oplossing danwel met te laten tellen tot 30 en dan te stoppen. Maar ja hoe nu verder...

Bedoel je dit?:


<?php
error_reporting(E_ALL);

$i = 1;
		
while( $i < 56 )
{ 		
	$aProduct[] = array('naam' => 'product'.$i, 'prijs' => $i*100);
	$i++;	
}
		
$j = 0;
		
foreach( $aProduct as $v )
{
	echo '[naam:' . $v['naam'] . ' | prijs:' . $v['prijs'] . ' ] - ';
		
	if( $j == 1 )
	{
		# Nieuwe regel
		echo '<br/>';
				
		# $j resetten
		$j = -1;
	}
	
	$j++;
}
?>
Zal voor mij niet werken maar ik heb in iedergeval een idee om dit verder uit te werken. Bedankt !!!
@Crispijn:

Verander onderstaande eens:
<?php
// In plaats van:
if($i == ceil($res_ptp / 2)

// Doe je dit:
if($i%2 == 0)
?>

ps. @lissy: Kijk eens in dit topic, misschien vind je op deze pagina nog wat nuttige informatie.
Ik heb ook een leuke verzonnen.
Is niet getest.
Je zal in $hulparray[$i + $j]['aantal'] 'aantal' waarschijnlijk moeten vervangen door een cijfer die overeen komt met de juiste kolom uit de database. En de anderen dan natuurlijk ook.
<?php
$sql_ptp = "SELECT * FROM prijs_tp ORDER BY aantal";
$res_ptp = mysql_query($sql_ptp) or die (mysql_error());

$aantal = mysql_num_rows($res_ptp);
if($aantal > 0)
{
//er zijn gegevens gevonden
echo '<form method="post" action="?prijzen_tp">';
echo '<table cellspacing="0" cellpadding="0" width="100%">';
echo '<tr><td width="100"><b>Aantal</b></td>';
echo '<td><b>Prijs per persoon per nacht</b></td>';
echo '<td width="100"><b>Aantal</b></td>';
echo '<td><b>Prijs per persoon per nacht</b></td></tr>';

while ($row_ptp = mysql_fetch_array ($res_ptp))
{
$hulparray[] = $row_ptp;
}
$helft = ceil($aantal / 2);
for($i = 0; $i < $helft; $i++)
{
$color ^= 1;
echo '<tr class="rij' . $color . '">';
for($j = 0; $j < $aantal; $j = $j + $helft)
{
if(isset($hulparray[$i + $j]))
{
echo '<td>' . $hulparray[$i + $j]['aantal'] . '</td>';
echo '<td><input type="text" name="prijs[' . $hulparray[$i + $j]['aantal'] . ']" value="' . $hulparray[$i + $j]['pppn'] . '" class="inputbox" size="5" maxlength="5"></td>';
}
}
echo '</tr>';
}

echo '</table>';
echo '<p></p><input name="submit" type="submit" value="Opslaan" class="button"> <input name="submit" type="reset" value="Reset" class="button">';
echo '</form>';
}
?>
Het maakt me niet uit hoe lang de rijen zijn, of hoe ze verdeeld zijn. Het belangrijkste is dat de lange enkele kolom verdeeld wordt over 2 kolommen... Het liefst dan zo:

25|26
27|28
etc...

Bedankt voor jullie posts! Ik ga eens even klussen!
@Crispijn, zo dan?

<?php
$sql_ptp = "SELECT * FROM prijs_tp ORDER BY aantal";
$res_ptp = mysql_query($sql_ptp) or die (mysql_error());

if (mysql_num_rows($res_ptp) >= 1){
//er zijn gegevens gevonden

echo '<form method="post" action="?prijzen_tp">';
echo '<table cellspacing="0" cellpadding="0" width="100%">';
echo '<tr><td width="100"><b>Aantal</b></td>';
echo '<td><b>Prijs per persoon per nacht</b></td>';
echo '<td width="100"><b>Aantal</b></td>';
echo '<td><b>Prijs per persoon per nacht</b></td></tr>';

$i=0;

while ($row_ptp = mysql_fetch_array ($res_ptp)){
$color ^= 1;
// hier begonnen met aanpassen
if($i % 2 == 1)){
echo '</td><td>'.$row_ptp['aantal'].'</td>';
echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td></tr>';
}
else {
echo '<tr><td>'.$row_ptp['aantal'].'</td>';
echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
}
$i++;

}

echo '</table>';
echo '<p></p><input name="submit" type="submit" value="Opslaan" class="button"> <input name="submit" type="reset" value="Reset" class="button">';
echo '</form>';

}
?>

(ben ook maar even aan het denken geslagen)
Mijn script zou ze zo neer moeten zetten:

01 | 29
02 | 30
03 | 31
..
27 | 55
28 |

Oke, Blanche had de trick.

Ik heb nu het volgende:

<?php
$i=0;

while ($row_ptp = mysql_fetch_array ($res_ptp)){


if($i%2 == 0){
$color ^= 1;
echo '<tr class="rij'.$color.'"><td>'.$row_ptp['aantal'].'</td>';
echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
}
else {
echo '<td>'.$row_ptp['aantal'].'</td>';
echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
echo '</tr>';
}
$i++;

}
?>

en het werkt. Ook heb ik nu netjes alle rijën om en om een andere kleur door de $color binnen de if te halen. Snappen jullie me nog? Dit is naar mijn idee verreweg de simpelste manier om dit te realiseren.

Bedankt voor het meedenken!

Cris

Reageren