Automatické doplnění části formuláře daty z databáze

kruty
Člen | 5
+
0
-

Zdravím,
začínám s nette (respektive obecně toto o programování až tak moc nevím) a potřeboval bych trochu nakopnout.
Mám formulář do kterého bych potřeboval dynamicky doplňovat data z databáze podle vyplněných hodnot ve formuláři…
Například tedy faktura, kde do pole odběratel zadán ID klienta, a do formuláře se mi už automaticky přenese z databáze Adresa, název atd…

Nějak googlim všude možně, ale asi špatně…
Nečekám, že mi tady někdo rozepíše kompletně celé kódy ale spíš uvítám třeba nějaké odkazy na nějaká taková řešení, příklady atd…kde bych to mohl trochu okoukat.

Díky moc.

Šaman
Člen | 2667
+
0
-

Tohle budeš muset řešit AJAXem. Přincipiálně zkus najít nějaké řešení závislých selectboxů, to co chceš ty je obdobné. Není to triviální a jestli nemáš zkušenosti s programováním v Nette ani obecně, tak to není úloha vhodná pro začátečníky.

Phalanx
Člen | 310
+
+1
-

Doplním Šamana a zkusím vytvořit úplně jednoduchý příklad:

Řekněme, že zákazníka ve formuláři vybíráš ze selectu. Po vybrání pošleš AJAX požadavek na server, kde si načteš data a vykreslíš je zpět do formulářových polí.

$('#customer').onChange(function(e) {

    // e.preventDefault(); - může se hodit

    $.nette.ajax({
        type: "POST",
        url: {plink loadCustomer!},
        data: { customer_id: $('#customer').val() },
        success: function (data) {
            alert("ok");
			// nastavíš data do inputů
            $('#customer_email').val(data.email);
        },
        error: function (err) {
            alert('ajax selhal');
        }

    });
});

Na straně PHP

<?php
public function handleLoadCustomer(){
	$id = $this->getParameter('customer_id');
	$data = []; // načti si zákazníka z databáze pro dané $id
    $this->sendJson($data);

}
?>

Editoval Phalanx (16. 1. 2019 8:20)

asinkan
Člen | 38
+
0
-

Phalanx napsal(a):

Doplním Šamana a zkusím vytvořit úplně jednoduchý příklad:

Řekněme, že zákazníka ve formuláři vybíráš ze selectu. Po vybrání pošleš AJAX požadavek na server, kde si načteš data a vykreslíš je zpět do formulářových polí.

$('#customer').onChange(function(e) {

    // e.preventDefault(); - může se hodit

    $.nette.ajax({
        type: "POST",
        url: {plink loadCustomer!},
        data: { customer_id: $('#customer').val() },
        success: function (data) {
            alert("ok");
			// nastavíš data do inputů
            $('#customer_email').val(data.email);
        },
        error: function (err) {
            alert('ajax selhal');
        }

    });
});

Na straně PHP

<?php
public function handleLoadCustomer(){
	$id = $this->getParameter('customer_id');
	$data = []; // načti si zákazníka z databáze pro dané $id
    $this->sendJson($data);

}
?>

ten plink je co? a proc ten vykricnik?

CZechBoY
Člen | 3608
+
0
-

plink je makro na odkaz pomocí presenteru (tedy pokud si v komponentě tak to udělá odkaz na akci/handle presenteru)
vykřičník je odkaz na handle/signál, namísto klasické akce