Dringende hulp gezocht PHP/SQL!!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Pagina: « vorige 1 2 3 volgende »

- Ariën  -
Beheerder

- Ariën -

29/03/2020 23:02:01
Quote Anchor link
Klopt $connectie wel?
En heb je al de missende ) aan het einde toegevoegd?

Hoe start je jouw connectie dan?
Gewijzigd op 29/03/2020 23:02:53 door - Ariën -
 
PHP hulp

PHP hulp

18/12/2024 05:31:15
 
Gijs Marien

Gijs Marien

29/03/2020 23:03:39
Quote Anchor link
de producten komen uit de database, anders zouden die ook niet weergegeven kunnen worden als connectie niet klopte, en ')' is toegevoegd.

Toevoeging op 29/03/2020 23:05:05:

Ik heb de fout gevonden....
 
- Ariën  -
Beheerder

- Ariën -

29/03/2020 23:06:18
Quote Anchor link
En je gebruikt ook echt mysqli? en niet de oude mysql-variant?
'Just a heads-up' voor het geval dát. Want je zou toch echt een error van MySQL zelf moeten zien.

En wat meldt dit dan?
var_dump($connectie); ?
 
Gijs Marien

Gijs Marien

29/03/2020 23:06:34
Quote Anchor link
Hij doet het inmiddels, hartelijk dank. Elk product wordt nu wel los toegevoegd, kan ik deze bundelen met een id of iets, zodat je ziet dat het één bestelling is

Toevoeging op 29/03/2020 23:07:07:

Het was de connectie, die mistte een 's'...
 
- Ariën  -
Beheerder

- Ariën -

29/03/2020 23:09:03
Quote Anchor link
Hmmm... Connecties? ;-)
 
Gijs Marien

Gijs Marien

29/03/2020 23:09:32
Quote Anchor link
Haha ja inderdaad
 
- Ariën  -
Beheerder

- Ariën -

29/03/2020 23:10:24
Quote Anchor link
Fijn dat het nu werkt :P
 
Gijs Marien

Gijs Marien

29/03/2020 23:12:10
Quote Anchor link
Inderdaad!! Elk product wordt nu wel los weergegeven, je ziet niet wat de bestelling is, heb je daar iets voor?
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 00:00:02
Quote Anchor link
je bedoelt dat je het uit de database moet uitlezen?
 
Gijs Marien

Gijs Marien

30/03/2020 00:01:39
Quote Anchor link
Ja, elk product wordt nu los in de database toegevoegd, dus je hebt een row voor pita en een row voor broodje kip, je ziet niet dat ze samen horen, hen je daar iets voor?
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 00:08:42
Quote Anchor link
Hoezo zie je niet dat ze samen horen? Mis je een ID als koppeling naar de gebruiker misschien?
Maar met welke reden wil je dit van de sessie naar de database overhevelen?
 
Gijs Marien

Gijs Marien

30/03/2020 00:09:59
Quote Anchor link
Het doel van het project is dat je een shoarmabakker naboost. Er moet dus ook een gedeelte zijn voor werknemers waar ze de bestellingen kunne inzien

Toevoeging op 30/03/2020 00:10:25:

En daarom moet het dus naar een database
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 00:16:39
Quote Anchor link
Dat gebeurt dus bij de 'check-out', als er afgerekend is.
Maar dan zie ik het probleem niet zo van 'bij elkaar horen'?
Alles in de sessie is je winkelwagentje en is van jouw.
 
Gijs Marien

Gijs Marien

30/03/2020 00:19:38
Quote Anchor link
ja klopt, maar in de winkelwagen wordt er een binnen een bestelling een aparte row gemaakt voor elk product, en als iemand anders dan bestelt, zie je niet dat ze bij elkaar horen
 
Thomas van den Heuvel

Thomas van den Heuvel

30/03/2020 00:20:21
Quote Anchor link
Gijs Marien op 30/03/2020 00:01:39:
Ja, elk product wordt nu los in de database toegevoegd, dus je hebt een row voor pita en een row voor broodje kip, je ziet niet dat ze samen horen, hen je daar iets voor?


Nou, zoals ik in mijn PM zei:
Quote:
Hoi Gijs,

Allereerst voor de beeldvorming - er is maar één sessie: $_SESSION. Dit is een zogenaamd superglobaal array. Superglobaal wil min of meer zeggen "overal geldig", en dus ook overal te gebruiken. $_SESSION is echter niet zonder meer beschikbaar, je moet expliciet aangeven dat je deze wilt gebruiken door het aanroepen van session_start(). Dit zorgt ervoor dat een nieuwe sessie wordt gestart, of een reeds bestaande (eerder aangemaakte) sessie wordt voortgezet.

Gebruik maken van een sessie is een van de manieren die je in staat stelt informatie tussen pagina-aanroepen te onthouden. Normaal is het zo dat als je van pagina A naar pagina B navigeert dat je op pagina B alweer vergeten bent dat je van pagina A afkomstig was, maar met een sessie kun je dus desgewenst informatie overhevelen van pagina A naar B.

Dan over het wegschrijven van bestellingsinformatie naar de database. Hierbij zul je allereerst moeten nadenken over hoe je dit organiseert in je database. Enerzijds heb je de algemene bestellingsinformatie (contactpersoon en adres), anderzijds heb je de daadwerkelijke bestelling, dit is doorgaans een lijst van producten en een hoeveelheid - deze bepalen tezamen, eventueel na verrekening van kortingen/speciale acties etc, de rekening.

Je zou dit dus ook kunnen onderbrengen in twee tabellen: enerzijds een tabel met algemene orderinformatie, anderzijds de orderregels zelf. Uiteraard moet de orderregeltabel een verwijzing hebben naar de ordertabel zodat op deze manier al deze regels gegroepeerd worden tot één order. Ook zou je de orderregeltabel op zijn beurt naar de producten tabel kunnen laten verwijzen, maar er valt ook iets voor te zeggen om dit niet te doen. Dit om de volgende reden. Stel dat iemand een frietje kapsalon bestelt, en die kost op dit moment 5 euro. Hierbij verwijs je in je orderregel naar dit product. Maar wat nu als dit product komt te vervallen of wanneer de prijs verandert? Dan klopt mogelijk je historie opeens niet meer. En historie kan best handig zijn, om te zien wat mensen in het verleden bestelden / wat de populairste snack was / hoe hoog een gemiddelde bestelling was et cetera. Dus er valt iets voor te zeggen om in de orderregel letterlijk "frietje kapsalon" en "5.00" (5 euro) te zetten. Want dat is de meest accurate weergave voor de bestelling van dat moment - een letterlijke "carbon copy" van informatie van elders, afhankelijk van de op dat moment aanwezige producten en geldende prijzen.

Deze databasestructuur bepaalt vervolgens ook welke queries je moet uitvoeren, en in welke volgorde. Allereerst creeer je een bestelling-record, dit vormt de kapstok voor je bestelregels. Vervolgens ren je met een for(each) loop door je sessie heen en haal je de bijbehorende productomschrijvingen en -prijzen op.


Het ontwerp is ook natuurgetrouw: alles wat er gebeurt: er wordt een bestelling geplaatst en deze valt uiteen in contactinformatie, producten en prijzen valt volledig uit te schrijven in volledig lopende zinnen. Dit kun je bijna letterlijk vertalen naar een ontwerp. En vervolgens moet je zorgen dat de tijdelijke opslag (in de sessie) zich een beetje leent om dit makkelijk in een database te zetten.

Nu kan ik dit wel voor jou doen, maar dit forum probeert je aan te moedigen om zelf dingen te leren. Hier wil ik jou ook best mee helpen, maar ik ga het niet voor je doen, als je begrijpt wat ik bedoel :).

Mogelijk heb je met het bovenstaande verhaal al een beter idee van hoe je dingen zou kunnen structureren. Bij een goede databasestructuur is het programmeerwerk in zekere zin bijzaak, dit volgt haast op een natuurlijke wijze.

Als je nog niet helemaal in de vingers hebt hoe arrays werken (en leren hoe deze dingen in elkaar zitten en hoe je deze kunt gebruiken is heel erg de moeite waard!) dan zou je los van dit project gewoon wat oefeningen kunnen doen met het bouwen van (multi)dimensionale arrays. Dit zijn in wezen "datastructuren" en zijn in zekere zin de tegenhanger in PHP van wat je in je database doet: gestructureerd data opslaan, maar dan dus in een wat tijdelijkere vorm dan in een database.

Mocht je nog vragen hebben: laat het weten, of nog beter, stel ze op het forum. Als men ziet dat je dingen hebt geprobeerd maar even vastloopt dan zul je merken dat mensen best bereid zijn om te helpen, als je maar eerst wat inspanning hebt laten zien :).

-Thomas
 
Gijs Marien

Gijs Marien

30/03/2020 00:20:30
Quote Anchor link
Trouwens, de tijd van bestelling wordt meegegeven in de query, misschien kan ik ze door middel van group by bundelen..

Toevoeging op 30/03/2020 00:21:22:

Hmmm apart halen dus
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 00:28:05
Quote Anchor link
Geef elke volledige bestelling die iemand doet na het betalen een uniek ID-nummer mee, zodat je een referentie hebt naar de bestelling. Pietje kan meerdere losse bestellingen doen (voor zichzelf, en 'de baas betaalt'), dus op gebruiker bundelen lijkt mij niet handig.
Gewijzigd op 30/03/2020 00:28:37 door - Ariën -
 
Gijs Marien

Gijs Marien

30/03/2020 00:31:08
Quote Anchor link
Nee klopt, maar op tijdstip misschien wel?

Toevoeging op 30/03/2020 00:31:42:

Ik zal het eens proberen, zit nu in de knoop met dat de query niet werkt met andere gegevens erbij
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 00:33:02
Quote Anchor link
Op tijdstip zou ik ook niet doen. Wat als twee personen precies op hetzelfde moment een bestelling doen?
Straks krijg ik een broodje kaas, terwijl ik geen kaas lust!
 
Gijs Marien

Gijs Marien

30/03/2020 00:34:47
Quote Anchor link
Haha ja klopt daar heb je een punt

Toevoeging op 30/03/2020 00:36:49:

wat klopt er hier niet aan?
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
<?php
 if(isset($_POST['action']) && ($_POST['action'] =="bestel")){

 foreach ($_SESSION["shopping_cart"] as $product){
         $methode = mysqli_real_escape_string($connectie, $_POST["methode"]);
    $filiaalkeuze = mysqli_real_escape_string($connectie, $_POST["filiaalkeuze"]);
  $voornaam = mysqli_real_escape_string($connectie, $_POST["voornaam"]);
  $achternaam = mysqli_real_escape_string($connectie, $_POST["achternaam"]);
  $telefoonnr = mysqli_real_escape_string($connectie, $_POST["telefoonnr"]);
  $email = mysqli_real_escape_string($connectie, $_POST["email"]);
  $postcode = mysqli_real_escape_string($connectie, $_POST["postcode"]);
  $huisnr = mysqli_real_escape_string($connectie, $_POST["huisnr"]);
  $straatnaam = mysqli_real_escape_string($connectie, $_POST["straatnaam"]);
  $woonplaats = mysqli_real_escape_string($connectie, $_POST["postcode"]);
  $datumtijd = mysqli_real_escape_string($connectie, $_POST["datumtijd"]);
  $bestelgegevens = mysqli_real_escape_string($connectie, $_POST["bestelgegevens"]);
  $tijdbestelling = now();
    $code = mysqli_real_escape_string($connectie, $product["code"]);
    $price = mysqli_real_escape_string($connectie, $product["price"]);
    $quantity = mysqli_real_escape_string($connectie, $product["quantity"]);

    $sql2 ="INSERT INTO bestellingen(code,hoeveelheid,status,methode,filiaal,voornaam,achternaam,email,postcode,huisnr,straatnaam,woonplaats,gewenstetijd,opmerkingen,tijdbestelling,prijs) VALUES ('$code','$quantity','nieuw','$methode','$filiaalkeuze','$voornaam','$achternaam',$email','$postcode','$huisnr','$straatnaam','$woonplaats','$datumtijd','$bestelgegevens','$tijdbestelling','$price')";
$result2 = mysqli_query($connectie, $sql2 );
if($result2 == false) {
    mysqli_error($connectie);
}
              }
              }

?>

en hier nog het form
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
<html><form name="form3" action="" method="post">

    
     <div>
                        <label>Afhalen/Bezorgen</label>
  <input type="radio" name="methode" value="afhalen" checked> Afhalen<br>
  <input type="radio" name="methode" value="bezorgen"> Bezorgen<br>
  </div>
  
   <div>
                        <label>Filiaalkeuze</label>
  <SELECT NAME='filiaalkeuze'>
      <OPTION VALUE='xx' disabled>Kies filiaal:</OPTION>
      <?php
      require('connecties.php');
      $sql = "SELECT * FROM `filialen` WHERE filiaal not like 'Hoofdkantoor'";
      $result = mysqli_query($connectie, $sql );
      if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
    echo "
    <OPTION VALUE='"
. $row["filiaal"]. "'>" . $row["filiaal"]. "</OPTION>";
    }
          
      }
else {
          echo "<OPTION VALUE='fout'>fout</OPTION>";
          
      }

      ?>

      </SELECT></div>

          <h2>Contactgegevens</h2>
  <div>
                        <label>Voornaam</label>
                    <input type="text" name="voornaam" maxlength="30" placeholder="Verplicht" autocomplete="given-name" required />
                    </div>
                    
    <div>
                        <label>Achternaam</label>
                    <input type="text" name="achternaam" maxlength="30" placeholder="Verplicht" autocomplete="family-name" required />
                    </div>
                    
    <div>
                        <label>Telefoon</label>
                    <input type="text" name="telefoonnr" maxlength="30" placeholder="Verplicht" autocomplete="tel" required />
                    </div>
                    
    <div>
                        <label for="inp_first_name" class="control-label">E-mailadres</label>
                    <input type="email" name="email" placeholder="Optioneel" autocomplete="email"/>
                    </div>
                    

<h2>Bezorgadres</h2>

<div>
                        <label>Postcode</label>
                        <input type="text" name="postcode" maxlength="6" minlenght="6" placeholder="Verplicht,bijv: 1100AA" autocomplete="postal-code" required />
                    </div>

<div>
                        <label>Huisnr</label>
                        <input type="text" name="huisnr" maxlength="10" placeholder="Verplicht" required />
                    </div>
                    
    <div>
                        <label>Straatnaam</label>
                        <input type="text" name="straatnaam" maxlength="100" placeholder="Verplicht" required />
                    </div>
                    
    <div>
                            <label>Woonplaats</label>
                            <input type="text" name="woonplaats" maxlength="50" placeholder="Verplicht" autocomplete="address-level2" required />
                        </div>

        <div>
                            <label>Gewenste tijdstip</label>
                            <input type="datetime-local" name="datumtijd"  pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}" min="2020-02-01T00:00"required />
                        </div>
                        
                <div>
                            <label>Heeft u opmerkingen voor uw bestelling?</label>
                            <input type="text" name="bestelgegevens" maxlength="100000" rows="5"/>
                        </div>
        <button type="submit" name="bestel" value="bestel">Bestel</button></br>
                    </form>
                            <?

  
  ?>

[/code/
Gewijzigd op 30/03/2020 00:39:45 door Gijs Marien
 

Pagina: « vorige 1 2 3 volgende »



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.