het lukt mij niet om de waarden van $totaal_bedrag en $totaal_met_korting
in de database te krijgen, er komt altijd 0 in te staan.

de andere waarden komen er wel correct in te staan.

wie kan mij hiermee helpen?
                                <?php
                               $errorMessages = [];


// Haal de waarde van de query parameter op
$coupon_code = $_POST['coupon_code'] ?? '';

if ($coupon_code) {
    $currentDate = date('Y-m-d');
    $query_coupon = "SELECT discount, status, date_start, date_end FROM oc_coupon WHERE code = '$coupon_code'";
    $result_coupon = mysqli_query($link, $query_coupon);

    if ($result_coupon === false) {
        die("Query faalde: " . mysqli_error($link));
    }

    if (mysqli_num_rows($result_coupon) > 0) {
        $row_coupon = mysqli_fetch_assoc($result_coupon);
        $korting = $row_coupon['discount'];
        $status = $row_coupon['status'];
        $date_start = $row_coupon['date_start'];
        $date_end = $row_coupon['date_end'];

        if ($status != 1) {
            $errorMessages[] = "De kortingscode is niet actief.";
        }
        if ($currentDate < $date_start) {
            $errorMessages[] = "De kortingscode is nog niet geldig.";
        }
        if ($currentDate > $date_end) {
            $errorMessages[] = "De kortingscode is verlopen.";
        }
    } else {
        $errorMessages[] = "De kortingscode bestaat niet.";
    }
}

if (empty($errorMessages)) {
    // Haal totaal_bedrag op uit de bestellingen tabel
    $query_bestelling = "SELECT totaal_bedrag FROM bestellingen WHERE order_id = $order_id";
    $result_bestelling = mysqli_query($link, $query_bestelling);

    if ($result_bestelling && mysqli_num_rows($result_bestelling) > 0) {
        $row_bestelling = mysqli_fetch_assoc($result_bestelling);
        $totaal_bedrag = $row_bestelling['totaal_bedrag'];

        // Bereken het totaal met korting
        $totaal_met_korting = $totaal_bedrag - ($totaal_bedrag * ($korting / 100));

        // Update query om de waarden op te slaan in de database
        $updateQuery = "UPDATE bestellingen SET kortings_code = '$coupon_code', korting_percentage = $korting, totaal_bedrag = $totaal_bedrag, totaal_met_korting = $totaal_met_korting WHERE order_id = $order_id";
        if (mysqli_query($link, $updateQuery)) {
            echo "<p class='success-message'>Bijgewerkt in de database.</p>";
        } else {
            echo "<p class='error-message'>" . mysqli_error($link) . "</p>";
        }
    }
} else {
    foreach ($errorMessages as $message) {
        echo "<p class='error-message'>$message</p>";
    }
}

mysqli_close($link);

                                ?>

                                <form action="" method="POST">
                                    <div class="form-group">
                                        <label for="coupon_code">Voer een kortingscode in:</label>
                                        <input type="text" name="coupon_code" id="coupon_code" class="form-control" required>
                                    </div>

                                    <div class="form-actions">
                                        <button type="submit" name="submit" class="btn btn-primary">Controleer Kortingscode</button>
                                    </div>
                                </form>

                                <?php if ($coupon_code): ?>
                                    <div class="result">
                                        <?php if (empty($errorMessages)): ?>
                                            <p class="success-message">super! je krijgt <?php echo htmlspecialchars($korting); ?>% korting</p>
                                        <?php else: ?>
                                            <?php foreach ($errorMessages as $message): ?>
                                                <p class="error-message"><?php echo htmlspecialchars($message); ?></p>
                                            <?php endforeach; ?>
                                        <?php endif; ?>
                                    </div>
                                <?php endif; ?>
                            </td>
                        </tr>

                        <tr>
                            <th>Totaal: </th>
                            <td>
                                <?php
                                // Bereken het bedrag inclusief korting
                                $totaal_bedrag = $totaal - ($totaal * ($korting / 100));

                                // Gebruik number_format om het resultaat te formatteren
                                $totaal_met_korting = number_format($totaal_bedrag, 2, ',', '');

                                // Output
                                echo "<p>Sub totaal: € " . number_format($totaal, 2, ',', '') . "</p>";
                                echo "<p>Korting: -$korting%</p>";
                                echo "<p>Totaal te betalen: € $totaal_met_korting</p>";

                                // Sluit de verbinding
                                mysqli_close($link);
                                ?>
Wat meldt een echo op $updateQuery?
ik krijg netjes : Bijgewerkt in de database.
terug!
Dat is gek, want die variabele $updateQuery bevat de query, en niet die tekst.
wanneer ik dit probeer:
<?php
// Berekening van het totaal inclusief korting
$totaal_incl_korting = $subtotaal - ($subtotaal * ($korting / 100));

// Controleer of het resultaat een geldig getal is
if (is_numeric($totaal_incl_korting)) {
// Ronde het bedrag af op 2 decimalen (indien nodig)
$totaal_incl_korting = round($totaal_incl_korting, 2);

// Update query om de waarden op te slaan in de database
$updateQuery = "UPDATE bestellingen SET totaal_met_korting = $totaal_incl_korting WHERE order_id = $order_id";
if (mysqli_query($link, $updateQuery)) {
echo "<p class='success-message'>De gegevens zijn succesvol bijgewerkt.</p>";
} else {
echo "<p class='error-message'>Er is een fout opgetreden: " . mysqli_error($link) . "</p>";
}
} else {
echo "<p class='error-message'>Ongeldige totaalprijs berekend. Controleer de invoerwaarden.</p>";
}

// Sluit de verbinding
mysqli_close($link);
?>

krijg ik enkel: er is een fout opgetreden.
verder geen idee wat er juist fout gaat


[size=xsmall]Toevoeging op 31/07/2024 15:45:34:[/size]

?> <?php echo $updateQuery ?> = 0
-----------------------------------
<?php echo $totaal_incl_korting ?> = 540
-----------------------------------
<?php
$updateQuery = "UPDATE bestellingen SET totaal_met_korting = $totaal_incl_korting WHERE order_id = $order_id";
echo "Query is: ".$updateQuery;
?>

Dit moet de querie echo'en en in beeld brengen.
<?php
$updateQuery = "UPDATE bestellingen SET totaal_met_korting = $totaal_incl_korting WHERE order_id = $order_id";
echo "Query is: ".$updateQuery;
?>
geeft de volgende resultaat:

Query is: UPDATE bestellingen SET totaal_met_korting = 540,00 WHERE order_id = 55
En welke error message zie je precies vanuit MySQL zelf?
op dit moment:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE order_id = 55' at line 1

totaal_met_korting = $totaal_met_korting = geen SQL error
totaal_met_korting = $totaal_incl_korting = wel error
totaal_incl_korting = $totaal_incl_korting = wel error


ik heb beide versies in de database staan
dus: totaal_met_korting en totaal_incl_korting
Christiaan Pot op 31/07/2024 19:47:17

Query is: UPDATE bestellingen SET totaal_met_korting = 540,00 WHERE order_id = 55


Die string 540,00 met een komma moet de float 540.00 met een punt of de integer 540 zijn.
kan je me even op weg helpen
want met $totaal_met_korting = str_replace(',', '.', $totaal_met_korting); lukt het niet.

Reageren