Vraag Formulier verwerken in database PHP

Discussie in 'Programmeren' gestart door Rubensky, 9 mei 2017.

  1. Rubensky

    Rubensky Moderator

    Is er iemand die mij kan helpen met de controle van een formulier en mij vervolgens kan helpen de inhoud van dat formulier op een veilige manier in een database te verwerken? Een mysql database is aanwezig. De kennis om de connectie te maken ook. Ik loop tegen de verwerking van de gegevens aan omdat ik dat proces gewoon niet goed begrijp. Mocht er iemand bereid zijn mij te helpen dan kan ik het formulier plaatsen.
     
  2. Christopher

    Christopher Moderator

    Jazeker,

    Deel alvast wat je hebt (uiteraard de connectiestring niet of op zijn minst alles dat naar jouw setp verwijst eruit halen toch).


    Grtz,

    C
     
  3. Rubensky

    Rubensky Moderator

    Ik heb een formulier met Javascript delen wil je die er voor de volledigheid bij?
     
  4. Christopher

    Christopher Moderator

    Best wel, dan kan ik dat ook nakijken voor je.
     
  5. Rubensky

    Rubensky Moderator

    Ik ben een tijd lang niet meer met het project bezig geweest maar hier komt het dan toch echt omdat ik aan de voorkant al een paar problemen heb. Ik zie even niet meer waar de fout zit.

    Er zijn op het formulier een aantal chheckboxes te zien. Wanneer je die aanvinkt zouden er invul velden moeten verschijnen maar om de een of andere reden werkt dat niet meer. 2 wanneer ik de radiobuttons selecteer worden ze allebei aangevinkt dat moet ook al niet.

    En bij radiobutton wel sponsoring zou ook een invulveld moeten ontstaan.

    Hieronder de code:

    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl">
    
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>extra-tekstvakje</title>
    <script src="bestellingen_opnemen.js"> </script>
    <link rel="stylesheet" href="bestellingen_opnemen.css" type="text/css">
    
    </head>
    
    <body>
    
    <form method="post" action="bestelling_verwerken.php">
        <p>
    
                Bestelling van: <input type="text" name="bestelling_van">  <br /> <br />
                Naam: <input type="text" name="naam">  <br /> <br />
                Adres: <input type="text" name="adres">  <br /> <br />
                Postcode: <input type="text" name="postcode">  <br /> <br />
                Plaats <input type="text" name="plaats">  <br /> <br />
                Telefoonnummer: <input type="text" name="telefoonnummer">  <br /> <br />
    
                Thuisbezorgen <br /> <br/>
                Ja        <input type="radio" name="thuisbezorgen" value="thuisbezorgen"> <br />
                Nee        <input type="radio" name="thuisbezorgen" value="thuisbezorgen"> <br /> <br />
    
    
                <input type="checkbox" name="oliebollen_met" value="oliebollen_met" onclick="toggleExtra();" /> oliebollen met krenten
    <span id="oliebollen_met"> &gt; Hoeveel zakken wilt u?<input type="text" name="extra" size="20" maxlength="50" /></span> <br />
    
    
        <input type="checkbox" name="oliebollen_zonder" value="oliebollen_zonder" onclick="toggleExtra1();" />Oliebollen zonder krenten
        <span id="oliebollen_zonder"> &gt; Hoeveel zakken wilt u? <input type="text" name="oliebollen_zonder" size="20" maxlength="50" /></span> <br />
    
    
        <input type="checkbox" name="appelbeignets" value="appelbeignets" onclick="toggleExtra2();" />appelbeignets
        <span id="appelbeignets"> &gt; Hoeveel appelbeignets wilt u? <input type="text" name="appelbeignets" size="20" maxlength="50" /></span> <br /> <br />
    
    
                <input type="radio" name="sponsoring" onclick="closeExtra();" />geen sponsoring<br />
            <input type="radio" name="sponsoring" onclick="openExtra();" />Wel sponsoring
            <span id="sponsoring"> &gt; Voor welk bedrag? <input type="text" name="wel_sponsoring" size="20" maxlength="50" /></span>
    
                <br /> <br />
    
                Uw totaalbedrag is:  <br /> <br />
    
                Bestelling bezorgd door: <input type="text" name"bezorgd_door">  <br /> <br />
    
                <input type ="submit" value ="verzenden"> <input type ="reset" value = "resetten">
    
            </p>
    </form>
    </body>
    </html>
    
    

    Javascript

    Code:
    function toggleExtra(){
        if( document.getElementById('oliebollen_met').style.display != 'inline-block'){
            document.getElementById('oliebollen_met').style.display = 'inline-block';
            document.getElementById('oliebollen_met').getElementsByTagName('input')[0].focus();
        }
        else {
            document.getElementById('oliebollen_met').style.display = 'none';
            document.getElementById('oliebollen_met').getElementsByTagName('input')[0].value='';
        }
    }
    
    function toggleExtra1(){
        if( document.getElementById('oliebollen_zonder').style.display != 'inline-block'){
            document.getElementById('oliebollen_zonder').style.display = 'inline-block';
            document.getElementById('oliebollen_zonder').getElementsByTagName('input')[0].focus();
        }
        else {
            document.getElementById('oliebollen_zonder').style.display = 'none';
            document.getElementById('oliebollen_zonder').getElementsByTagName('input')[0].value='';
        }
    }
    
    function toggleExtra2(){
        if( document.getElementById('appelbeignets').style.display != 'inline-block'){
            document.getElementById('appelbeignets').style.display = 'inline-block';
            document.getElementById('appelbeignets').getElementsByTagName('input')[0].focus();
        }
        else {
            document.getElementById('appelbeignets').style.display = 'none';
            document.getElementById('appelbeignets').getElementsByTagName('input')[0].value='';
        }
    }
    
    //einde checkboxes //
    
    function openExtra(){
        document.getElementById('sponsoring').style.display = 'inline-block';
        document.getElementById('sponsoring').getElementsByTagName('input')[0].focus();
    }
    function closeExtra(){
        document.getElementById('sponsoring').style.display = 'none';
        document.getElementById('sponsoring').getElementsByTagName('input')[0].value='';
    }
    
    
    
     
    Laatst bewerkt: 15 jun 2017
  6. Swake

    Swake Moderator

    Uw formulier gaat niet verzonden raken ook .

    Maak een php script om te verzenden . bijv. verzend.php

    <form action="verzend.php" method="post">

    Verbeter de bezorgwijze ook eens .

    <fieldset>Selecteer bezorgwijze:<br>
    <input type="radio" name="bezorgwijze" value="thuisbezorging"> thuisbezorging
    <input type="radio" name="bezorgwijze" value="niet thuis"> niet thuis
    </fieldset><BR>

    En dan als er niet thuis bezorgd moet worden

    Bij niet thuisbezorging vermeld bezorgadres:<br>
    <TEXTAREA NAME="Opmerkingen" ROWS="4" COLS="40"></TEXTAREA>

    <br /> <br /> ??
    waarom gebruik je <br /> :
    met <br> begin je toch ook een nieuwe regel
     
  7. Swake

    Swake Moderator

    Invoervelden

    <fieldset><b>Persoonlijke gegevens:</b><br>
    (*)Naam: <input type="text" name="naam" required>
    (*)straat <input type="text" name="straat" required><br>

    (*)Email: <input type="email" name="email" placeholder="*@mail.com" required></b><br></fieldset>

    (*) hiermee duid je aan dat het veld verplicht moet ingevuld worden . >>>>>> required niet vergeten

    Ik geef nu enkel maar naam en straat als voorbeeld , je kan ook postcode , gemeente , tel of gsm nr ook laten invoeren .
     
  8. Rubensky

    Rubensky Moderator

    Swake al wat gij typt begrijp ik. Ik gebruik <br /> want dat is HTML 5. de required optie die jij aangeeft gebruik ik niet vanwege de gemakkelijke manier waarop deze te omzeilen is.

    Ik wil eerst even van Christoper leren waarom mijn Javascript niet werkt vervolgens gaan we verder bouwen.
     
  9. Swake

    Swake Moderator

    Je citeert
    2 wanneer ik de radiobuttons selecteer worden ze allebei aangevinkt dat moet ook al niet.

    Maar ik lees in je script

    Ja <input type="radio" name="thuisbezorgen_ja" value="thuisbezorgen_ja"> <br />
    Nee <input type="radio" name="thuisbezorgen_nee" value="thuisbezorgen_nee"> <br /> <br />

    bij name moet je zelfde invoeren : "bezorgwijze" en bij value vul je de waarde in . "thuisbezorgen" en "niet thuis bezorgen"

    <input type="radio" name="bezorgwijze" value="thuisbezorging"> thuisbezorging
    <input type="radio" name="bezorgwijze" value="niet thuis"> niet thuis
    En dan kan er maar één keuzerondje gemarkeerd worden .
     
  10. Rubensky

    Rubensky Moderator

    Heb wat zaken aangepast de vraag is uit de lucht voor nu even. Ik kan nu het formulier afmaken denk ik. Christoper mijn Javascript kan denk ik een stuk beter maar hoe?
     
  11. Rubensky

    Rubensky Moderator

    Nu kom ik op het punt waar de vraag eigenlijk om begonnen is. Namelijk het verwerken in de database van mijn formulier. Hieronder zal ik de velden beschrijven en hoe ik dat dan voor mij zie:

    bestelling_van: niet verplicht
    naam: wel verplicht
    adres: wel verplicht
    postcode: niet verplicht tenzij thuisbezorgen is ja
    plaats: wel verplicht
    telefoonnummer:
    wel verplicht
    thuisbezorgen: niet verplicht maar dan moet ophalen worden ingevuld. Opslaan in de database als 1
    ophalen: Als thuisbezorgen is ingevuld deze leeg laten anders in database invullen met getal 1
    oliebollen_met: Niet verplicht
    oliebollen_zonder: Niet verplicht
    appelbeignets:
    Niet verplicht wel controleren of 1 van de 3 verleden is ingevuld. (die velden zijn oliebollen_met oliebollen_zonder
    appelbeignets)
    sponsoring: niet verplicht.
    totaalbedrag: = oliebollen_met oliebollen_zonder en appelbeignets het aantal wat daar is ingevuld maal 8 inclusief als het is ingevuld het sponsorgeld.
    bezorgd_door: Niet verplicht

    Begrijp dat het veel is maar heb toch dat hoop dat iemand mij wil helpen. Ik zal de structuur van mijn database hieronder plaatsen:

    Code:
    CREATE TABLE IF NOT EXISTS `bestellingen` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `bestelling_van` varchar(20) NOT NULL,
      `naam` varchar(20) NOT NULL,
      `adres` varchar(50) NOT NULL,
      `postcode` varchar(7) NOT NULL,
      `plaats` varchar(50) NOT NULL,
      `telefoonnummer` decimal(10,0) NOT NULL,
      `thuisbezorgen` decimal(2,0) NOT NULL,
      `ophalen` decimal(2,0) NOT NULL,
      `oliebollen_met` decimal(3,0) NOT NULL,
      `oliebollen_zonder` decimal(3,0) NOT NULL,
      `appelbeignets` decimal(3,0) NOT NULL,
      `sponsoring` decimal(6,0) NOT NULL,
      `totaalbedrag` decimal(9,0) NOT NULL,
      `bezorgd_door` varchar(20) NOT NULL,
      `tijd_bestelling` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
    
    Als laatste weet ik ook nog niet hoe je een functie moet maken met JS die het totaalbedrag berekend.
     
    Laatst bewerkt: 15 jun 2017