[PHP] Else probleem, weergeeft niet eerst formulier, maar verstuurd gegevens eerst

Status
Niet open voor verdere reacties.

Rockybag

Gebruiker
Lid geworden
12 apr 2008
Berichten
27
Beste,

Ik ben bezig met een webshop script en wanneer iemand op de "winkelwagen" pagina op afrekenen klikt, dan stuurt ie (zoals het hoort) hem door naar de afreken pagina, maar ik zie dan gelijk de melding: Gegevens verstuurd!. Eigenlijk moet er eerst een formulier verschijnen en dat dan de gegevens pas verstuurd worden.

Het vreemde is dat wanneer ik de melding krijg van: "Gegevens verstuurd" en daarna weer op f5 klik, dat dan wel het formulier verschijnt.

Graag vraag ik uw hulp

Groeten

Het desbetreffende script:
PHP:
<?php

session_start();
include "includes/connect.php";

			$sql = "SELECT * FROM producten WHERE id_product IN (";
				foreach ($_SESSION['cart'] as $id => $value){
					$sql .= $id . ",";
				}
				$sql = substr($sql,0,-1).") ORDER BY id_product ASC";
				$query = mysql_query($sql);
				$total_price = 0;
				if(!empty($query)){
				while ($row = mysql_fetch_array($query)){
					$subtotal = $_SESSION['cart'][$row['id_product']]['quantity']*$row['prijs'];
					$total_price += $subtotal;
	
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST)) 
  { 
	
$naam = $_POST['naam'];
$hoeveelheid = $_SESSION['cart'][$row['id_product']]['quantity'];
$total_price = $_SESSION['cart'][$row['id_product']]['quantity']*$row['prijs'];


mysql_query("INSERT INTO bestellingen (naam,hoeveelheid,prijs) VALUES ('".mysql_real_escape_string($_POST['naam'])."','".mysql_real_escape_string($_POST['hoeveelheid'])."','".mysql_real_escape_string($_POST['total_price'])."') ") or die (mysql_error()); 
           
          echo 'Uw bestelling is geplaatst! Wij zullen uw inzending zo snel mogelijk in behandeling nemen.'; 
          
} else {
?>
         
                        Wanneer u <b> <?php echo $_SESSION['cart'][$row['id_product']]['quantity'];?> <?php echo $row['naam'];?></b></td>
                        t.w.v. <?php echo "€" . $row['prijs'];?> per stuk wilt kopen, dient u de volgende velden correct in te vullen.      
    	<form method="POST" action="<?=$_SERVER['PHP_SELF']?>">
        <input type="text" name="naam" value="<?php echo $row['naam'];?>" />
	<input type="text" name="hoeveelheid" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'];?>" />
	<input type="text" name="total_price" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['prijs'];?>" />
        <input type="submit" name="submit" value="Afrekenen"/>
        </form> 
<?php
  }
 }
}
    
?>
 
Je "if" controleert: of de pagina via POST is aangeroepen, en er POST data is.

Als je vorige pagina een formulier bevat, is dat waar en dus wordt de bestelling toegevoegd... het formulier wordt niet aangeroepen.

Als je eerst het formulier wil tonen en daarna pas de bestelling toevoegen moet je eerst controleren of er een formulier is ingestuurd en daarna of het dat formulier is, of die van de vorige pagina, en daarop baseren wat je toont.
 
Beste Frats,

Zou je me misschien willen helpen met dit probleem? Ik ben al 2 weken op zoek naar een oplossing hiervoor en aan je bericht te zien, weet jij wat ik fout doe. Ik heb die "vorige" pagina genaamd cart toegevoegd in me post. Hoop dat je me kunt helpen.

Groet,

cart.php
PHP:
<?php
include ("includes/connect.php");
	if(isset($_POST['submit'])){
		foreach($_POST as $key => $value){
			$key = explode("-",$key);
			$key = end($key);
			$key = explode("submit",$key);
			$key = end($key);
			
			if(isset($_POST['quantity-'.$key]) <= 0){
				unset($_SESSION['cart'][$key]);
			} else if($_POST['quantity-'.$key] >= 50){
				$_SESSION['cart'][$key]['quantity'] = 50;
			} else {
				$_SESSION['cart'][$key]['quantity'] = $value;
			}
		}
	} error_reporting(0);
?>
<h1>Bekijk winkelwagen</h1>
<a href="beveiligdepagina.php?page=products">Ga terug naar de producten pagina.</a><br />
<?php $sql = "SELECT * FROM producten WHERE id_product IN (";
				foreach ($_SESSION['cart'] as $id => $value){
					$sql .= $id . ",";
				}
				$sql = substr($sql,0,-1).") ORDER BY id_product ASC";
				$query = mysql_query($sql);
			if(empty($query)){
				echo "Je moet een product toevoegen om toegang te krijgen op deze pagina.<br /><br />";
			}
?>
<form method="post" action="#">
<fieldset>
	<table>
    	<tr>
        	<th>Naam</th>
            <th>Hoeveelheid</th>
            <th>Prijs per product</th>
            <th>Totaal prijs</th>
        </tr>
    	<?php 
		
			$sql = "SELECT * FROM producten WHERE id_product IN (";
				foreach ($_SESSION['cart'] as $id => $value){
					$sql .= $id . ",";
				}
				$sql = substr($sql,0,-1).") ORDER BY id_product ASC";
				$query = mysql_query($sql);
				$total_price = 0;
				if(!empty($query)){
				while ($row = mysql_fetch_array($query)){
					$subtotal = $_SESSION['cart'][$row['id_product']]['quantity']*$row['prijs'];
					$total_price += $subtotal;
					?>
                    	<tr>
                        	<td><?php echo $row['naam'];?></td>
                            <td><input type="text" name="quantity-<?php echo $row['id_product'];?>" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'];?>" style="width: 30px; height: 18px; margin-left: 17px;"/></td>
                            <td><?php echo "€" . $row['prijs'];?></td>
                            <td><?php echo"€" .  $_SESSION['cart'][$row['id_product']]['quantity']*$row['prijs'];?></td>
						</tr>
                     <?php
				} }
			?>
			<tr>
            	<td></td>
                <td></td>
                <td>Totaal prijs:</td>
                <td><?php echo"€" . $total_price;?></td>
             </tr>
          </table>
          <br />
          <input type="submit" name="submit" value="Update winkelwagen"/></fieldset>
       </form><br />
       <form method="POST" action="afrekenen.php">
       <input type="submit" name="submit" value="Afrekenen"/>
</form>
     <br />
       <p>Om een product te verwijderen, dient u de hoeveelheid op <strong>0</strong> te zetten.</p>

Op het einde roep ik de pagina "afrekenen.php" aan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan