PHP gevorderde |
|
ik ben bezig met een script om de totaalprijs te berekenen van een aantal artikelen.
Het probleem is enkel het volgende:
- Ieder 5e artikel is gratis (dus ook 10e, 15e enz.)
- Er zijn 3 verschillende soorten artikelen, per soort kosten ze hetzelfde.
- Het 5e artikel is alleen gratis als het 5 artikelen van dezelfde soort zijn.
Nu kom ik hier niet helemaal uit. ik heb onderstaand script geschreven, maar hier komt een heel groot min bedrag uit. (-307,50 terwijl het 19,50 moet zijn.)
ik ben dus aan het proberen gegaan om per artikelsoort een variabele korting aan te maken en deze dan van het totaalbedrag af te trekken, maar dit is niet de goede manier denk ik.
<?php
while ($row1 = mysql_fetch_array($result1))
{
$query2 = "SELECT naam,genre,soort FROM films WHERE id=".$row1['filmID'];
$result2 = mysql_query($query2) or die (mysql_error());
$row2 = mysql_fetch_array($result2);
$query3 = "SELECT * FROM prijzen WHERE id=1";
$result3 = mysql_query($query3) or die (mysql_error());
$row3 = mysql_fetch_array($result3);
if ($row2['soort'] == 'Weekfilm')
{
$prijs = $row3['weekfilm'];
$aantaldagen = $row3['aantaldagenweek'];
}
elseif($row2['soort'] == 'Max Deal')
{
$prijs = $row3['maxdeal'];
$aantaldagen = $row3['aantaldagendeal'];
}
elseif($row2['soort'] == 'Max New')
{
$prijs = $row3['maxnew'];
$aantaldagen = $row3['aantaldagennew'];
}
else
{
$prijs = '-';
$aantaldagen = '-';
}
echo('<tr><td width="40%" align="left">'.$row2['naam'].'</td>
<td width="10%" align="left">'.$row2['genre'].'</td>
<td width="10%" align="left">'.number_format($prijs, 2, ',', '.').'</td>
<td width="10%" align="left">'.$aantaldagen.'</td></tr>');
if ($row2['soort'] == 'Weekfilm')
{
$aantalweekfilms = $aantalweekfilms + 1;
}
elseif ($row2['soort'] == 'Max Deal')
{
$aantaldealfilms = $aantaldealfilms + 1;
}
elseif ($row2['soort'] == 'Max New')
{
$aantalnewfilms = $aantalnewfilms + 1;
}
if ($aantalweekfilms%5 == 0)
{
$kortingweekfilms = $kortingweekfilms + $row3['weekfilm'];
}
if ($aantaldealfilms%5 == 0)
{
$kortingdealfilms = $kortingdealfilms + $row3['maxdeal'];
}
if ($aantalnewfilms%5 == 0)
{
$kortingnewfilms = $kortingnewfilms + $row3['maxnew'];
}
$totaalprijs += $prijs - $kortingweekfilms - $kortingdealfilms - $kortingnewfilms;
}
?>
<?php { $query2 = "SELECT naam,genre,soort FROM films WHERE id=".$row1['filmID']; $query3 = "SELECT * FROM prijzen WHERE id=1"; if ($row2['soort'] == 'Weekfilm') { $prijs = $row3['weekfilm']; $aantaldagen = $row3['aantaldagenweek']; } elseif($row2['soort'] == 'Max Deal') { $prijs = $row3['maxdeal']; $aantaldagen = $row3['aantaldagendeal']; } elseif($row2['soort'] == 'Max New') { $prijs = $row3['maxnew']; $aantaldagen = $row3['aantaldagennew']; } else { $prijs = '-'; $aantaldagen = '-'; } echo('<tr><td width="40%" align="left">'.$row2['naam'].'</td> <td width="10%" align="left">'.$row2['genre'].'</td> <td width="10%" align="left">'.number_format($prijs, 2, ',', '.').'</td> <td width="10%" align="left">'.$aantaldagen.'</td></tr>'); if ($row2['soort'] == 'Weekfilm') { $aantalweekfilms = $aantalweekfilms + 1; } elseif ($row2['soort'] == 'Max Deal') { $aantaldealfilms = $aantaldealfilms + 1; } elseif ($row2['soort'] == 'Max New') { $aantalnewfilms = $aantalnewfilms + 1; } if ($aantalweekfilms%5 == 0) { $kortingweekfilms = $kortingweekfilms + $row3['weekfilm']; } if ($aantaldealfilms%5 == 0) { $kortingdealfilms = $kortingdealfilms + $row3['maxdeal']; } if ($aantalnewfilms%5 == 0) { $kortingnewfilms = $kortingnewfilms + $row3['maxnew']; } $totaalprijs += $prijs - $kortingweekfilms - $kortingdealfilms - $kortingnewfilms; } ?>
EDIT: $row3['Weekfilm/Max Deal/Max New'] is de prijs van het soort artikel. ieder soort kost namelijk hetzelfde.
EDIT2: ik kwam net op het idee om de variabelen korting af te drukken, en ik ben erachter gekomen dat de korting voor de weekfilms wel goed werkt, maar er ligt 1 deal in, en geen new.
Maar allebei die variabelen bevatten wel een (behoorlijk) kortingsbedrag.
ik snap het niet meer
EDIT3: ik heb de variabelen geechoëd die het aantal films bijhouden, en die kloppen ook, en worden op het juiste moment opgeteld e.d. daar ligt het dus ook niet aan.
wel heb ik het min bedrag al wat omlaag gekregen door de kortingen niet in de while loop van het totaalbedrag af te trekken, maar dit erbuiten te doen.
LAATSTE EDIT: ik heb het nu zelf opgelost door heel veel te proberen en te doen. dit is de uiteindelijke code geworden.
<?php
while ($row1 = mysql_fetch_array($result1))
{
$query2 = "SELECT naam,genre,soort FROM films WHERE id=".$row1['filmID'];
$result2 = mysql_query($query2) or die (mysql_error());
$row2 = mysql_fetch_array($result2);
$query3 = "SELECT * FROM prijzen WHERE id=1";
$result3 = mysql_query($query3) or die (mysql_error());
$row3 = mysql_fetch_array($result3);
if ($row2['soort'] == 'Weekfilm')
{
$prijs = $row3['weekfilm'];
$aantaldagen = $row3['aantaldagenweek'];
}
elseif($row2['soort'] == 'Max Deal')
{
$prijs = $row3['maxdeal'];
$aantaldagen = $row3['aantaldagendeal'];
}
elseif($row2['soort'] == 'Max New')
{
$prijs = $row3['maxnew'];
$aantaldagen = $row3['aantaldagennew'];
}
else
{
$prijs = '-';
$aantaldagen = '-';
}
echo('<tr><td width="40%" align="left">'.$row2['naam'].'</td>
<td width="10%" align="left">'.$row2['genre'].'</td>
<td width="10%" align="left">'.number_format($prijs, 2, ',', '.').'</td>
<td width="10%" align="left">'.$aantaldagen.'</td></tr>');
if ($row2['soort'] == 'Weekfilm')
{
$aantalweekfilms = $aantalweekfilms + 1;
}
elseif ($row2['soort'] == 'Max Deal')
{
$aantaldealfilms = $aantaldealfilms + 1;
}
elseif ($row2['soort'] == 'Max New')
{
$aantalnewfilms = $aantalnewfilms + 1;
}
$totaalprijs += $prijs;
}
if ($aantalweekfilms == '')
{
$aantalweekfilms = 0;
}
if ($aantaldealfilms == '')
{
$aantaldealfilms = 0;
}
if ($aantalnewfilms == '')
{
$aantalnewfilms = 0;
}
if ($aantalweekfilms != 0)
{
if ($aantalweekfilms%5 == 0)
{
$kortingweekfilms = $kortingweekfilms + $row3['weekfilm'];
}
}
if ($aantaldealfilms != 0)
{
if ($aantaldealfilms%5 == 0)
{
$kortingdealfilms = $kortingdealfilms + $row3['maxdeal'];
}
}
if ($aantalnewfilms != 0)
{
if ($aantalnewfilms%5 == 0)
{
$kortingnewfilms = $kortingnewfilms + $row3['maxnew'];
}
}
$totaalprijs = $totaalprijs - $kortingweekfilms - $kortingdealfilms - $kortingnewfilms;
echo('<tr><td colspan="4"> </td></tr>');
echo('<tr><td><b>Aantal Films: '.mysql_num_rows($result1).'</b></td></tr>');
echo('<tr><td><b>Totaalprijs: € '.number_format($totaalprijs, 2, ',', '.').'</b></td></tr>');
echo('</table>');
?>
<?php { $query2 = "SELECT naam,genre,soort FROM films WHERE id=".$row1['filmID']; $query3 = "SELECT * FROM prijzen WHERE id=1"; if ($row2['soort'] == 'Weekfilm') { $prijs = $row3['weekfilm']; $aantaldagen = $row3['aantaldagenweek']; } elseif($row2['soort'] == 'Max Deal') { $prijs = $row3['maxdeal']; $aantaldagen = $row3['aantaldagendeal']; } elseif($row2['soort'] == 'Max New') { $prijs = $row3['maxnew']; $aantaldagen = $row3['aantaldagennew']; } else { $prijs = '-'; $aantaldagen = '-'; } echo('<tr><td width="40%" align="left">'.$row2['naam'].'</td> <td width="10%" align="left">'.$row2['genre'].'</td> <td width="10%" align="left">'.number_format($prijs, 2, ',', '.').'</td> <td width="10%" align="left">'.$aantaldagen.'</td></tr>'); if ($row2['soort'] == 'Weekfilm') { $aantalweekfilms = $aantalweekfilms + 1; } elseif ($row2['soort'] == 'Max Deal') { $aantaldealfilms = $aantaldealfilms + 1; } elseif ($row2['soort'] == 'Max New') { $aantalnewfilms = $aantalnewfilms + 1; } $totaalprijs += $prijs; } if ($aantalweekfilms == '') { $aantalweekfilms = 0; } if ($aantaldealfilms == '') { $aantaldealfilms = 0; } if ($aantalnewfilms == '') { $aantalnewfilms = 0; } if ($aantalweekfilms != 0) { if ($aantalweekfilms%5 == 0) { $kortingweekfilms = $kortingweekfilms + $row3['weekfilm']; } } if ($aantaldealfilms != 0) { if ($aantaldealfilms%5 == 0) { $kortingdealfilms = $kortingdealfilms + $row3['maxdeal']; } } if ($aantalnewfilms != 0) { if ($aantalnewfilms%5 == 0) { $kortingnewfilms = $kortingnewfilms + $row3['maxnew']; } } $totaalprijs = $totaalprijs - $kortingweekfilms - $kortingdealfilms - $kortingnewfilms; echo('<tr><td colspan="4"> </td></tr>'); echo('<tr><td><b>Totaalprijs: € '.number_format($totaalprijs, 2, ',', '.').'</b></td></tr>'); ?>
|