Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

PHP – vložení dat z AJAX do databáze

Sashaa
verified
rating uzivatele
(18 hodnocení)
19. 11. 2021 16:51:32
Zdravím,
mám zde obsah, který se načítá skrze AJAX načtení:
a zde je formulář:
jenže když uložím do databáze, tak se neuloží celý obsah formuláře, ale jen dejme tomu "test1"
Je to působeno tím, že se ten formulář do hlavního souboru načítá skrze AJAX a tak ta data z formuláře neukládají do databáze všechny, ale jen něco... zkoušel jsem přesunout PHP kod na ukládání do databáze přímo do AJAX souboru, kde je i ten formulář, ale nic to neudělalo...
Nevíte jak mám provést, aby se ukládali všechna data z formuláře?
Děkují
Vahan
---------- Příspěvek doplněn 19.11.2021 v 22:39 ----------
Tak jsem zjistil, že to není chyba v ajaxu, ale že to nejde ani zvlašt ukladat hromadná data do databaze...
Zkoušel jsem tuto metodu a zatím se mi nedaří najít řešení:
formulář:
---------- Příspěvek doplněn 19.11.2021 v 23:30 ----------
Dobrý tak už jsem to vyřešil :)
přikládám kód, kdyby někdo měl stejný problém:
19. 11. 2021 16:51:32
https://webtrh.cz/diskuse/php-vlozeni-dat-z-ajax-do-databaze/#reply1494125
crs
verified
rating uzivatele
(1 hodnocení)
22. 11. 2021 17:09:12
Ano, pokud do formuláře vkládáš prvky se jménem končícím "[]",
pak se vloží jako pole s číselným indexem začínajícím od 0 (v některých jiných jazycích se tomu říká hash/pole). Pokud se budeš snažit pole vložit do databáze, skončí to pravděpodobně chybou nebo nebo neočekávanou hodnotou.
Pokud je počet vložených prvků všude stejný, pak jde procházet jedno pole a použít jeho index pro přístup ke všem.
Samozřejmě, měl bys nejdřív kontrolovat, jestli všechna pole a všechny jejich prvky existují.
Dále ke zdrojovému kódu:
- někde předpokládáš, že indexy k jednomu poli budou číselné a po sobě jdoucí; ve formuláři ti ale může někdo vložit cokoli a pak tvůj kód může hodit chybovou hlášku, která odhalí další slabosti; tedy: místo for() s count() bych zde použil foreach()
- místo if (isset($_POST)) { bych ještě testoval hodnotu té proměnné a na základě ní bych se nějak rozhodoval.
- do předchozí podmínky bych přidal i test, jestli existují všechny proměnné, co chceš zpracovávat, jestli jsou to pole, jestli mají číselné indexy jdoucí postupně od nuly výše a jestli mají stejný počet prvků ( > 0)
- od PHP, verze 7, můžeš vyžít operátor ??
- před foreach() bych zkontroloval, jestli proměnná je pole
- (jak jsem říkal výše), testoval bych i jestli další proměnné, k nimž přistupuješ přes index, tak jestli jejich prvky existují (zrovna tebe nejspíš nikdo hackovat nebude, ale: z principu)
- SQL injection - nastudovat! :)
- komunikace challenge-response - ditto
22. 11. 2021 17:09:12
https://webtrh.cz/diskuse/php-vlozeni-dat-z-ajax-do-databaze/#reply1494124
Pro odpověď se přihlašte.
Přihlásit