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.

Groet
Pascal.
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.
@Ben: zo te zien gaat het alleen om de (uniek) Name1. Dan heb je dus twee mogelijkheden:

SELECT DISTINCT Name1 FROM specs WHERE Active = 'y'
of
SELECT Name1 FROM specs WHERE Active = 'y' group by Name1
Yup, maar dan moet die GROUP BY uit de variant zoals hij de query heeft. SELECT * met GROUP BY is dodelijk.
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.
op het einde van mijn formulier heb ik .:

//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?

Oke even hier weer terug.

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>


Maar op mijn vraag dus, mag ik ook dit?

<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.
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.
mmm, durf het haast niet te vragen, hoe moet dat dan?

Reageren