Beste mensen
Mijn vorig probleem is opgelost
Maar nu dit
Je stopt mooi de spullen in je winkelmandje en geeft de aantal stuks aan
de prijzen kloppen tussen je winkelmandje en afrekenen.
Maar de korting verschilt bij afrekenen krijg je minder korting
De korting komt uit de database wordt opgeslagen als double
staat nu ingesteld op 5 (%)
Kan iemand ook even kijken naar de korting berekening
Script van het winkelmandje
Het script van betalenPHP Code:
<?
error_reporting(e_all);
include("common.php");
require_once("templates/hoofdtemplate.php");
if ($_POST[a]) $a=$_POST[a];
else $a=$_GET[a];
switch ($a){
case "add":
AddItem($_GET["item"],1);
$totalCost = ShowCart();
// print $totalCost;
break;
case "update":
$myqty = $_REQUEST['qty'];
while(list($k,$v) = each($_REQUEST[ids])){
$qty = $myqty[$k];
if( $qty == 0 ){
RemoveItem($v);
}else{
UpdateItem($v, $qty);
}
}
$totalCost = ShowCart();
break;
case "remove":
RemoveItem($_GET["item"]);
$totalCost = ShowCart();
break;
default:
$totalCost = ShowCart();
break;
}
require_once("templates/voetnoot.php");
function AddItem($item,$qty=1){
//get the product info
$q1 = "select * from items where ItemID = '$item' ";
$r1 = mysql_query($q1) or die(mysql_error());
$a1 = mysql_fetch_array($r1);
//add to cart
$chk = mysql_query("SELECT * FROM cart WHERE OrderID='".GetCartId()."' AND ItemID='$a1[ItemID]'");
if( mysql_num_rows($chk) > 0 ){
UpdateItem($item,2);
}else{
$q2 = "insert into cart set
OrderID = '".GetCartId()."',
ItemID = '$a1[ItemID]',
ItemPrice = '$a1[ItemPrice]',
ItemQty = '$qty',
ItemTotal = '$a1[ItemPrice]' ";
mysql_query($q2) or die(mysql_error());
}
}
function UpdateItem($item,$qty){
//get the product info
$q1 = "select * from items where ItemID = '$item' ";
$r1 = mysql_query($q1) or die(mysql_error());
$a1 = mysql_fetch_array($r1);
//add to cart
$q2 = "UPDATE cart SET ItemQty = '$qty' WHERE OrderID = '".GetCartId()."' AND ItemID = '$a1[ItemID]'";
mysql_query($q2) or die(mysql_error());
}
function RemoveItem($item){
mysql_query("DELETE FROM cart WHERE OrderID= '" . GetCartId() . "' and ItemID = '$item'");
}
function ShowCart(){
//krijg korting
$discount = "select discount FROM korting";
$disc = mysql_query($discount) or die(mysql_error());
//get the cart content
$q1 = "select * from cart, items where cart.OrderID = '".GetCartId()."' and cart.ItemID = items.ItemID order by items.ItemName";
$r1 = mysql_query($q1) or die(mysql_error());
if(mysql_num_rows($r1) == '0'){
include_once("templates/niets-in-winkelmandje.php");
}else{
$col = "white";
while($a1 = mysql_fetch_array($r1)){
if($col == "white"){
$col = "dddddd";
}else{
$col = "white";
}
$a1['ItemTotal'] = ( $a1['ItemPrice'] * $a1['ItemQty'] );
$rows .= "<tr bgcolor=\"$col\">\n\t<td class=BlackLink>$a1[ItemName]</td>\n<td align=right>€ $a1[ItemPrice]</td>\t\n\t<td align=center>\n\t\t<input type=text size=2 class=\"vullen\" name=\"qty[]\" maxlength=\"2\" value=\"$a1[ItemQty]\">\n\t\t<input type=hidden name=\"ids[]\" value=\"$a1[ItemID]\">\n\t</td>\n\t<td align=right>€ $a1[ItemTotal]</td>\n</tr>\n\n";
$order += $a1['ItemPrice'] * $a1['ItemQty'];
$showdiscount = ($order * $disc) / 100;
$order_total = $order - $showdiscount;
}
$order_total = number_format($order_total, 2, ".", ",");
include_once("templates/bekijk-mandje.php");
}
}
?>
PHP Code:
<?php
error_reporting(E_ALL);
include("common.php");
require_once 'Mollie/Wallie.php';
require('Mollie/class.micropayment-mollie.php');
$regel;
$m = new micropayment();
$molliePartnerID = 184351; // Fill in your own Mollie Partner ID!
$m->setPartnerID($molliePartnerID);
$wallie = new Mollie_Wallie($molliePartnerID);
$error = "";
$my_sFirstName = "";
$my_sLastName = "";
$my_clientEmail ="";
$my_clientIp ="";
$q1 = "select * from cart, items where cart.OrderID = '".GetCartId()."' and cart.ItemID = items.ItemID order by items.ItemName";
$r1 = mysql_query($q1) or die(mysql_error());
$col = "white";
$rows = "";
$order_total = 0;
$order = 0;
$discount = "select discount FROM korting";
$disc = mysql_query($discount) or die(mysql_error());
while($a1 = mysql_fetch_array($r1)){
if($col == "white"){
$col = "dddddd";
}else{
$col = "white";
}
$a1['ItemTotal'] = ( $a1['ItemPrice'] * $a1['ItemQty'] );
$rows .= "<tr bgcolor=\"$col\">\n\t<td class=BlackLink>".$a1['ItemName']."</td>\n<td align=right>$aset[currency_sign] $a1[ItemPrice]</td>\t\n\t<td align=center>$a1[ItemQty]</td>\n\t<td align=right>$aset[currency_sign] $a1[ItemTotal]</td>\n</tr>\n\n";
$order += $a1['ItemPrice'] * $a1['ItemQty'];
$showdiscount = ($order * $disc) / 100;
$order_total = $order - $showdiscount;
}
$order_total = number_format($order_total, 2, ".", ",");
if(isset($_POST['submit_out']) || isset($_POST['submit_out_x'])){
$my_sFirstName = strip_trim($_POST['sFirstName']);
$my_sLastName = strip_trim($_POST['sLastName']);
$my_clientEmail = strip_trim($_POST['clientEmail']);
$my_clientIp = $_SERVER['REMOTE_ADDR'];
if(empty($my_sFirstName)){
$error = "<span class=RedLink>Gelieve je voornaam in te geven</span>";
}elseif(empty($my_sLastName)){
$error = "<span class=RedLink>Gelieve je naam in te geven</span>";
}elseif(empty($my_clientEmail) || !ereg("@", $my_clientEmail)){
$error = "<span class=RedLink>Gelieve je e-mail adres in te geven</span>";
}
if(empty($error)){
$q1 = "insert into orders_info set
FirstName = '$my_sFirstName',
LastName = '$my_sLastName',
email = '$my_clientEmail',
ip = '$my_clientIp',
order_date = '$t',
order_total = '$order_total' ";
mysql_query($q1) or die(mysql_error());
$order_id = mysql_insert_id();
$q2 = "update cart set OrderID = '$order_id' where OrderID = '".GetCartId()."' ";
mysql_query($q2) or die(mysql_error());
$check = "select * from newsletter where nEmail = '$my_clientEmail'";
$result = mysql_query($check);
if(mysql_num_rows($result) == 0 ) {
$q3 = "insert into newsletter set
nEmail = '$my_clientEmail' ";
mysql_query($q3);
}
$payment_option = $_POST['payment_option'];
if($payment_option == '2') {
//redirect to paypal
header("location:https://www.paypal.com/xclick?business=$aset[PayPalEmail]&item_name=OrderID $order_id&first_name=$my_sFirstName&last_name=$my_sLastName&email=$my_clientEmail&item_number=1&custom=$order_id&amount=$order_total¤cy_code=$aset[currency_id]¬ify_url=$site_url/download_link.php&return=$site_url/bedankt.php");
exit();
} elseif($payment_option == '3') {
$prijs = $order_total;
$amount = str_replace(".", "", $prijs);
$siteReportUrl = $site_url/aankopen.php;
$siteReturnUrl = $site_url/bedankt.php;
if ($wallie->createPayment($amount, $siteReportUrl, $siteReturnUrl)) {
// Payment created, You could(/should) save the payment information in your database
// Get the url of the chosen bank to redirect the user to,
// to complete the payment
header('location: ' . $wallie->getWallieUrl());
}
else {
// show message that the payment could not be created
// the function $wallie->getStatus() returns the status
// message that Mollie returns
echo $wallie->getStatus();
}
if (isset($_GET['payment_type']) and $_GET['payment_type'] == 'wallie' and isset($_GET['transaction_id']) and isset($_GET['amount'])) {
// Check if payment is OK.
$checkPayment = $wallie->checkPayment($_GET['transaction_id'], $_GET['amount']);
// Mollie makes sure a transaction can only
// be used one time!
if ($checkPayment == true) {
// Get the amount of money the user has payed
$paymentAmount = $wallie->getAmount();
header('location: ' . $site_url/download_link.php);
// Set in your database the paymentstatus to OK.
}
}
}elseif($payment_option == '4'){
?>
<form action="bellen_pay.php" method="post" name="myForm">
<input type="hidden" name="order_total" value="<? echo $order_total; ?>" />
<input type="submit" value="Ga door naar betaalpagina" />
</form>
<script type='text/javascript'>document.myForm.submit();</script>
<?
}
}
}
require_once("templates/hoofdtemplate.php");
include_once("templates/afrekenen.php");
include_once("templates/voetnoot.php");
?>
- php foutjes (2)
-
11-11-2010, 20:06 #1
- Berichten
- 1.025
- Lid sinds
- 14 Jaar
php foutjes (2)
-
-
11-11-2010, 20:53 #2
- Berichten
- 433
- Lid sinds
- 17 Jaar
Re: php foutjes (2)
Om het over de netheid van het script niet te hebben, want dat ziet er eigenlijk niet uit.
Na een snelle blik, heb het niet bestudeerd, is volgens mij het volgende het probleem, of gaat in ieder geval niet zoals het hoort.
Je haalt de query van de kortingstabel door mysql_query(); heen, tot zover alles goed.
Echter je gebruikt de result set direct in je berekeningen, dat is niet de bedoeling, en als het al werkt, werkt het alleen bij 1 aanwezig record.
Je moet je resultaat eerst door een functie zoals mysql_fetch_assoc(); halen, of mysql_result(); en daarna kun je er daadwerkelijk wat mee doen.
Wel vreemd dat het in het winkelwagentje wel werkt, en bij het afrekenen niet, maar dat heeft misschien te maken met een conflict in het desbetreffende script met een paar andere variabelen wellicht.
-
11-11-2010, 22:01 #3
- Berichten
- 91
- Lid sinds
- 18 Jaar
Re: php foutjes (2)
Bij het betaling script zet je alles eerst op 0 voor dat je de prijs gaat berekenen.
$rows = "";
$order_total = 0;
$order = 0;
Voor de rest kan ik niet veel verschil vinden.
-
11-11-2010, 22:09 #4gast33304 Guest
Re: php foutjes (2)
Je slaat het resultaat van je MySQL query op in $disc. Dit wordt dan een resource. Je hebt nu nog niet de korting te pakken in die variabele.
Wat je bij zowel het afrekenen als de prijsweergave in je winkelwagentje nog moet toevoegen is (wat stefanvi al zei) iets waarmee je de waarde uit de kolom discount in je variable $disc stopt, bijv het volgende:
$disc = mysql_result($disc,'discount');
Verder zou het fijn zijn, voor ons en voor jezelf, als je je script wat beter leesbaar maakt. ;-)
-
11-11-2010, 23:04 #5
- Berichten
- 1.025
- Lid sinds
- 14 Jaar
Re: php foutjes (2)
Mensen bedankt
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic