Tis Een Raadsel

Status
Niet open voor verdere reacties.

luktmeniet

Nieuwe gebruiker
Lid geworden
1 dec 2006
Berichten
2
Het lukt me maar niet :(

Ik ben een beetje begonnen PHP te leren, maar het lukt me niet om de waarden ( getallen ) die ik in de values van options heb geschreven bij elkaar op te tellen.

Wil gewoon dat mensen via het selecteren van diverse dropdown boxen een totaal som krijgen van wat ze moeten betalen.
Op 1 of andere manier laat hij alleen de waarde zien van het laatste visueel zichtbare dropdown die ik via een while loop weergeef op een pagina.

Hieronder het voorbeeld :
PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>

<form action="" method="post" name="bereken">
<table width="350" border="0" align="left">

<?php
$result = mysql_query("select id, maincatin from maincat") or die(mysql_error());
while ($rows = mysql_fetch_object($result))
{
?>
<tr>
<td width="150"><?php echo $rows->maincatin; ?></td>
<td width="200">
<select class="invoer" name="bereken">
<option value="0">Maak een Keuze</option>

<?php
$resultSub = mysql_query("select * from produkten where maincat=$rows->id order by subcat") or die(mysql_error());
while ($rowsSub = mysql_fetch_object($resultSub))
{ ?>
<option  value="<?php echo $rowsSub->prijs; ?>"><?php echo $rowsSub->subcat; ?></option>
<?php
}
?>
</select>
</td>
</tr>
<?php
}
?>
<tr>
<td width="150"></td>
<td width="200">
<input type="submit" value="Bereken Nu" />
</td>
</tr>
</table>
<?php

$bereken =$_POST['bereken'];
$result = mysql_query("select * from produkten where subcat=prijs") or die(mysql_error());
$rowsPrijs = mysql_fetch_object($resultSub);
echo $bereken;
?>
</form>
</body>
</html>
 
Laatst bewerkt door een moderator:
al je selectboxen krijgen dezelfde naam, daardoor wordt in php enkel de laatste verzonden waarde bijgehouden. Je kan proberen om een teller bij te houden en die achter de naam van je select te hangen, zodat je de verschillende waardes toch nog kan krijgen.

--Johan
 
Beste Jonathan

Ik begrijp waar je naartoe wilt, maar aangezien ik nog niet zo heel lang bezig ben zou ik echt niet weten hoe dat er in het script uit zou komen te zien :)

Ik was zelf al een beetje aan het proberen te zoeken naar een oplossing door er een array van te maken en d.m.v. foreach toch alle options uit te kunnen lezen, maar het lukt me gewoon niet.

Zal wel iets over het hoofd zien of niet helemaal de logica ervan begrijpen.

Wat help zou meer dan welkom zijn.

THNX !
 
heb mijn aanpassing in vet gezet.

Een formulier mag niet dezelfde naam hebben als zijn onderdelen.. hoe weet je anders nog met welk van de twee je op welk moment bezig bent?

Ik heb een teller bijgehouden die voor elke selectbox die je maakt met 1 verhoogt, zodat elke box zijn eigen naam krijgt. Dan bij het berekenen, gebruik ik die waarde als maximumwaarde voor het uitlezen van alle selectboxen.

Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>

<form action="" method="post" name="bereken[B]en[/B]">
<table width="350" border="0" align="left">

<?php
[B]$selectIndex = 0;[/B]
$result = mysql_query("select id, maincatin from maincat") or die(mysql_error());
while ($rows = mysql_fetch_object($result))
{
?>
<tr>
<td width="150"><?php echo $rows->maincatin; ?></td>
<td width="200">
[B]<?php echo '<select class="invoer" name="bereken' . $selectIndex++ . '">' ;?>[/B]
<option value="0">Maak een Keuze</option>

<?php
$resultSub = mysql_query("select * from produkten where maincat=$rows->id order by subcat") or die(mysql_error());
while ($rowsSub = mysql_fetch_object($resultSub))
{ ?>
<option value="<?php echo $rowsSub->prijs; ?>"><?php echo $rowsSub->subcat; ?></option>
<?php
}
?>
</select>
</td>
</tr>
<?php
}
?>
<tr>
<td width="150"></td>
<td width="200">
<input type="submit" value="Bereken Nu" />
</td>
</tr>
</table>
<?php
[B]
$totaal = 0;
for ($i = 0; $i < $selectIndex, $i++) {
    $totaal += (int)($_POST['bereken'.$i]);
}
echo 'Totaal: ' . $totaal;[/B]
?>
</form>
</body>
</html>

Deze code is ongetest, aangezien ik (nog) niet over een database beschik, maar ik denk wel dat ze zou moeten werken.

--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan