Autor Zpráva
moskyt
Profil
Zdravím,

Chci požádat o radu. Mám středně pokročilé znalosti php a nevím si rady s jednou věcí.

Mám zpracovaný systém na tisk složenek a tiketů pro podání Českou poštou. Mám několik eshopů kdy z každého si stahuji xml obsahující údaje k objednávkám. Obsah každého xml si načtu do proměnné a dále s ním pracuji, rozdělím si jednotlivé údaje do dílčích proměnných a následně mám udělaný výstup do html kde mám jednoduše na každém řádku jméno zákazníka a vedle něj odkazy F, S, T. Potom když kliknu na F tak tento odkaz vede například na faktura.php?jmeno=Jan Novak&cenazbozi=1000&mena=CZK&postovne=99

Takže do souboru faktura.php předávám odkazem obsahy proměnných, které se mi následně vypíší ve faktuře.

Teď ale potřebuji data jednotlivých objednávek vyexportovat do xml, abych si je mohl následně naimportovat do systému České pošty. Problém je v tom, že výpis objednávek mám řešený jako html a není to interaktivní. Potřeboval bych mít u každé objednávky ideálně zatržítko, s tím že bych potom zatrhnul objednávky které chci exportovat a dále kliknul na tlačítko export a data z daných objednávek se vypsala do xml výstupu. Nechci to řešit nějak složitě přes mysql, spíše bych to chtěl mít jednoduše přes jeden php soubor a předávání proměnných.

Uvažoval jsem, že bych u těch zatržítek u každé objednávky měl u input tagu parametr name s daty dané objednávky a dál je poslal do dalšího php souboru, který by vygeneroval xml. Pokud vím, tak prvky z formuláře se dají dál předat přes GET nebo tak něco. Nejsem si ale jistý jak by to fungovalo, když potřebuji ty data předávat z více objendávek.

Tak se chci zeptat zda by někdo poradil jakým směrem to řešit.

Předem díky.


Ještě doplnění. Ono se to blbě vysvětluje. Když to zjednoduším, potřebuji předat data mezi stránkami s tím, že na zdrojové stránce mám na každém řádku nějaká data a potřebuji si na této stránce vybrat určité řádky třeba formou zatvrhnutí zatržítka na daných řádcích a ty předat dále do další stránky.
pcmanik
Profil
moskyt:
Objednávky máš predsa v DB, tak prečo nepredáš tomu php skriptu ktorý bude generovať to xml len id objednávky (pole objednávok) a on nech si už z DB vytiahne potrebné?
moskyt
Profil
Protoze mam vice eshopu na ruznych systemech a ruznych domenach.
Kajman
Profil
Kolem řádků se zákazníky můžete udělat <form method="POST"> a na každém řádku si dáte checkbox a skryté inputy k přenosu. Na řádku 42 např.
<input type="checkbox" name="zpracuj[42]">
<input type="hidden"   name="jmeno[42]"     value="Jan Novak">
<input type="hidden"   name="cenazbozi[42]" value="1000">
...
Pak stačí formulář odeslat a zpracovat indexy pole zpracuj. Něco jako

foreach($_POST["zpracuj"] as $radek => $hodnota)
{
  echo $_POST["jmeno"][$radek];
  echo $_POST["cenazbozi"][$radek];
  ...
}
moskyt
Profil
Kajman > Paráda, to je přesně co hledám. Díky za podnět.
moskyt
Profil
Narazil jsem ještě na jeden problém. Potřebuji mít možnost zpracovat i starší objednávky. Je tam ale nějaké omezení, že pokud je těch řádků více jak 100 již se ty data neodesílají. Poslední checkbox, který se odešle je <input type="checkbox" name="zpracuj[99]"> a další s vyššími čísly již nikoliv. Není tam nějaký limit, který by se dal povolit?
Kajman
Profil
Bude to omezené limitem pro celkový počet proměnných v POST požadavku
php.net/manual/en/info.configuration.php#ini.max-input-vars

Buď nastavit v konfiguraci apache nebo v .htaccess vyšší limit. Nebo si pomoci javascriptem a disablovat inputy z řádků, kde není zatržený checkbox, aby se posílaly jen údaje k zatrhnutým věcem a nepotřebné údaje na server nešly.
Tomášeek
Profil
moskyt:
To jsi narazil na limit v konfiguraci PHP, pravděpodobně nějaký max_input_vars nebo tak něco.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: