Dropdown vraag na het vullen met sql gegevens.
Ik ben niet super in php , maar ik probeer uiteraard het zelf, alleen helaas kom ik uit sommige dingen niet wijs.
Ik vul een dropdown menu met gegevens uit mijn sql database, zie onderstaande code.:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Nu zou ik graag willen zien dat als ik iets kies, dat hij met de gekozen naam daarmee de gegevens uit leest.
Dus kies ik bv. appel uit die dropdown dat hij dan alles appelen uit een andere database gaat uitlezen.
Het zal een peule schil zijn denk ik, maar ben zelf al 3 dagen bezig , tot ik toch maar hier naar jullie hulp vraag.
Groet
Pascal.
Gewijzigd op 14/08/2018 06:21:51 door Pascal Schuffelers
Als ze onder dezelfde inlognaam een wachtwoord bevinden kan je switchen tussen databases door de databasenaam voor je tabel te plaatsen, gevolgd door een punt.
Dus Database3.specs als tabelnaam.
Maar los liever op dat je meerdere databases gebruikt, en lees wat informatie door over databasenormalisatie.
@Pascal: Als je deze <select> in een <form> plaatst, kun je het formulier weer naar de server "submitten" (versturen - via een <input type="submit" value="Opslaan"> knop). In je PHP heb je dan in $_REQUEST['prod'] de gemaakt keuze staan. Met deze keuze kun je dan de gewenste gegevens ("appels") ophalen.
Daarvoor heb je dan wel een volledige pagina-refresh nodig (de hele pagina wordt herladen), maar het is de snelste en eenvoudigste manier. Wil je het mooier, dan moet je het "op de achtergrond" via "ajax" doen, maar dat is meer iets voor een volgende les (ik zou het eerst zo onder de knie krijgen).
En als we dan toch bezig zijn, corrigeer die query ook eens. Een GROUP BY zonder aggregate levert zinloze resultaten op. Het lijkt op het oog goed in veel gevallen maar vroeg of laat ga je hier problemen krijgen.
@Ben: zo te zien gaat het alleen om de (uniek) Name1. Dan heb je dus twee mogelijkheden:
Gewijzigd op 14/08/2018 11:06:54 door Ben van Velzen
Op het moment dat het selectmenu (op de webserver) is gegenereerd en naar de browser (aan de client zijde) is gestuurd is het werk van PHP klaar. Als je dus wilt dat PHP reageert op (nieuwe) invoer, dan zul je weer op een of andere manier informatie naar de webserver moeten sturen zodat PHP hier weer mee aan de slag kan gaan, zoals @Rob al min of meer aangaf.
//hier worden de variabelen van het briefje gegenereerd!!!
if (isset($_POST['submit'])){
$_SESSION['varname'] = $prod;
en verder.
Ik weet dat jullie het goed bedoelen om foutjes eruit te halen, maar doe dit het liefste achteraf of het moeten grove fouten zijn.
@Rob Doemaarwat. Als ik het goed begrijp, moet dus die $_REQUEST['prod'] in een nieuwe mysqli regel en mag ik dus $_SESSION niet gebruiken?
Gewijzigd op 14/08/2018 17:23:01 door Pascal Schuffelers
Ik heb dus een dropdown op mijn formulier staan die gevuld word vanuit een Mysqli tabel.
Nu wil ik dus dat als een keuze word gemaakt uit die samengestelde dropdown, dat die gekozen waarde gebruikt word om verfijnde gegevens uit die tabel gehaald word.
Nu heb ik dus getest met eenvoudige code op een lege pagina , door een dropdown te plaatsen met wat namen in en als ik dan iets kies dat ik een melding krijg en dat werkt.
Die melding wil ik dus vervangen door het oproepen van die verfijnde mysqli oproep.
Mag ik in een java script php plaatsen?
Dus wat ik bedoel is het volgende.
Onderstaande geeft mij een melding als ik van die samengestelde dropdown een keuze maak.
Maar op mijn vraag dus, mag ik ook dit?
Code (php)
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
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
<script>
function OnSelectionChange()
{
<?php
$receptnames = $_POST["$receptnames"];
$conn = new mysqli("localhost", "xxx", "xxx", "xxx");
$qry = "SELECT Id, Nr, Version, Date1, Active, Name1, Spec, Conditions, Unit, Nominal, low, High, Remarks, F14, F15 FROM specs WHERE Name1 = '$receptnames'";
$result = $conn->query($qry);
$details = mysqli_fetch_array($result);
$Nr = $details["Nr"];
$Version = $details["Version"];
$Date1 = $details["Date1"];
$Active = $details["Active"];
$Name1 = $details["Name1"];
$Spec = $details["Spec"];
$Conditions = $details["Conditions"];
$Unit = $details["Unit"];
$Nominal = $details["Nominal"];
$low = $details["low"];
$High = $details["High"];
$Remarks = $details["Remarks"];
$F14 = $details["F14"];
$F15 = $details["F15"];
?>
}
</script>
function OnSelectionChange()
{
<?php
$receptnames = $_POST["$receptnames"];
$conn = new mysqli("localhost", "xxx", "xxx", "xxx");
$qry = "SELECT Id, Nr, Version, Date1, Active, Name1, Spec, Conditions, Unit, Nominal, low, High, Remarks, F14, F15 FROM specs WHERE Name1 = '$receptnames'";
$result = $conn->query($qry);
$details = mysqli_fetch_array($result);
$Nr = $details["Nr"];
$Version = $details["Version"];
$Date1 = $details["Date1"];
$Active = $details["Active"];
$Name1 = $details["Name1"];
$Spec = $details["Spec"];
$Conditions = $details["Conditions"];
$Unit = $details["Unit"];
$Nominal = $details["Nominal"];
$low = $details["low"];
$High = $details["High"];
$Remarks = $details["Remarks"];
$F14 = $details["F14"];
$F15 = $details["F15"];
?>
}
</script>
waarbij receptnames de gekozen waarde heeft van die samengestelde dropdown.
Ook heb ik geen opvang voor een foutmelding in die sql want dit is maar een testje.
Gewijzigd op 17/08/2018 08:03:39 door Pascal Schuffelers
De PHP-code wordt dan direct bij het laden van de pagina uitgevoerd.
Wat wel helpt is een Ajax Request in javascript. Dan kan je wel server-side scripts aanroepen.
Gewijzigd op 17/08/2018 08:13:38 door - Ariën -
mmm, durf het haast niet te vragen, hoe moet dat dan?
https://www.w3schools.com/xml/ajax_intro.asp
Of als je liever het jQuery framework gebruikt:
https://www.w3schools.com/jquery/ajax_ajax.asp
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<script>
$(document).ready(function(){
$("select").click(function(){
alert("OK IT WORKS");
});
});
</script>
$(document).ready(function(){
$("select").click(function(){
alert("OK IT WORKS");
});
});
</script>
Maar zodra ik op die dropdown klik krijg ik niet eens de kans om iets te kiezen of hij komt met die melding.
Hoe krijg ik dat hij in die alert de gekozen dropdown item laat zien?
Gewijzigd op 17/08/2018 08:48:29 door - Ariën -
Wat mijn bedoeling was, iemand kiest uit de samengestelde dropdown het product en als hij dat geselecteerd heeft word via een mysqli command van dat product de gegevens ingelezen en in een tapblad op diezelfde pagina weergegeven als hij daarop zou klikken, dus zou altijd mee ingelezen moeten worden al zou hij niet erop klikken.
Maar als ik via google kijk zie ik alleen maar voorbeelden waarbij ze meerdere pagina's gebruiken en dat is eigenlijk niet wat ik wil.
Gewijzigd op 17/08/2018 08:51:29 door Pascal Schuffelers
Het ligt eraan of dat ophalen van de gegevens realtime moet gebeuren, of na een refresh. In het laatste geval is een AJAX-request niet nodig als je met document.location dan naar de juiste URL gaat.
Ik was net even deze pagina aan het bekijken.: https://www.phpzag.com/ajax-drop-down-selection-data-load-with-php-mysql/
Is dit zoiets dat ik moet gaan gebruiken?
Het huilen staat mij meer bij als het lachen, even doen en klaar, helaas :'(
Gewijzigd op 17/08/2018 09:07:13 door Pascal Schuffelers
http://adoptive.esy.es/dynamic_select/
De JavaScript staat in de broncode.
En hier een andere variant :
https://www.w3schools.com/php/php_ajax_database.asp
Zo te zien was dit enkel dingetje te hoog gegrepen, jammer helaas.
Dacht een script gedeelte te hoeven plaatsen die kijk van dat is geselecteerd , lees dan sqli tabel uit met die naam en stop waarden in vars en klaar :S
Tja probeer het vandaag nog en anders helaas dan stop ik ermee want zonder dat stukje sta ik volledig stop.
Ben al blij dat jullie toch zo goed mee helpen.
Gewijzigd op 17/08/2018 09:36:09 door Pascal Schuffelers
Zoek anders eens op Chained Select. Wellicht kun je daar iets mee.