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.

ALvast vriendelijk bedankt.

Frits van Leeuwen
We zijn weer een stap verder de goede richting in.
Met de volgende code krijg ik in iedergeval op iedere regel een alert.

	<script src="https://geschenkenlaantje.nl/js/jquery/jquery-3.7.1.min.js" ></script>
	<script>
		$(document).ready(function() {
			$('.verpakkingen').change(function() {
				var selectedValue = $(this).val();

				// Voer een AJAX-verzoek uit met de geselecteerde waarde als POST-parameter
				$.ajax({
				  url: 'ajax_select.php',
				  type: 'POST',
				  data: { option: selectedValue },
				  dataType: 'json', // Het verwachte datatype van de respons
				  success: function(data) {
					// Verwerk de succesvolle respons hier
					$('#result_packings').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);
				  }
				});
			});
		});
	</script>


Alleen nu krijg ik als melding in de alert: Fout bij het uitvoeren van de AJAX-request:
verder staat er niets achter.

Maar natuurlijk zou het nog beter zijn als er een MYSQLi UPDATE uitgevoert wordt.
vermoedelijk geeft je ajax request geen (valide) json terug.

kijk in de netwerktab van je browser (in de buurt van je console scherm) wat de response dan was.

bijvoorbeeld leeg, een stuk html of een php danwel mysql error
Bedankt Ivo P
Ah..... daar zag ik al snel dat ik de url in ajax niet had aangepast.
Nu zie ik teminste wel de toevoeging bij de fout alert staan.

Unexpected token '<',"
<!doctype "... is not valid JSON

Ook deze fout heb ik er inmiddels uit gehaald. Maar helaas geen gegevens die bewaard blijven. Als ik nu mijn keuze maak in de drop-down lijst, verdwijnd deze weer als ik het scherm ververs.
Dan wordt de query niet uitgevoerd. Bouw dus foutafhandeling in op je query, en stuur een returnwaarde mee als het wel of niet gelukt is.
Klinkt logisch, maar ik heb geen idee hoe ik dat doe.
Niet zo heel lastig. Gewoon met if en else controleren wat de query doet.
En die output zie je in de response van je browser, waar je zoals hier gezegd is, je AJAX kan debuggen.

<?php
if(mysqli_query($conn,"UPDATE... SET... WHERE") {
echo "Geupdated";
} else {
echo "Niet geupdated: ".mysqli_error($conn);
?>
Zelf gebruik ik een Rest client om dit te testen. Insomnia REST.

Dan bouw je apart je request op in het linker deel van het scherm, en na de SEND knop, zie je rechts de response.
Dan kun je 1 op 1 zien wat er gebeurt, of er in je json bericht rare teksten staan (geupdate en niet-geupdate is natuurlijk geen valide json, dus je krijgt een error in je aanroepende javascript)

Het is alleen wel even leren welke http-headers je mee moet sturen.
het liefst doe je dit als je niet ingelogd moet zijn, al kun je de cookie-headers ook nog wel onderscheppen in je browser.

Misschien niet voor beginners, maar je kunt er wel voordeel van hebben.
Dat zou een goede optie kunnen zijn, maar ik denk dat ik eerst wil weten of dat de query goed over komt. Want ik vermoed dat daar de boel al helemaal fout gaat.
In De UPDATE query wil ik eindigen met "WHERE ID=" en dan het id nummer dat ik in het aangeklikte formulier in een hidden veld heb geplaatst. De update zelf is alleen het id nummer dat uit de selectie rold plaatsen in id_packing.
Het is een eenvoudige query en dus ook makkelijk te controleren als ik hem ergens kan lezen.
Ja, probeer het eens uit. je kan hem zelfs in je response laten zien.
Als je de site live zet haal je dit er uiteindelijk wel uit. Want niemand hoeft wijzer te worden van je databaseindeling.
En vergeet niet te escapen met mysqli_real_escape_string()

Reageren