Graag wil ik een online (check)levertijd systeem maken. We doen dit nu d.m.v. Excel. Hierin maken we elke week van iedere dag een aparte tab/sheet. Per tab (dus bijv. maandag 26 september) staan de volgende gegevens: Klantnaam, Ordernummer, Postcode, Woonplaats, Aflevertijdstip.
Momenteel kunnen klanten 1 dag voor levering bellen voor het aflevertijdstip.

Is het mogelijk om deze gegevens i.p.v. in Excel, in een database in te voeren? Vervolgens via de website d.m.v. PHP, klanten laten zoeken op postcode of ordernummer? kam iemand mij helpen met een begin of is er ergens een soort van handleiding?
Mijn engels is zeer goed en ik beschik over prima HTML en CSS kennis, redelijke SQL kennis en PHP echt alleen basics..
Oke, weer wat geleerd :)
Het werkt prima! Alleen als ik gewoon op zoeken klik dan gebeurt er niks.. Bij beide velden. Er komt dus niet "Er zijn geen velden ingevuld". ?
"Er zijn geen resultaten gevonden!" werkt toppie! :D
Inderdaad wil ik toch 2 velden omdat ik niet wil dat klanten van andere klanten, levertijden kunnen inzien. Zonder de % werkt perfect!
Ah dit is het klanten gedeelte. Dan zou je inderdaad beter LIKE kunnen vervangen door = en ik zou, zoals ik eerder zei, controleren op postcode EN Ordernummer ipv OF. Zo wordt het lastiger voor anderen om te gokken.

De foutmelding staat in $orderErr. Deze moet je dan nog wel ergens weergeven.


<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
    
    if(trim($_POST['ordernummer']) != "") {
        $q = trim($_POST['ordernummer']);
    } else if(trim($_POST['postcode']) != "" && trim($_POST['huisnummer']) != "") {
        $q = trim($_POST['postcode']) . ' ' . trim($_POST['huisnummer']);
    } else {
        $orderErr = "Er zijn geen velden ingevuld";
    }
    
    if(!isset($orderErr)) { // Geen error.

        try {
            $stmt = $db->prepare("
            SELECT
                klantnaam
            FROM
                transport
            WHERE
                (CONCAT_WS(' ',
                        IF(LENGTH(postcode), postcode, NULL),
                        IF(LENGTH(huisnummer), huisnummer, NULL)
                ) LIKE :search
                OR ordernummer LIKE :search)
            ");

            $stmt->bindValue(':search', "%{$q}%", PDO::PARAM_STR);

            $stmt->execute();
                
                if ($stmt->rowCount() > 0) { // Er zijn meer dan 0 resultaten
                    $stmt->setFetchMode(PDO::FETCH_ASSOC);
                    $rows = new IteratorIterator($stmt);
                    
                    foreach($rows as $row) {
                        echo '<p>' . $row['klantnaam'] . '</p>';
                    }
                } else {
                    echo 'Er zijn geen resultaten gevonden!';
                }
                    
        }
        catch(PDOException $e) {
            echo $e->getMessage();
        }
    } else if(isset($orderErr)) {
        echo $orderErr;
    }
}
?>
Ahjaa klopt haha, niet zo slim van mij!
Nu is die af :D Dat was wat ik nodig had!
Enige wat ik nu nog hoef uit te zoeken is hoe ik via een simpel (secure) systeempje de gegevens daadwerkelijk in de database te krijgen. Ik heb dit nu via SQL import gedaan maar dat kunnen mijn collega's van de planning natuurlijk niet xD. Misschien hier nog tips voor?

Ik heb trouwens beide LIKE 's door = vervangen. Toppie
Inprincipe het zelfde alleen ipv SELECT gebruik je dan INSERT.
tutorial
Super! Ik ga me er eens in verdiepen..

Nog een vraagje. Als ik nu zoek verschijnt alleen de [klantnaam]
echo '<p>' . $row['klantnaam'] . '</p>';

Is het mogelijk om gegevens uit meerdere kolommen toe te voegen? Dus als output verschijnt dan bijvoorbeeld:
De bestelling met ordernummer [ordernummer] van [klantnaam] in [woonplaats] zal worden geleverd tussen [aflevertijdstip]
Je ziet nu in de code SELECT klantnaam FROM transport
Deze select kun je uitbreiden met je andere velden in de database.


SELECT
    klantnaam,
    ordernummer,
    postcode,
    huisnummer,
    woonplaats,
    aflevertijdstip
FROM
    transport

Deze velden kun je nu weergeven

foreach($rows as $row) {
    $row = array_map("htmlspecialchars", $row); // dit voorkomt dat er code kan worden uitgevoerd of de data onjuist wordt weergegeven
    echo '<p>De bestelling met ordernummer ' . $row['ordernummer'] . ' van ' . $row['klantnaam'] . ' in ' . $row['woonplaats'] . ' zal worden geleverd tussen  ' . $row['aflevertijdstip'] . '</p>';
                }
Werkt helemaal top :D
Je bent hartelijk bedankt voor je hulp, en ik heb er wat van opgestoken!!
Graag gedaan. Daar is dit forum voor.
Michael - op 15/10/2016 15:58:58

Graag gedaan. Daar is dit forum voor.


Goedemiddag Michael,

Ik heb ondertussen het systeem uitgewerkt na hoe ik hem wil hebben :)
Hartelijk dank nog!

Gr.
Michael - op 30/09/2016 14:17:51
Als je nog niet heel veel bent met PHP zou ik aanraden om gelijk met PDO (voor de database) te beginnen ipv de mysqli functies.


offtopic: motivatie ontbreekt

Reageren