Dropdown vraag na het vullen met sql gegevens.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Pascal Schuffelers

Pascal Schuffelers

14/08/2018 06:20:01
Quote Anchor link
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.:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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.
Gewijzigd op 14/08/2018 06:21:51 door Pascal Schuffelers
 
PHP hulp

PHP hulp

18/07/2019 01:24:36
 
- Ariën -
Beheerder

- Ariën -

14/08/2018 08:25:07
Quote Anchor link
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.
 
Rob Doemaarwat

Rob Doemaarwat

14/08/2018 09:14:25
Quote Anchor link
@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).
 
Ben van Velzen

Ben van Velzen

14/08/2018 10:39:35
Quote Anchor link
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.
 
Rob Doemaarwat

Rob Doemaarwat

14/08/2018 10:45:47
Quote Anchor link
@Ben: zo te zien gaat het alleen om de (uniek) Name1. Dan heb je dus twee mogelijkheden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT DISTINCT Name1 FROM specs WHERE Active = 'y'
of
SELECT Name1 FROM specs WHERE Active = 'y' group by Name1
 
Ben van Velzen

Ben van Velzen

14/08/2018 11:04:14
Quote Anchor link
Yup, maar dan moet die GROUP BY uit de variant zoals hij de query heeft. SELECT * met GROUP BY is dodelijk.
Gewijzigd op 14/08/2018 11:06:54 door Ben van Velzen
 
Thomas van den Heuvel

Thomas van den Heuvel

14/08/2018 13:57:45
Quote Anchor link
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.
 
Pascal Schuffelers

Pascal Schuffelers

14/08/2018 17:21:09
Quote Anchor link
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?
Gewijzigd op 14/08/2018 17:23:01 door Pascal Schuffelers
 
Pascal Schuffelers

Pascal Schuffelers

17/08/2018 07:57:14
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
function OnSelectionChange()
{
alert("OK IT WORKS");
}
</script>


Maar op mijn vraag dus, mag ik ook dit?
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
<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
 
- Ariën -
Beheerder

- Ariën -

17/08/2018 08:09:36
Quote Anchor link
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.
Gewijzigd op 17/08/2018 08:13:38 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

17/08/2018 08:15:57
Quote Anchor link
mmm, durf het haast niet te vragen, hoe moet dat dan?
 
- Ariën -
Beheerder

- Ariën -

17/08/2018 08:19:59
Quote Anchor link
Google is gelukkig altijd handig in het vinden van een oplossing:
https://www.w3schools.com/xml/ajax_intro.asp

Of als je liever het jQuery framework gebruikt:
https://www.w3schools.com/jquery/ajax_ajax.asp
 
Pascal Schuffelers

Pascal Schuffelers

17/08/2018 08:32:59
Quote Anchor link
Oke ik heb du dit even geprobeerd.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<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?
 
- Ariën -
Beheerder

- Ariën -

17/08/2018 08:40:51
Quote Anchor link
Ik zou dus eerst binnen het click-event een $.ajax() request uitvoeren naar je serverside script. De teruggeven waarde kan je dan verwerken in JavaScript. En daar vandaan weer in in je HTML plaatsen.
Gewijzigd op 17/08/2018 08:48:29 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

17/08/2018 08:49:57
Quote Anchor link
MMMM ik dacht even dit klein ontbrekende gedeelte op mijn pagina zo te kunnen piepen maar zit er flink weer naast.

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
 
- Ariën -
Beheerder

- Ariën -

17/08/2018 08:53:18
Quote Anchor link
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.
 
Pascal Schuffelers

Pascal Schuffelers

17/08/2018 09:05:39
Quote Anchor link
Nee moet in realtime , niet na een refresh.

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
 
Adoptive Solution

Adoptive Solution

17/08/2018 09:17:59
Quote Anchor link
Ik heb een variant daarop :

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
 
Pascal Schuffelers

Pascal Schuffelers

17/08/2018 09:20:38
Quote Anchor link
Oke zal dat maar eens weer doornemen, alleen dan wil ik die gegevens wat hij toont in vars steken zodat hij die in tab3 kan tonen.


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
 
- Ariën -
Beheerder

- Ariën -

17/08/2018 10:27:16
Quote Anchor link
Blijven volhouden! Er zijn een hoop voorbeelden gegeven, en waar je vastloopt zijn uiteraard ook weer oplossingen op te vinden, plus onze hulp.

Phpzag, die genoemd is legt het prima uit.
Gewijzigd op 17/08/2018 10:28:51 door - Ariën -
 
Ramon van Dongen

Ramon van Dongen

17/08/2018 11:57:30
Quote Anchor link
Zoek anders eens op Chained Select. Wellicht kun je daar iets mee.
 

Pagina: 1 2 3 4 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.