PHP script uitvoeren na druk op button.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Matthijs PHPHULP

Matthijs PHPHULP

01/12/2010 12:42:26
Quote Anchor link
Ik wil graag dat bij het volgende script als ik op bestelling uitvoeren klik (regel 50) dat dan het 2e script wordt gestart.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
session_start();
session_register("session");

require "header.php";

    if(!$login->get_login_info()) {
        include('loginsysteem/login.inc.php');
        
    }
else {

// Toevoegen
if( isset( $_POST['ADD'] ) && ereg('^[1-9][0-9]*$', $_POST['aantal'])) {
    $_SESSION['winkelwagen'][$_POST['artikelid']] = $_POST['aantal'];
}

// Verwijderen
if( isset( $_GET['DEL'] ) ) {
    unset($_SESSION['winkelwagen'][$_GET['DEL']]);
}

// Laat lijst zien

        echo $_SESSION['id'];
        echo $_SESSION['winkelwagen'];

if( $_SESSION['winkelwagen'] ) {
    $totaal = 0;
    echo "<p><div class=\"big\">De Winkelwagen</div><br>";
    echo "<table border=2 cellpadding=0 cellspacing=0>";
    echo "<tr><td><b>Aantal</b></td><td><b>Naam</b></td><td><b>Prijs in &euro;</b></td><td>Bewerken</td></tr>"; // bovenste regel
    foreach ( $_SESSION['winkelwagen'] as $key=>$val ) {

        $sql = "SELECT * FROM Artikel WHERE ARTIKEL_ID=$key";

        $resultaat = mysql_query($sql);

        while ($rij = mysql_fetch_array($resultaat)) {
            echo "<tr>";
            echo "<td>$val</td>";
            echo "<td>".$rij["Naam"]."</td>";
            echo "<td>".number_format($rij["Prijs"], 2, ',', ' ')."</td>";
            echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?DEL=$key\">[Verwijder]</a>";
            echo "</tr>";
            $totaal = $totaal + ($rij["Prijs"] * $val);
            
        }

    }

    echo "</table>";
    echo "<p>Totaalbedrag: &euro; ".number_format($totaal, 2, ',', ' ')."<br>";
    echo ">> <a href=\"bestelling.php\" onClick=\"return Confirm(0)\">[Bestelling uitvoeren]</a>";
}
else {

    echo "De winkelwagen is momenteel leeg...";

}


if ($_GET["artikelid"]) {

    $sql = "SELECT * FROM Artikel WHERE ARTIKEL_ID=".$_GET["artikelid"];

    $result = mysql_query($sql);
    if (mysql_num_rows($result) > 0) {
        $naam = mysql_result($result, 0, "Naam");
        $prijs = number_format(mysql_result($result, 0, "Prijs"), 2, ',', ' ');
        echo "<p><div class=\"big\">Artikel toevoegen aan winkelwagen</div>";
        echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
        echo "<input type=\"hidden\" name=\"artikelid\" value=\"".$_GET["artikelid"]."\">";
        echo "<input type=\"text\" name=\"aantal\" value=\"1\" size=\"2\" maxlength=2>";
        echo " x Artikel: $naam (prijs: $prijs euro)";
        echo "<input type=\"submit\" name=\"ADD\" value=\"Toevoegen\">";
        echo "</form>";
    }

}
}

require "footer.php";
?>


Dus dat dan dit script wordt gestart:
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
if( $_SESSION['winkelwagen'] ) {
    echo "<table border=2 cellpadding=0 cellspacing=0>";
    echo "<tr><td><b>Aantal</b></td><td><b>Naam</b></td><td><b>Prijs in &euro;</b></td></tr>"; // bovenste regel
    $totaal = 0;
    
    $info = $login->get_login_info('alles');
    $klantid = $info['id'];
    $sql = "INSERT INTO Bestelling (KLANT_ID) VALUES ($klantid)";
        if (!mysql_query($sql))
        echo "Toevoegen bestelling mislukt!";
        $bestellingid = mysql_insert_id();
    
    foreach ( $_SESSION['winkelwagen'] as $key=>$val ) {
    
        $sql = "SELECT * FROM Artikel WHERE ARTIKEL_ID=$key";
        $resultaat = mysql_query($sql);
    
            while ($rij = mysql_fetch_array($resultaat)) {
                echo "<tr>";
                echo "<td>$val</td>";
                echo "<td>".$rij["Naam"]."</td>";
                echo "<td>".number_format($rij["Prijs"], 2, ',', ' ')."</td>";
                echo "</tr>";
            $totaal = $totaal + ($rij["Prijs"] * $val);
            $prijs = $rij["Prijs"];
            $datum = date("d-m-Y", time());
        
        $sql = "INSERT INTO Bestellijn (BESTELLING_ID, ARTIKEL_ID, Aantal, Prijs, Datum) VALUES ($bestellingid, $key, $val, $prijs, NOW())";
        if (!mysql_query($sql)) { // voer SQL code uit
            echo "Toevoegen bestelling deel 2 mislukt!";
            }
        }
    }

    echo "<tr><td></td><td>Totaal</td><td>".$totaal."</td></tr>";
    echo "</table>";
    $sql = "UPDATE Bestelling SET Bedrag=$totaal WHERE BESTELLING_ID=$bestellingid";
    if (!mysql_query($sql)) { // voer SQL code uit
    echo "Toevoegen bestelling deel 2 mislukt!";
    }
}

?>


En de bestellingid die ik hier aanmaak moet ik in één string meegeven naar de volgende pagina.

Hoe kan ik dit het beste aanpassen? Als er nog meer gegevens nodig zijn hoor ik het graag.

Alvast bedankt,
Matthijs
Gewijzigd op 01/12/2010 12:43:14 door Matthijs PHPHULP
 
PHP hulp

PHP hulp

29/03/2024 12:51:07
 
Obelix Idefix

Obelix Idefix

01/12/2010 13:29:45
Quote Anchor link
Gebruik geen * in je query.
Gebruik bij echo liever ' ipv ", scheelt je een heleboel keren escapen.
Variabelen buiten quotes.
eregi en session_register: This function has been DEPRECATED

Wat betreft je eigenlijke vraag: wat gaat er fout als je klikt op de link op regel 50 in het 1e script?
Gewijzigd op 01/12/2010 13:30:35 door Obelix Idefix
 
Marco V

Marco V

01/12/2010 13:37:21
Quote Anchor link
Toegegeven, ik heb me niet helemaal in je script verdiept, maar je zou in je script de voorwaarde kunnen toevoegen (isset($_POST['de_naam_van_submit_button'])), of er een functie van maken of wellicht is dit iets? (dmv een onclick kan je met een ajax script een ander php script aanroepen)
 
Matthijs PHPHULP

Matthijs PHPHULP

01/12/2010 14:00:02
Quote Anchor link
bedankt voor de snelle reactie

@Obelix en idefix, als ik de 2e code toevoeg aan de eerste code en dan met behulp van (isset($_POST['de_naam_van_submit_button'])).

Dan heb ik deze code:

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
session_start();
session_register("session");

require "header.php";

if (isset($_POST['Verder'])) {
    $totaal = 0;
    
    $info = $login->get_login_info('alles');
    $klantid = $info['id'];
    $sql = "INSERT INTO Bestelling (KLANT_ID) VALUES ($klantid)";
        if (!mysql_query($sql))
        echo "Toevoegen bestelling mislukt!";
        $bestellingid = mysql_insert_id();
    
    foreach ( $_SESSION['winkelwagen'] as $key=>$val ) {
    
        $sql = "SELECT * FROM Artikel WHERE ARTIKEL_ID=$key";
        $resultaat = mysql_query($sql);
    
            while ($rij = mysql_fetch_array($resultaat)) {
            $totaal = $totaal + ($rij["Prijs"] * $val);
            $prijs = $rij["Prijs"];
            $datum = date("d-m-Y", time());
        
        $sql = "INSERT INTO Bestellijn (BESTELLING_ID, ARTIKEL_ID, Aantal, Prijs, Datum) VALUES ($bestellingid, $key, $val, $prijs, NOW())";
        if (!mysql_query($sql)) { // voer SQL code uit
            }
        }

    $sql = "UPDATE Bestelling SET Bedrag=$totaal WHERE BESTELLING_ID=$bestellingid";
    if (!mysql_query($sql)) { // voer SQL code uit
    }
    header('location:bestelling.php');
    exit;
}}


    if(!$login->get_login_info()) {
        include('loginsysteem/login.inc.php');
        
    }
else {

// Toevoegen
if( isset( $_POST['ADD'] ) && ereg('^[1-9][0-9]*$', $_POST['aantal'])) {
    $_SESSION['winkelwagen'][$_POST['artikelid']] = $_POST['aantal'];
}

// Verwijderen
if( isset( $_GET['DEL'] ) ) {
    unset($_SESSION['winkelwagen'][$_GET['DEL']]);
}

// Laat lijst zien

        echo $_SESSION['id'];
        echo $_SESSION['winkelwagen'];

if( $_SESSION['winkelwagen'] ) {
    $totaal = 0;
    echo "<p><div class=\"big\">De Winkelwagen</div><br>";
    echo "<table border=2 cellpadding=0 cellspacing=0>";
    echo "<tr><td><b>Aantal</b></td><td><b>Naam</b></td><td><b>Prijs in &euro;</b></td><td>Bewerken</td></tr>"; // bovenste regel
    foreach ( $_SESSION['winkelwagen'] as $key=>$val ) {

        $sql = "SELECT * FROM Artikel WHERE ARTIKEL_ID=$key";

        $resultaat = mysql_query($sql);

        while ($rij = mysql_fetch_array($resultaat)) {
            echo "<tr>";
            echo "<td>$val</td>";
            echo "<td>".$rij["Naam"]."</td>";
            echo "<td>".number_format($rij["Prijs"], 2, ',', ' ')."</td>";
            echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?DEL=$key\">[Verwijder]</a>";
            echo "</tr>";
            $totaal = $totaal + ($rij["Prijs"] * $val);
            
        }

    }

    echo "</table>";
    echo "<p>Totaalbedrag: &euro; ".number_format($totaal, 2, ',', ' ')."<br>";
    echo ">> <a href=\"bestelling.php\" onClick=\"return Confirm(0)\">[Bestelling uitvoeren]</a>";
    echo '    <form>
            <input type="submit" value="Verder" />
            </form>'
;
}
else {

    echo "De winkelwagen is momenteel leeg...";

}


if ($_GET["artikelid"]) {

    $sql = "SELECT * FROM Artikel WHERE ARTIKEL_ID=".$_GET["artikelid"];

    $result = mysql_query($sql);
    if (mysql_num_rows($result) > 0) {
        $naam = mysql_result($result, 0, "Naam");
        $prijs = number_format(mysql_result($result, 0, "Prijs"), 2, ',', ' ');
        echo "<p><div class=\"big\">Artikel toevoegen aan winkelwagen</div>";
        echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\">";
        echo "<input type=\"hidden\" name=\"artikelid\" value=\"".$_GET["artikelid"]."\">";
        echo "<input type=\"text\" name=\"aantal\" value=\"1\" size=\"2\" maxlength=2>";
        echo " x Artikel: $naam (prijs: $prijs euro)";
        echo "<input type=\"submit\" name=\"ADD\" value=\"Toevoegen\">";
        echo "</form>";
    }

}
}

require "footer.php";
?>


Maar als ik dan op de button verder druk(lijn 82) gebeurt er niks, de code wordt dan ook niet uitgevoerd. En op het moment dat die code uitgevoerd is wil ik dat de gebruiker wordt doorgestuurd naar het volgende scherm.
 
Marco V

Marco V

01/12/2010 14:16:23
Quote Anchor link
Als je gebruik maakt van (isset($_POST['de_naam_van_submit_button'])) even het volgende; is de pagina gepost, dan is de waarde van je button dus gezet en kan de voorwaarde 'true' zijn en dus bijvoorbeeld de rest van het script worden verwerkt. Maar... al je velden en variabelen die je na de post nog nodig hebt, moet je ook verzenden en terug halen... door bijvoorbeeld: $artikelid = $_POST['artikelid'];

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// als er op de knop "verder" is gedrukt en het formulier is verzonden via POST
if (isset($_POST['Verder'])) {
// haal de waarde op uit de post
$artikelid = $_POST['artikelid'];
}

?>


Daarnaast zou je bijvoorbeeld kunnen werken met een variabele die je "status" noemt, bijvoorbeeld een hiddenfield waarin je de waarde $returnstatus stopt.
bij het laden van de pagina zeg je $returnstatus = "insert";

Wordt de pagina gepost dan krijg je de waarde $_POST['status'] == "insert". Dit zou vervolgens een voorwaarde voor (een deel van) je script kunnen zijn.

In dat deel zet je dan weer de nieuwe "returnstatus" voor de volgende post... bijvoorbeeld $returnstatus = "update";
 
Matthijs PHPHULP

Matthijs PHPHULP

01/12/2010 16:41:23
Quote Anchor link
Het is mij helaas niet helemaal gelukt, maar ik heb het nu wel op een andere menier draaiende, hopelijk werkt dat een beetje. Maar even afwachten hoe dat gaat werken in de praktijk :)

In ieder geval bedankt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.