Hulp gevraagd voor een externe functie van een shoppingcart

Status
Niet open voor verdere reacties.

klaasm4n

Gebruiker
Lid geworden
1 jan 2011
Berichten
64
Beste mensen,

Ik kan er niet uitkomen! Ik heb alles een paar keer gecontroleerd, maar weet echt niet wat ik verkeerd doe?

Ik heb twee php bestanden. De main en de include functie.

Main:
PHP:
<?php
include("bestellingfuncties.php")
?>
</hr>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<form name="orderform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Korting:<br />
<input type="checkbox" name="korting1" value="15">Student 15%</br />
<input type="checkbox" name="korting2" value="10">Senior 10%</br />
<input type="checkbox" name="korting3" value="5">Klant 5%</br />

<hr />
Betalingswijze:
<input type="radio" name="Betalingswijze" value="Paypal">Paypal
<input type="radio" name="Betalingswijze" value="Mastercard">Mastercard
<input type="radio" name="Betalingswijze" value="Visa">Visa
<hr />

<tr>
<td>
<img src="toshiba.jpg"  alt="Toshiba laptop" />
</td>
</tr>

<tr>
<td>
Toshiba Satellite A100-510   Basisprijs 999.99
</td>
</tr>

<tr>
<td><!--Shopping Cart Begin-->
<input type="hidden" name="product" value="001" />
<input type="hidden" name="merk" value="Toshiba" />
<input type="hidden" name="model" value="Satellite A100-510" />

Operating system: 
<select name="os" value="true">
<option value="xp">Windows xp</option>
<option value="vista">Windows Vista</option>
<option value="linux">Linux</option>
</select>

Aantal: 
<input type="text" size=2 maxlength=3 name="aantal" value="0" />
<input type="hidden" name="prijs" value="999.99" />

<input type="image" src="bestel.png" border=0 value="bestellen" />
</td>

<tr>
<td>
<img src="acer.jpg"  alt="Acer laptop" />
</td>
</tr>

<tr>
<td>
Acer Aspire 57357Z Basisprijs 529.99
</td>
</tr>

<td>
<input type="hidden" name="product" value="002" />
<input type="hidden" name="merk" value="Acer" />
<input type="hidden" name="model" value="Aspire 5735Z" />

Operating system: 
<select name="os" value="true">
<option value="xp">Windows xp</option>
<option value="vista">Windows Vista</option>
<option value="linux">Linux</option>
</select>

Aantal: 
<input type="text" size=2 maxlength=3 name="aantal" value="0" />
<input type="hidden" name="prijs" value="529.99" />
<input type="image" src="bestel.png" border=0 value="bestellen" />
<hr /></td>

<!--Shopping Cart End  -->
</tr>
</form>
</table>

<?php

echo "Korting is: " . ($_POST["korting1"] + $_POST["korting2"] + $_POST["korting3"]) . " procent" . "<br />";
if($_POST["aantal"] * $_POST["prijs"]>="5000")
{
echo "Kredietlimiet bereikt---Je bestelling mag maximaal 5000 euro’s bedragen " . $_POST["naam"];
}
else if($_POST["aantal"] * $_POST["prijs"]<"5000" && $_POST["aantal"] * $_POST["prijs"]>"0")
{
echo "Uw bestelling bedraagt " .$_POST["aantal"] * $_POST["prijs"];
}

switch($_POST['Betalingswijze'])
{
case "Paypal":
echo "<br />Uw betaling wordt behandeld via PayPal";
break;

case "Mastercard":
echo "<br />Uw betaling wordt behandeld via Mastercard";
break;

case "Visa":
echo "<br />Uw betaling wordt behandeld via Visa";
break;

default:
echo "<br />U moet een betalingswijze kiezen! <br />";
}


echo beschikbaarheid($_POST['merk'], $_POST['os']);

echo bestellingoverzicht()

?>

en functie:
PHP:
<?php
function beschikbaarheid($merk, $os)
{
// deze functie heeft twee input parameters
// $merk verwijzt naar de merk-hash-array
// $os verwijzt naar de os-hash-array
// deze functie geeft de beschikbaarheid van de laptop met os terug.


$beschikbaar = array
( 
"Toshiba" => array
(
"xp"=> "U heeft voor de operating system xp gekozen.", 
"vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
"linux" => "U heeft voor de operating system linux gekozen."
),
"Acer" => array
(
"xp"=> "U heeft voor de operating system xp gekozen.", 
"vista" =>"U heeft voor de operating system vista gekozen.", 
"linux" =>" U heeft voor de operating system linux gekozen."
),
"Hp" => array
("xp"=> "U heeft voor de operating system xp gekozen.", 
"vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
"linux" => "Deze laptop is niet beschikbaar met de linux operating system."
)
);

return($beschikbaar[$merk][$os]);
}

// 

function bestellingoverzicht()
{

$laptop["toshiba"] = "toshiba";
$laptop["acer"] = "acer";

$info[1] = "product";
$info[2] = "merk";
$info[3] = "model";
$info[4] = "os";
$info[5] = "aantal";
$info[6] = "prijs";

echo "<br /> 
<table width='80%' border='1' >
<caption>
<strong>Bestellingoverzicht</strong>
</caption>
<thead>
<tr><th>Product</th><th>Merk</th><th>Model</th><th>OS</th><th>Aantal</th><th>Basisprijs</th></tr>
</thead>
<tbody>";

foreach($laptop as $key => $value)
{
$aantal = $value. "aantal";
if($_POST[$aantal] == 0) continue;
$reij = "<tr>";
for($x=1; $x<=sizeof($info); $x++)
{
$element = $value . $info[$x];
$reij = $reij . "<td>" . $_POST[$element] ."</td>";
}
$reij = $reij . "</tr>";
echo $reij;
}
echo "</tbody></table>";
}
?>

De opdracht vraag was:
Stap 3: Open lab10.php en voeg een nieuwe laptop eraan toe zodat er een overzicht in een tabelformaat wordt.

Het is de bedoeling dat echt gebruik moet worden gemaakt van de foreach lus en het zou er zo uit moeten komen zien:

2qmkhef.jpg


Ik hoop dat iemand mij kan helpen!
 
Wat gaat er precies mis? Dat helpt vaak een heleboel bij het zoeken naar problemen.
 
Wat gaat er precies mis? Dat helpt vaak een heleboel bij het zoeken naar problemen.

It doesn't work.. haha:p

Als ik dus eigenlijk iets bestel, dan zou het tevoorschijn moeten komen zoals op het plaatje. Ik heb hiervoor een opdracht gemaakt, waar het wel werkte. Ik heb nu een nieuwe laptop toegevoegd en de foreach funtie en nu werkt het niet meer..
 
Wat ik in elk geval zie is dat je gebruik maakt van $_POST['aantal'] maar die wordt gebruikt door twee verschillende input fields en dat kan niet, je zult een van de twee een andere naam moeten geven.

En je code er op aan moeten passen zodat er gebruik gemaakt wordt van het juiste aantal bij elke laptop.

Een tip; je kunt ook arrays gebruiken in HTML input fields, bijv op deze manier is het misschien makkelijker:

<input type="aantal['toshiba']" />
<input type="aantal['acer']" />
 
Wat ik in elk geval zie is dat je gebruik maakt van $_POST['aantal'] maar die wordt gebruikt door twee verschillende input fields en dat kan niet, je zult een van de twee een andere naam moeten geven.

En je code er op aan moeten passen zodat er gebruik gemaakt wordt van het juiste aantal bij elke laptop.

Een tip; je kunt ook arrays gebruiken in HTML input fields, bijv op deze manier is het misschien makkelijker:

<input type="aantal['toshiba']" />
<input type="aantal['acer']" />
Frats, als het geen moeite is? Zou je het even voor me willen wijzigen? Ik kom er echt niet uit.. :(
 
Kan iemand anders het voor mij wijzigen hoe het wel zal werken.. ik zit er echt mee :(
 
Ik ga niet je huiswerk voor je maken, dat is niet de bedoeling ;) Je zult er zelf even mee moeten gaan spelen en dan kom je er vanzelf wel uit.
 
Ik ga niet je huiswerk voor je maken, dat is niet de bedoeling ;) Je zult er zelf even mee moeten gaan spelen en dan kom je er vanzelf wel uit.

Dat vraag ik ook niet.. kun je me anders een begin of een hint geven wat ik fout heb of moet wijzigen? Ik heb namelijk uren (letterlijk) zitten testen met alles en nog wat en KOM ER ECHT NIET UIT! HANDEN ZITTEN IN MIJN HAREN.. haha STRESSSS!
 
ik heb je code wat aangepast bekijk eens de resultaten maar vooral wat er gewijzigt is om eruit te leren er kunnen nog wat foutjes inzitten maar die haal je er wel uit


PHP:
<?
$translations['nl']['Paypal']="Uw betaling wordt behandeld via PayPal";
$translations['nl']['Mastercard']="Uw betaling wordt behandeld via Mastercard";
$translations['nl']['Visa']="Uw betaling wordt behandeld via Visa";
$translations['nl']['paymentnotexist']="U moet een betalingswijze kiezen! ";
$lang="nl";
$translation= $translations[$lang];
$payments = array('Paypal', 'Mastercard', 'Visa');
$products['Toshiba A100-510']['code']="001";
$products['Toshiba A100-510']['availebleos']=array('xp','vista','linux');
$products['Toshiba A100-510']['img']='toshiba.jpg';
$products['Toshiba A100-510']['price']='999.99';
$products['Toshiba A100-510']['name']='Toshiba A100-510';
$products['Toshiba A100-510']['merk']='Toshiba ';
$products['Acer Aspire 57357Z']['code']="002";
$products['Acer Aspire 57357Z']['availebleos']=array('xp','vista','linux');
$products['Acer Aspire 57357Z']['img']='acer.jpg';
$products['Acer Aspire 57357Z']['price']='529.99';
$products['Acer Aspire 57357Z']['name']='Aspire 5735Z';
$products['Acer Aspire 57357Z']['merk']='Acer ';
?>
</hr>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
    <form name="orderform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Korting:<br />
    <input type="checkbox" name="korting1" value="15">Student 15%</br />
    <input type="checkbox" name="korting2" value="10">Senior 10%</br />
    <input type="checkbox" name="korting3" value="5">Klant 5%</br /> 
    <hr />
    Betalingswijze:
        <? 
        foreach($payments as $option){print '<input type="radio" name="Betalingswijze" value="'.$option.'">';}  
        foreach($products as $product){
            print'<tr><td><img src="'.$product["img"].'"  alt="Toshiba laptop" /></td></tr>"';
            print'<tr><td>'.$product["name"]."   ".$product["price"].'></td></tr>"';
            print'<tr><td>';
            print'<input type="hidden" name="product" value="'.$product["code"].'" />';
            print'<input type="hidden" name="product" value="'.$product["merk"].'" />';
            print'Operating system:  <select name="os" >';
            foreach($product['availebleos'] as $os){
               print'<option value="'.$os.'">'.$os.'</option>';        
            }
            print' </select>';
            print'Aantal: <input type="text" size="2" maxlength="3" name="aantal" value="0" />
                        <input type="hidden" name="prijs" value="'.$product['price'].'" />
                <input type="image" src="bestel.png" border="0" value="bestellen" /></td><tr>';
        }
        ?>
</form>
</table>
 <?php
echo "Korting is: ".($_POST["korting1"]+$_POST["korting2"]+$_POST["korting3"])." procent". "<br />";

if($_POST["aantal"] * $_POST["prijs"]>="5000"){
    echo "Kredietlimiet bereikt---Je bestelling mag maximaal 5000 euro’s bedragen " . $_POST["naam"];
}else if($_POST["aantal"] * $_POST["prijs"]<"5000" && $_POST["aantal"] * $_POST["prijs"]>"0"){
    echo "Uw bestelling bedraagt " .$_POST["aantal"] * $_POST["prijs"];
}

if (in_array($_POST['Betalingswijze'],$payments)){
    echo $translations[$_POST['Betalingswijze']];
} else{
    echo $translation['paymentnotexist'];    
}
echo beschikbaarheid($_POST['merk'], $_POST['os']);
echo bestellingoverzicht();
function beschikbaarheid($merk, $os){
    // deze functie heeft twee input parameters
    // $merk verwijzt naar de merk-hash-array
    // $os verwijzt naar de os-hash-array
    // deze functie geeft de beschikbaarheid van de laptop met os terug.
    $beschikbaar = array
        ("Toshiba" => array(
            "xp"=> "U heeft voor de operating system xp gekozen.", 
            "vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
            "linux" => "U heeft voor de operating system linux gekozen."
        ),"Acer" => array(
            "xp"=> "U heeft voor de operating system xp gekozen.", 
            "vista" =>"U heeft voor de operating system vista gekozen.", 
            "linux" =>" U heeft voor de operating system linux gekozen."
        ),"Hp" => array(
            "xp"=> "U heeft voor de operating system xp gekozen.", 
            "vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
            "linux" => "Deze laptop is niet beschikbaar met de linux operating system."
        )
    );       
    return($beschikbaar[$merk][$os]);
}
function bestellingoverzicht(){
    $laptop["toshiba"] = "toshiba";
    $laptop["acer"] = "acer";     
    $info = array(1 => "product","merk","model","os", "aantal","prijs");
    ?>
    <br /> 
    <table width='80%' border='1' >
        <caption>    <strong>Bestellingoverzicht</strong>    </caption>
    <thead>         
        <tr>
            <th>Product</th>
            <th>Merk</th>
            <th>Model</th>
            <th>OS</th>
            <th>Aantal</th>
            <th>Basisprijs</th>
        </tr>
    </thead>
    <tbody>
    <?
    foreach($laptop as $key => $value){
        $aantal = $value. "aantal";
        if($_POST[$aantal] == 0) continue;
        $reij = "<tr>";
        for($x=1; $x<=sizeof($info); $x++){
            $element = $value . $info[$x];
            $reij = $reij . "<td>" . $_POST[$element] ."</td>";
        }
        $reij = $reij . "</tr>";
        echo $reij;
    }
    echo "</tbody></table>";
}
?>
 
@kenikavanbis, WAT AARDIG! HARTSTIKKE BEDANKT! Ja, ik ben eerlijk als ik zeg dat ik beter leer door voorbeelden dan dat ik het zelf moet uitpluizen. Ik ga ook echt elke character na om te begrijpen hoe het zit en soms test ik het op verschillende manieren.

Alleen ik krijg nu wel een melding:

Parse error: syntax error, unexpected $end in ................................. on line 122
 
heb je laatste ?> meegecoppyeert


je gebruikt beter isset($_GET['content']) in plaats van == 0
Ik zie nog 25 tal warnings maar geen errors
 
heb je laatste ?> meegecoppyeert


je gebruikt beter isset($_GET['content']) in plaats van == 0
Ik zie nog 25 tal warnings maar geen errors

Ja! Ik heb alles letterlijk gekopieert, alsnog wil het niet werken! Hartstikke bedankt voor het schrijven voor me (ook al werkt het nu nog even niet). Kan niet geloven dat je de tijd voor hebt genomen om me te helpen! Echt, hartstikke bedankt!

Ik heb het nu overgenomen, en krijg nog steeds de foutmelding..

en in principe (zoals ik de code heb gemaakt) moet ik me aan die richtlijnen houden. Dus kan voor nu niet iets wijzigen om het efficienter te maken of dergelijke..

Ik zie graag van u wat ik moet wijzigen om het te laten werken.. of zal ik anders even de code die ik heb nu even plaatsen, want dan kun je ook zien wat ik verkeerd doe of moet wijzigen? In principe met de for lus en één laptop werkte het. Enige wat ik heb gedaan is een extra laptop toegevoegd én de foreach..
 
mijn fout ik draaide nog op een oude versie die <? toelaat nu vanaf 4.2 is enkel <?php dacht ik
maar dit is het geworden

PHP:
<?php
$translations['nl']['Paypal']="Uw betaling wordt behandeld via PayPal";
$translations['nl']['Mastercard']="Uw betaling wordt behandeld via Mastercard";
$translations['nl']['Visa']="Uw betaling wordt behandeld via Visa";
$translations['nl']['paymentnotexist']="U moet een betalingswijze kiezen! ";
$lang="nl";
$translation= $translations[$lang];
$payments = array('Paypal', 'Mastercard', 'Visa');
$products['Toshiba A100-510']['code']="001";
$products['Toshiba A100-510']['availebleos']=array('xp','vista','linux');
$products['Toshiba A100-510']['img']='toshiba.jpg';
$products['Toshiba A100-510']['price']='999.99';
$products['Toshiba A100-510']['name']='Toshiba A100-510';
$products['Toshiba A100-510']['merk']='Toshiba ';
$products['Acer Aspire 57357Z']['code']="002";
$products['Acer Aspire 57357Z']['availebleos']=array('xp','vista','linux');
$products['Acer Aspire 57357Z']['img']='acer.jpg';
$products['Acer Aspire 57357Z']['price']='529.99';
$products['Acer Aspire 57357Z']['name']='Aspire 5735Z';
$products['Acer Aspire 57357Z']['merk']='Acer ';

print_r($_POST);
?>

</hr>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
    <form name="orderform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Korting:<br />
    <input type="checkbox" name="korting1" value="15">Student 15%</br />
    <input type="checkbox" name="korting2" value="10">Senior 10%</br />
    <input type="checkbox" name="korting3" value="5">Klant 5%</br /> 
    <hr />
    Betalingswijze:
        <?php 
        foreach($payments as $option){print '<input type="radio" name="Betalingswijze" value="'.$option.'">'.$option;
        }  
        foreach($products as $product){
            print'<tr><td><img src="'.$product["img"].'"  alt="Toshiba laptop" /></td></tr>';
            print'<tr><td>'.$product["name"]."   ".$product["price"].'></td></tr>';
            print'<tr><td>';
            $key = 'bestelling['.$product["code"].']';
            print'<input type="hidden" name="'.$key.'[product]" value="'.$product["code"].'" />';
            print'<input type="hidden" name="'.$key.'[merk]" value="'.$product["merk"].'" />';
            print'<input type="hidden" name="'.$key.'[model]" value="'.$product["name"].'" />';
            print'Operating system:  <select name="'.$key.'[os]" >';
            foreach($product['availebleos'] as $os){
               print'<option value="'.$os.'">'.$os.'</option>';        
            }
            print' </select>';
            print'Aantal: <input type="text" size="2" maxlength="3" name="'.$key.'[aantal]" value="0" />
                        <input type="hidden" name="'.$key.'[prijs]" value="'.$product['price'].'" />
                <input type="image" src="bestel.png" border="0" value="bestellen" /></td><tr>';
        }
        ?>
</form>
</table>
 <?php
echo "Korting is: ".($_POST["korting1"]+$_POST["korting2"]+$_POST["korting3"])." procent". "<br />";
 
if($_POST["aantal"] * $_POST["prijs"]>="5000"){
    echo "Kredietlimiet bereikt---Je bestelling mag maximaal 5000 euro’s bedragen " . $_POST["naam"];
}else if($_POST["aantal"] * $_POST["prijs"]<"5000" && $_POST["aantal"] * $_POST["prijs"]>"0"){
    echo "Uw bestelling bedraagt " .$_POST["aantal"] * $_POST["prijs"];
}
 
if (in_array($_POST['Betalingswijze'],$payments)){
    echo $translations[$_POST['Betalingswijze']];
} else{
    echo $translation['paymentnotexist'];    
}
echo beschikbaarheid($_POST['merk'], $_POST['os']);
if(isset($_POST) && isset( $_POST["bestelling"])) {
    echo bestellingoverzicht($_POST["bestelling"]);
}
function beschikbaarheid($merk, $os){
    // deze functie heeft twee input parameters
    // $merk verwijzt naar de merk-hash-array
    // $os verwijzt naar de os-hash-array
    // deze functie geeft de beschikbaarheid van de laptop met os terug.
    $beschikbaar = array
        ("Toshiba" => array(
            "xp"=> "U heeft voor de operating system xp gekozen.", 
            "vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
            "linux" => "U heeft voor de operating system linux gekozen."
        ),"Acer" => array(
            "xp"=> "U heeft voor de operating system xp gekozen.", 
            "vista" =>"U heeft voor de operating system vista gekozen.", 
            "linux" =>" U heeft voor de operating system linux gekozen."
        ),"Hp" => array(
            "xp"=> "U heeft voor de operating system xp gekozen.", 
            "vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
            "linux" => "Deze laptop is niet beschikbaar met de linux operating system."
        )
    );       
    return($beschikbaar[$merk][$os]);
}
function bestellingoverzicht($producten){
    $laptop["toshiba"] = "toshiba";
    $laptop["acer"] = "acer";
        
    $info = array(1 => "product","merk","model","os", "aantal","prijs");
    ?>
    <br /> 
    <table width='80%' border='1' >
        <caption>    <strong>Bestellingoverzicht</strong>    </caption>
    <thead>         
        <tr>
            <th>Product</th>
            <th>Merk</th>
            <th>Model</th>
            <th>OS</th>
            <th>Aantal</th>
            <th>Basisprijs</th>
        </tr>
    </thead>
    <tbody>
    <?php
    foreach($producten as $key => $value){
        if($value['aantal'] == 0) continue;
        print "<tr>";
        for($x=1; $x<=sizeof($info); $x++){
           print "<td>".$value[$info[$x]]."</td>";
        }
        print "</tr>";
    }
    echo "</tbody></table>";
}

?>
 
Laatst bewerkt:
mijn fout ik draaide nog op een oude versie die <? toelaat nu vanaf 4.2 is enkel <?php dacht ik
maar dit is het geworden

HET WERKT PERFECT! HARTSTIKKE BEDANKT! Ik zal er morgen even goed naar kijken en ik zie ook eigenlijk wat u heeft veranderd o.a. (ik moest eigenlijk voor elke product etc. een eigen variabele maken). Ik zal morgen proberen om mijn eigen code zodanig te wijzigen gebaseerd op de uwe! Echt, hartstikke bedankt! Ik zal morgen naar kijken of van het weekend en dan moet ik nog twee opdrachten en ben ik klaar (hoop ik)

NOGMAALS HARTSTIKKE BEDANKT!!!
 
@kenikavanbis, nog een klein vraagje

als ik iets bestel, werkt het, maar dan krijg ik dit wel helemaal bovenaan de pagina te zien:

Array ( [korting2] => 10 [korting3] => 5 [Betalingswijze] => Mastercard [bestelling] => Array ( [001] => Array ( [product] => 001 [merk] => Toshiba [model] => Toshiba A100-510 [os] => vista [aantal] => 4 [prijs] => 999.99 ) [002] => Array ( [product] => 002 [merk] => Acer [model] => Aspire 5735Z [os] => xp [aantal] => 2 [prijs] => 529.99 ) ) [x] => 114 [y] => 9 )


?
 
ik heb de debug code laten staan om u deze wijze van werken eens te tonen
print_r($_POST);



ps als je ooit een de betaling afhadeling doet kan je deze dan hier ook posten
omdat ik ogone ken maar ik sta open om andere methoden te ontdekken
 
Laatst bewerkt:
ik heb de debug code laten staan om u deze wijze van werken eens te tonen
print_r($_POST);



ps als je ooit een de betaling afhadeling doet kan je deze dan hier ook posten
omdat ik ogone ken maar ik sta open om andere methoden te ontdekken

Aha op die manier! Dank u hartelijk! Ik zal het zeker plaatsen. Ik zal het denk ik ergens deze week plaatsen, want heb het nu hartstikke druk hiermee moet alles afronden.

Zou u mij misschien ook met het volgende kunnen helpen;
Ik heb de volgende code:

Code:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post">

Gebruikersnaam: <input type="text" name="gebruikersnaam"><br />
Wachtwoord: <input type="text" name="wachtwoord"><br /><br />

<input type="submit" value="versturen">
</form>
<?php

$bestand=fopen("gebruikers.txt","r");


$account = fgetcsv($bestand, 100, "\t");
if(!$account)
{
echo("Kon geen bestand openen!");
}
else
echo("Welkom");
fclose($bestand);
?>

Het is de bedoeling, dat wanneer je inlogt met je gebruikersnaam en wachtwoord, dat je dan eronder een welkom tekst krijgt. Dit werkt niet zo goed, want zodra ik op de pagina ga, staat er al welkom.. De twee opdrachten hiervoor om (1) een bestand aan te maken met de input en (2) om de bestanden te weergeven is wel gelukt..

?
 
@KenikavanBis,

Als het geen moeite is, zou u misschien dan mijn code kunnen bekijken en hoe ik het in mijn eigen code kan wijzigen zodat het werkt? De code die u heeft neer geplaatst heb ik nu 2 dagen zitten bekijken en het is nog een beetje ingewikkeld voor mij (ik heb ook gezien dat u twee maal de for each lus hebt gebruikt wat natuurlijk handiger is zo te zien, maar ik moet me echt houden aan de richtlijnen van mijn opdrachten..). Ik heb zeker veel van geleerd en heb veel mee getest, maar ik zou toch graag willen weten hoe ik in mijn eigen code dit kan wijzigen zodat het werkt... ik hoop dat dat geen probleem is en geen moeite.. alvast hartelijk bedankt! Ik zie het graag tegemoet..

Lab10.php

Code:
<html>
<head>
<title>XXL Computer winkel</title>
</head>
<body>
<h3>PHP Lab 04</h3>
<?php
include("bestellingfuncties.php")
?>
</hr>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<form name="orderform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Korting:<br />
<input type="checkbox" name="korting1" value="15">Student 15%</br />
<input type="checkbox" name="korting2" value="10">Senior 10%</br />
<input type="checkbox" name="korting3" value="5">Klant 5%</br />

<hr />
Betalingswijze:
<input type="radio" name="Betalingswijze" value="Paypal">Paypal
<input type="radio" name="Betalingswijze" value="Mastercard">Mastercard
<input type="radio" name="Betalingswijze" value="Visa">Visa
<hr />

<tr>
<td>
<img src="toshiba.jpg"  alt="Toshiba laptop" />
</td>
</tr>

<tr>
<td>
Toshiba Satellite A100-510   Basisprijs 999.99
</td>
</tr>

<tr>
<td><!--Shopping Cart Begin-->
<input type="hidden" name="product" value="001" />
<input type="hidden" name="merk" value="Toshiba" />
<input type="hidden" name="model" value="Satellite A100-510" />

Operating system: 
<select name="os" value="true">
<option value="xp">Windows xp</option>
<option value="vista">Windows Vista</option>
<option value="linux">Linux</option>
</select>

Aantal: 
<input type="text" size=2 maxlength=3 name="aantal" value="0" />
<input type="hidden" name="prijs" value="999.99" />

<input type="image" src="bestel.png" border=0 value="bestellen" />
</td>

<tr>
<td>
<img src="acer.jpg"  alt="Acer laptop" />
</td>
</tr>

<tr>
<td>
Acer Aspire 57357Z Basisprijs 529.99
</td>
</tr>

<td>
<input type="hidden" name="product" value="002" />
<input type="hidden" name="merk" value="Acer" />
<input type="hidden" name="model" value="Aspire 5735Z" />

Operating system: 
<select name="os" value="true">
<option value="xp">Windows xp</option>
<option value="vista">Windows Vista</option>
<option value="linux">Linux</option>
</select>

Aantal: 
<input type="text" size=2 maxlength=3 name="aantal" value="0" />
<input type="hidden" name="prijs" value="529.99" />
<input type="image" src="bestel.png" border=0 value="bestellen" />
<hr /></td>

<!--Shopping Cart End  -->
</tr>
</form>
</table>

<?php

echo "Korting is: " . ($_POST["korting1"] + $_POST["korting2"] + $_POST["korting3"]) . " procent" . "<br />";
if($_POST["aantal"] * $_POST["prijs"]>="5000")
{
echo "Kredietlimiet bereikt---Je bestelling mag maximaal 5000 euro’s bedragen " . $_POST["naam"];
}
else if($_POST["aantal"] * $_POST["prijs"]<"5000" && $_POST["aantal"] * $_POST["prijs"]>"0")
{
echo "Uw bestelling bedraagt " .$_POST["aantal"] * $_POST["prijs"];
}

switch($_POST['Betalingswijze'])
{
case "Paypal":
echo "<br />Uw betaling wordt behandeld via PayPal";
break;

case "Mastercard":
echo "<br />Uw betaling wordt behandeld via Mastercard";
break;

case "Visa":
echo "<br />Uw betaling wordt behandeld via Visa";
break;

default:
echo "<br />U moet een betalingswijze kiezen! <br />";
}


echo beschikbaarheid($_POST['merk'], $_POST['os']);

echo bestellingoverzicht()

?>
</body>
</html>


Bestellingfuncties.php
Code:
<?php
function beschikbaarheid($merk, $os)
{
// deze functie heeft twee input parameters
// $merk verwijzt naar de merk-hash-array
// $os verwijzt naar de os-hash-array
// deze functie geeft de beschikbaarheid van de laptop met os terug.


$beschikbaar = array
( 
"Toshiba" => array
(
"xp"=> "U heeft voor de operating system xp gekozen.", 
"vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
"linux" => "U heeft voor de operating system linux gekozen."
),
"Acer" => array
(
"xp"=> "U heeft voor de operating system xp gekozen.", 
"vista" =>"U heeft voor de operating system vista gekozen.", 
"linux" =>" U heeft voor de operating system linux gekozen."
),
"Hp" => array
("xp"=> "U heeft voor de operating system xp gekozen.", 
"vista" => "Deze laptop is niet beschikbaar met de vista operating system.", 
"linux" => "Deze laptop is niet beschikbaar met de linux operating system."
)
);

return($beschikbaar[$merk][$os]);
}

// 

function bestellingoverzicht()
{

$laptop["toshiba"] = "toshiba";
$laptop["acer"] = "acer";

$info[1] = "product";
$info[2] = "merk";
$info[3] = "model";
$info[4] = "os";
$info[5] = "aantal";
$info[6] = "prijs";

echo "<br /> 
<table width='80%' border='1' >
<caption>
<strong>Bestellingoverzicht</strong>
</caption>
<thead>
<tr>
<th>Product</th>
<th>Merk</th>
<th>Model</th>
<th>OS</th>
<th>Aantal</th>
<th>Basisprijs</th>
</tr>
</thead>
<tbody>";

foreach($laptop as $key => $value)
{
$aantal = $value. "aantal";
if($_POST[$aantal] == 0) continue;
$reij = "<tr>";
for($x=1; $x<=sizeof($info); $x++)
{
$element = $value . $info[$x];
$reij = $reij . "<td>" . $_POST[$element] ."</td>";
}
$reij = $reij . "</tr>";
echo $reij;
}
echo "</tbody></table>";
}
?>
 
Wat kan er fout lopen

-
</hr> kan fout veroorzaken is <hr/>

-
Operating system:
<select name="os" value="true">

value moet geselecteerd worden dus mag niet aanwezig zijn
Zie W3c

-


foreach($laptop as $key => $value)
{
$aantal = $value. "aantal";
if($_POST[$aantal] == 0) continue;
$reij = "<tr>";
for($x=1; $x<=sizeof($info); $x++)
{
$element = $value . $info[$x];
$reij = $reij . "<td>" . $_POST[$element] ."</td>";
}
$reij = $reij . "</tr>";
echo $reij;
}
echo "</tbody></table>";
}

je gaat hier van een array af die geen array key value is dus kan je ook geen value paken php gaat hier niets van zeggen als een variabele leeg is dus dit ga je ook moeten oplossen.
Je moet niet op de array van mij kijken is gewoon de zelfde maar op één lijn geschreven.

en je moet zien dat je met het form geen bepaling kan doen om te zien hoeveel van welke computer er besteld zijn of je kan het nooit zeker zijn in geval van u.
weet dat sommige browers de vars van achter naar voor doorsturen maar de meeste van voor naar achter louter ter info hoef je niet te weten maar je kan een var maar één keer doorsturen de volgende keer overschrijf je de vorige en

wat het kort wil zeggen dat je var aantal voor de voor bijde computer de zelfde naam hebben waar ik er een array van maakte bestaat de mogelijkheid dat je het met ajax moet updaten maar dan wordt het niet gemakkelijk en heb je nog veel werk maar weet dat het voorbijgestreefd is je update gewoon de volledige pagina dan werkt het altijd moet je vanuitgaan. je hoeft maar te kiezen wat je doet ik zal proberen je nog bij te staan.
 
Wat kan er fout lopen

-
</hr> kan fout veroorzaken is <hr/>

-
Operating system:
<select name="os" value="true">

value moet geselecteerd worden dus mag niet aanwezig zijn
Zie W3c

-


foreach($laptop as $key => $value)
{
$aantal = $value. "aantal";
if($_POST[$aantal] == 0) continue;
$reij = "<tr>";
for($x=1; $x<=sizeof($info); $x++)
{
$element = $value . $info[$x];
$reij = $reij . "<td>" . $_POST[$element] ."</td>";
}
$reij = $reij . "</tr>";
echo $reij;
}
echo "</tbody></table>";
}

je gaat hier van een array af die geen array key value is dus kan je ook geen value paken php gaat hier niets van zeggen als een variabele leeg is dus dit ga je ook moeten oplossen.
Je moet niet op de array van mij kijken is gewoon de zelfde maar op één lijn geschreven.

en je moet zien dat je met het form geen bepaling kan doen om te zien hoeveel van welke computer er besteld zijn of je kan het nooit zeker zijn in geval van u.
weet dat sommige browers de vars van achter naar voor doorsturen maar de meeste van voor naar achter louter ter info hoef je niet te weten maar je kan een var maar één keer doorsturen de volgende keer overschrijf je de vorige en

wat het kort wil zeggen dat je var aantal voor de voor bijde computer de zelfde naam hebben waar ik er een array van maakte bestaat de mogelijkheid dat je het met ajax moet updaten maar dan wordt het niet gemakkelijk en heb je nog veel werk maar weet dat het voorbijgestreefd is je update gewoon de volledige pagina dan werkt het altijd moet je vanuitgaan. je hoeft maar te kiezen wat je doet ik zal proberen je nog bij te staan.

Enige wat ik heb kunnen wijzigen is value="true" weggehaald en </hr> in <hr /> haha.. Voor de rest ben ik een beginner en snap het niet zo goed. Ik weet nu niet welke array ik moet maken bijvoorbeeld. Ik heb uw code (die overigens perfect werkt) naast de mijne genomen meerdere malen, maar kan nog steeds niet zien hoe ik mijn code kan wijzigen.

Wat betreft mijn en uw array, dat de mijne onder elkaar is en de uwe naast elkaar, dat begrijp ik dat daar twee mogelijkheden voor zijn (de mijne en de uwe).

Voor de rest kom ik echt vast te zitten nu.. Sta me bij svp! Haha..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan