Door
Frits van Leeuwen
op 08-10-2023 23:05
gewijzigd op 01-11-2023 18:59
7.976 views
Hallo allemaal,
Ik heb een php bestand met daar in een gegenereerde lijst. Het bevat veen x aantal regels vanuit een database tabel(1).
Iedere regel bevat een form. En op dat form heb ik een hidden id. Die gebruik ik om een record te kunnen selecteren.
Maar op ieder form heb ik ook een drop-down veld/lijst. Deze is gegenereerd uit een andere database tabel(2). De id daarvan wil ik opslaan in tabel(1).
Hiervoor wil ik een MySQLi commando gebruiken met het SQL statement UPDATE.
Maar mijn vraag is nu, hoe kan ik query direct starten als ik mijn keuze heb gemaakt in de dropdown. Ik wil dan eigenlijk geen ander knopje hoeven in te drukken.
En de Javascript code. Vergeet niet jQuery toe te voegen.
$(document).ready(function() {
$('#selectbox').change(function() {
// Haal de geselecteerde waarde op
var selectedValue = $(this).val();
// Voer een AJAX-verzoek uit met de geselecteerde waarde als GET-parameter
$.ajax({
url: 'ajax_select.php',
type: 'GET',
data: { option: selectedValue },
dataType: 'json', // Het verwachte datatype van de respons
success: function(data) {
// Verwerk de succesvolle respons hier
$('#result').html('De request is met succes uitgevoerd: ' + JSON.stringify(data));
},
error: function(xhr, status, error) {
alert('Fout bij het uitvoeren van de AJAX-request: ' + error);
}
});
});
});
Ik raad wel aan om in je ajax_select.php goede controle te bouwen op de invoervalidatie. Een UPDATE-query moet hopelijk geen probleem zijn voor je. En maak ook goede foutafhandeling aan de hand van je return-waarde bij je succes-event.
- Ariën - bedankt voor de snelle reactie.
Ik kan er nu niet direct mee aan de slag, maar ik hoop dat morgen wel te kunnen. Mijn FORM is met $_POST Is dat geen probleem? Ik zie immers dat je GET gebruikt in de code.
Ik voeg die code op elke regel in, zodat ik een HTML tabel kan genereren.
Dat werkt prima. Maar als ik dan de volgende code er in zet start de pagina niet.
$(document).ready(function() {
$('#verpakkingen').change(function() {
// Haal de geselecteerde waarde op
var selectedValue = $(this).val();
// Voer een AJAX-verzoek uit met de geselecteerde waarde als GET-parameter
$.ajax({
url: 'necessary_packaging.php',
type: 'POST',
data: { option: selectedValue },
dataType: 'json', // Het verwachte datatype van de respons
success: function(data) {
// Verwerk de succesvolle respons hier
$('#resultselect_necessary_packaging').html('De request is met succes uitgevoerd: ' + JSON.stringify(data));
},
error: function(xhr, status, error) {
alert('Fout bij het uitvoeren van de AJAX-request: ' + error);
}
});
});
});
Verder heb ik deze code er in staan om afte vangen wat er moet gebeuren als de dropdown gebruikt wordt. (maar ik heb nu wel het vermoede dat het anders moet)
if(isset($_POST['verpakkingen'])){
$id = $_POST['id'];
$id_packing_choosen=$_POST['verpakkingen'];
$query_update_necessary_packaging = "UPDATE prstshp_collect_productstype_packing SET id_packing='$id_packing_choosen' WHERE id = '$id';";
// Voer de query uit
$result_update_necessary_packaging = mysqli_query($con, $query_update_necessary_packaging);
$id = "";
$query_update_necessary_packaging = "";
echo "<meta http-equiv='refresh' content='0'>";
}
Ik heb alles in 1 bestand staan. Zonder de jquery code start de pagina en zie ik netjes de tabel met overal het drop-down veld er bij. Ik kan daar een selectie maken, maar na verversen van de pagina is dat weer weg.
Is de volgorde van belang waarin ik de boel open?
De volgende 2 regels heb ik staan in de HTML header. Daarmee laad ik toch de jquery?
Persoonlijk en professioneel hekel ik dergelijke CDNs.
Er zijn zelfs speciale populaire browserplugins tegen die CDN's, zoals Decentralyyes.
En met reden, want jQuery.com is van een anoniem bedrijf in California, in de VS.
Dan geldt wederom dat Europa er geen verdrag meer mee heeft, sinds 'Safe Harbour' en 'Privacy Shield', dus je begeeft je juridisch op dun ijs.
Ik zou het ten alle tijde afraden.
De workaround is simpel, gewoon zelf de laatste versie downloaden en via je eigen server hosten, dan is het hele probleem opgelost. Geldt ook voor al die gratis lettertypen in die 'gratis' Wordpress templates. Gewoon niet doen. Is slecht.