Als beginnend en 'zelf-aanlerend' PHP gebruiker probeer ik het volgende te bereiken:
Ik gebruik een applicatie die data naar een webserver kan sturen middels een URL met variabelen. De data die in deze variabelen zit, wil ik graag opslaan in een database. De variabelen worden door de gebruiker van de applicatie ingevoerd. De applicatie werkt op basis van .xml bestanden om pagina's weer te geven in een desktop GUI.
Hierin kan ik ook berichten definieren, met een URL waar de data heen moet:
In bovenstaand voorbeeld zijn 'Firstname', 'Lastname' en 'Role' de columns in mijn database tabel, en de waarden $disfname, $dislname en $disrole de variabelen die door de gebruiker in de GUI worden ingevuld en dus in de database tabel moeten worden gesubmit.
Het is me gelukt om een script te schrijven (test.php) en als ik daarin variabelen declareer, lukt het me om de waarden die daarin staan te inserten in de database tabel, maar ik mis nog het stukje om data van een 'externe' URL te gebruiken. Ik ben al een week hiermee bezig en het wil me maar niet lukken. Onderstaand de code van mijn test.php script.
Ik ben overigens niet opzoek naar een kant-en-klaar antwoord (als dat al mogelijk is..) maar liever een paar aanwijzingen. Ik probeer het mezelf tenslotte allemaal aan te leren :)
$stmt = $conn->prepare('insert into tabel values ($_GET["var_1"]
Dit haalt de waarden uit de http aanroep van de app. De URL met variabelen moet dan de bijpassende aanroep doen:
http://jouw_pagina.php?var_1='12345'
var_1 stuur je dan met een ; separated string of als meedere get variabelen
Een en ander afhankelijk van hoe je app de data verzend. Kan je dat sturen of is het een vast formaat?
Dank voor je reply. Dit lijkt inderdaad een waardevolle functie te (kunnen) zijn. Dat zou betekenen dat ik de waarde(s) die deze functie van de URL maakt in een array moet zetten om die vervolgens verderop in het .php bestand op de server in een SQL statement moet plaatsen?
[size=xsmall]Toevoeging op 24/01/2021 11:10:55:[/size]
Aad B op 23/01/2021 21:29:24
Misschien simpel iets met GET params:
$stmt = $conn->prepare('insert into tabel values ($_GET["var_1"]
Dit haalt de waarden uit de http aanroep van de app. De URL met variabelen moet dan de bijpassende aanroep doen:
http://jouw_pagina.php?var_1='12345'
var_1 stuur je dan met een ; separated string of als meedere get variabelen
Een en ander afhankelijk van hoe je app de data verzend. Kan je dat sturen of is het een vast formaat?
Goedemorgen Aad,
Dit lijkt mij inderdaad een stuk eenvoudiger. De app die de data submit via de http request vereist alleen wel dat de variabelen tussen {} staan (en volgens mij wordt php daar niet zo blij van??) en dat variabelen gescheiden worden door
&
. Ik kan de URL zelf bepalen in een XML bestand (zie mijn eerste bericht) mits ik mij aan de bovengenoemde beperkingen houdt van de ${} en de &.
Er zijn verschillende soorten berichten, maar ik kan zelf bepalen in welke volgorde de data (maw de variabelen) in de URL staan. Ik zit nu alleen naar mijn php script te kijken, en vermoed dat ik een variabele mis waardoor de SQL query niet werkt. Bij het binden van de parameters noem ik '$FirstName', '$LastName' en 'Role', terwijl de values in de SQL query als ? staan. Wanneer ik in mijn browser 'http://127.0.0.1/script.php?FirstName=Berend&LastName=Botje&Role=Kapitein' invoer, krijg ik netjes de echo 'Nieuwe regel toegevoegd!' te zien, maar in mijn database gebeurt helemaal niets..
Hartstikke interessant en leuk om mezelf PHP, XML en SQL aan te leren, maar soms ook wel eens frustrerend ;-)
Yes het is me eindelijk gelukt!
Ik heb een nieuw php script geschreven met behulp van bronnen op het internet, en enkele aanpassingen in het xml bestand van de applicatie die de data verstuurd middels de HTTP request.
Even ter referentie mijn 'nieuwe' code, mocht iemand anders ooit met een vergelijkbaar issue zitten:
if(mysqli_stmt_execute($stmt)){
echo "Nieuwe regel toegevoegd!.";
} else{
echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
}
} else{
echo "ERROR: Could not prepare query: $sql. " . mysqli_error($link);
}
// Close statement
mysqli_stmt_close($stmt);
// Close connection
mysqli_close($link);
?>
En nu lekker verder spelen, dank beiden voor jullie input en hulp!
Matts
?Onbekende gebruiker
24-01-2021 15:23
Goed gedaan met prepared statements!
Nog 1 advies: zet je PHP bestand niet in de webroot van de webserver, mocht die ooit verkeerd geconfigureerd zijn en PHP als tekst laten zien, dan weet niet iedereen je wachtwoord.
Ja daar had ik al wel over nagedacht, maar toch bedankt voor de reminder :)
Voor nu werk ik lokaal met Xampp, van welke ik de connectie naar buiten toe volledig heb afgeknepen.