Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

SQL WHERE variabele PHP

Pagina: 1
Acties:

  • Daantju
  • Registratie: April 2014
  • Laatst online: 18-11 22:14
Goedenavond,

Ik loop vast met wat programmeerwerk. Ik heb een pagina met 3 Dropdown menu's, welke gegevens uit de database als value hebben.

Klant (Voornaam+achternaam)
Fiets (Merk+Model)
Framenummer (Altijd een enkele, maar ter controle).
Dit is de code van een van de dropdown's, en het werkt goed.

code:
1
2
3
4
5
6
7
    $query = "SELECT voornaam, achternaam FROM klant";
                $queryfiets = "SELECT merk, model FROM fiets";
                $queryframenr = "SELECT framenummer FROM fiets";
                
                $result = $link-> query($query);    
                $resultfiets = $link->query($queryfiets);   
                $resultframenr = $link->query($queryframenr);


PHP:
1
2
3
4
5
6
7
8
<?php echo '<select name="value">';                                          
                                echo '<option value="">Selecteer klant</option>';                   //Haalt achternamen op uit de database.
                                    while ($row = $result->fetch_object()) {
                                    echo '<option voornaam"' . $row->voornaam .'">';
                                    echo $row->voornaam;
                                echo'</option>';
                }
                              echo '</select>'; ?>



Maar nu mijn vraag, dropdown 1 (klant selectie) moet ik gewoon kunnen kiezen, maar dropdown 2 en 3 moeten variabel zijn op de eerste output. Dus, als ik een klant selecteer, moeten alleen de fietsen van de betreffende klant verschijnen, en als ik dan een fiets selecteer, verschijnt het specifieke framenummer.

Nou opzich niet zo heel lastig, want met SQL kan je gewoon een WHERE maken. In dit geval zou dat worden:

code:
1
 $queryfiets = "SELECT merk, model FROM fiets WHERE klantid= 1 ";


Maarja, dat is afhankelijk van het eerste dropdown menu, en hoe stop ik dat nou in een variabele, die ik dan weer kan oproepen bij de andere dropdown's. Ik weet dat het opvragen zoiets moet zijn

code:
1
 $queryfiets = "SELECT merk, model FROM fiets WHERE klantID = . $variabele";


maar waar ik dus nog niet achter ben, is :
of het wel slim is dat ik eerst de voornaam+achternaam uit de dropdown haal, maar daarna ga selecteren op klantID (is wel het enige unieke nummer)

Daarnaast, hoe regel ik nou dat hij de variabele vult met de data uit dropdown 1?

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 22:10

orf

Met Ajax kun je dat voor elkaar krijgen. Met Javascript zet je een change event handler op de eerste <select>. Met een Ajax request stuur je de geselecteerde waarde naar een PHP-script. Daar kun je de query doen met de Where-clause die je nu hebt.

Hier een tutorial om dit met jQuery te doen.

[ Voor 8% gewijzigd door orf op 31-12-2014 00:37 ]


  • Daantju
  • Registratie: April 2014
  • Laatst online: 18-11 22:14
Ahh.. Kan het ook met PHP? De andere talen vermijd ik liever.

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 22:10

orf

Je zult sowieso Javascript nodig hebben om bij een keuze de volgende <select> aan te passen. Je kunt minder Javascript gebruiken door de pagina te verversen op het moment dat de gebruiker een waarde selecteert, maar erg gebruiksvriendelijk wordt dat niet.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
orf schreef op woensdag 31 december 2014 @ 00:41:
maar erg gebruiksvriendelijk wordt dat niet.
Ach, ach. Dat valt ook wel weer mee. We hebben 't jaren zonder AJAX gedaan en als die pagina een beetje vlot is merk je er weinig van.

Iets anders:
PHP:
1
2
3
echo '<option voornaam"' . $row->voornaam .'">';
echo $row->voornaam;
echo'</option>';

Denk je er wel aan dat je hier even htmlentities/htmlspecialchars over de variabelen heen wil halen? Je hebt altijd grapjassen die als voornaam '<script>alert('boe!');</script>' invullen en daarmee heb je dus een XSS vulnerability waarmee mogelijk je sessie(cookie) gehijacked wordt e.d.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Daantju schreef op woensdag 31 december 2014 @ 00:39:
Ahh.. Kan het ook met PHP? De andere talen vermijd ik liever.
Dat is net zoiets als het advies om naar de VS te reizen via boot of vliegtuig in de wind te slaan en te vragen of het niet ook per auto kan. Andere vervoersmiddelen mijd je liever. ;)

Het kan met PHP. Sterker nog, PHP komt er linksom of rechtsom toch wel bij kijken. Maar als je het een beetje snappy wil maken voor je eindgebruiker schrijf je die paar regeltjes XHR-code, al dan niet in native JS/jQuery/Mootools/etc.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • LordSinclair
  • Registratie: Oktober 2014
  • Laatst online: 10:33
Belangrijk is om in het achterhoofd te houden dan php server side wordt uitgevoerd. Jij wilt aan de hand van de client side keuzes nieuwe data inladen. Dus de client moet opnieuw met de server communiceren. De manier om dit te doen is de laatste jaren jQuery (client side javascript). Zonder dat de client iets onderneemt gaat de server niet opeens nieuwe (en juiste) data terugsturen.

There's no need to kneel, I'm a very democratic sort of lord.


  • Daantju
  • Registratie: April 2014
  • Laatst online: 18-11 22:14
Okay dat is inderdaad logisch! Maargoed, blijft erg lastig voor me. Dit zijn de 3 dropdown's, en dit zal ik dus moeten verbinden. Ik wil inderdaad geen AJAX gebruiken, dan maar met een page refresh in Jquery.

Klant
PHP:
1
2
3
4
5
6
7
8
9
 
<?php echo '<select name="value">';                                          
                                echo '<option value="">Selecteer klant</option>';                   //Haalt achternamen op uit de database.
                                    while ($row = $result->fetch_object()) {
                                    echo '<option voornaam"' . $row->voornaam .'">';
                                    echo $row->voornaam;
                                echo'</option>';
                }
                              echo '</select>'; ?


Selecteer fiets/merk
PHP:
1
2
3
4
5
6
7
8
<?php echo '<select name="value">';                                          
                                echo '<option value="">Selecteer fiets</option>';                   //Haalt fietsen van klant op uit de database.
                                    while ($row = $resultfiets->fetch_object()) {
                                    echo '<option fiets"' . $row->merk .'">';
                                    echo $row->merk;
                                echo'</option>';
                }
                              echo '</select>'; ?>


PHP:
1
2
3
4
5
6
7
8
<?php echo '<select name="value">';                                          
                                echo '<option value="">Framenummer</option>';                   //Haalt framenummer van klant op uit de database.
                                    while ($row = $resultframenr->fetch_object()) {
                                    echo '<option framenummer"' . $row->framenummer .'">';
                                    echo $row->framenummer;
                                echo'</option>';
                }
                              echo '</select>'; ?>


Ik heb dit stukje gemaakt, maar hier geef ik alleen de wijziging door met een alert. Wie kan me opweg helpen? :)

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
<script type=''text/javascript">

$(document).ready(function() { 
 
   $("select").change(function(){
      alert("Veranderde waarde!!");
    });

});

</script>

  • LordSinclair
  • Registratie: Oktober 2014
  • Laatst online: 10:33

There's no need to kneel, I'm a very democratic sort of lord.


  • Donderpoes
  • Registratie: April 2011
  • Laatst online: 11-05 23:09
Kijk eens naar jQuery load().

Op je selectbox een onchange event die de load() aanroept.
Het muteren van je teruggekregen data is alleen erg lastig, maar ik vermoed dat je dit toch niet gaat doen.

[ Voor 29% gewijzigd door Donderpoes op 31-12-2014 10:31 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

LordSinclair schreef op woensdag 31 december 2014 @ 08:28:
De manier om dit te doen is de laatste jaren jQuery (client side javascript).
Fixed that for you. ;) Er is meer in javascriptland dan jQuery.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

Je kunt je formulier simpel versturen zodra je de waarde van de dropdowns veranderd door de 'onchange' waarde toe te voegen. Gebruiksvriendelijker in de zin dat je dan niet eerst op een knop hoeft te drukken als je de waarde veranderd.


code:
1
<select name="value" onchange="this.form.submit()">


Als dat gebeurt kun je de andere dropdowns weer voorzien van informatie die je met dat formulier verstuurd.

En om niet van het kastje naar de muur gestuurd te worden (in php bestanden) kun je gebruik maken van IF statements en FUNCTIONS om afzonderlijke code aan te spreken in 1 php bestand.
Daarnaast, hoe regel ik nou dat hij de variabele vult met de data uit dropdown 1?
Nou, met bovenstaand dus, maar ik vraag me af waar je die 1e dropdown initieel nou mee vult.
Je wilt een keuze maken uit de gehele lijst van klanten? Met een dropdown is dat alles behalve lekker werken.
Dat is nog te doen als je maar 10 klanten hebt (en eventueel oude klanten verplaats naar een archief). Maar als je toch zoekt op naam kun je beter een dynamisch zoekveld maken.

De naam is tenslotte iets dat je weet, en daar ga je op zoeken. Of je dat nu uit het hoofd doet en op de gok (een simpel input veld) of middels een keuze uit een dropdown (<select>) of checkbox, dan kun je het de gebruiker net zo makkelijk maken door een dynamisch zoekveld.

Zeg maar zoiets als op google of de spellingscontrole op je telefoon, als je de eerste letters van een woord (of in dit geval een klant) invoert.

Ik was ooit bezig met een systeem om boodschappen te plaatsen voor tijdens de lunch op het werk (er gaat meestal 1 iemand even brood e.d. halen voor bij de lunch).

Vul hier maar eens BROOD of KAAS in, dan begrijp je wat ik bedoel.

De informatie die rechts in beeld komt komt allemaal uit de database, je kunt hier dus gemakkelijk een snel overzicht aan hangen welke gegevens er allemaal aan een klant hangen, zoals adres gegevens of welke fiets te hebben. Of welke gegevens je dan ook wilt weten.

http://www.htmlblog.us/jquery-autocomplete

[ Voor 74% gewijzigd door BLACKfm op 31-12-2014 14:58 ]

Pagina: 1