Door
Pascal Schuffelers
op 14-08-2018 06:20
gewijzigd op 14-08-2018 06:21
8.463 views
Hallo allemaal,
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.:
<?php echo '<select name ="prod"><option = "">Selecteer Product</option>';
$sqli = "SELECT DISTINCT * FROM specs WHERE Active = 'y' group by Name1";
$result = mysqli_query($conn, $sqli);
while ($row = mysqli_fetch_array($result)) {
echo '<option>'.$row['Name1'].'</option>';
}
echo '</select>*';
?>
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.
Hoezo gebruik je meerdere databases? Dat lijkt mij niet handig.
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.
@Ariën: Ik neem aan dat Pascal met "database" gewoon "tabel" bedoelt. Die spraakverwarring zie je wel vaker.
@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.
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.
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.
function OnSelectionChange()
{
alert("OK IT WORKS");
}
</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.
Dat heeft geen nut, want JavaScript heeft geen weet van PHP, omdat dat al eerst op de server is uitgevoerd. En Javascript wordt door je browser uitgevoerd.
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.