Door
Frits van Leeuwen
op 08-10-2023 23:05
gewijzigd op 01-11-2023 18:59
7.977 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.
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.
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.
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.
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()