Autor Zpráva
doveda
Profil *
omlouvám se za znovuotevření téma
před časem jsem se zde zeptal, jak lze odeslat pomocí jednoho inputu vícerozměrné pole hodnot

dostalo se mi odpovědi od peti a jak už je u něho zvykem tak plně fundované, ale jak se
říká - chytrýmu napověz, hloupýho kopni (to druhý je nejspíš můj případ)
-----------
odpověď peti:

tak jako prevest pole na retezec je
xxx = ('aa','bb','cc');
yyy = xxx.join("|");
--> yyy = "aa|bb|cc";
Pak to presunes do skryteho inputu a odesles GET nebo delsi retezec POST.

Nebo mas moznost JS HTTPrequest.

spojeni asociativniho pole:
zzz = {'a':0,'b':3,'c':2};
for (i in zzz)
{yyy+=i+"="+zzz[i]+"|";}
--> yyy = "a=0|b=3|c=2|";
yyy = yyy.sustring(0,yyy.length-2); //tusim, proste orezat posledni oddelovac
--> yyy = "a=0|b=3|c=2";


no a já se s tím už kolik dní trápím a odeslat se mi to ještě nepodařilo - nebyl by někdo z vás tak
shovívavej s tupečkem a nenapsal pokračování???? Myslím tím to odeslání inputem
venca12
Profil
Zdar, teda nevím co konkrétně chceš :), ale předpokládám, že chceš do phpka dostat z formuláře nějaké pole, takže jednoduchá teorie:

Když odešleš formulářem tento input třeba metodou post:
<input name="karel" />
tak si jeho hodnotu můžeš vyzvednout, například takto:
echo $_POST['karel'];
pokud si však budeš chtít karla vyzvednout jako jedno rozměrné pole o například dvou položkách, můžeš použít tento zápis:
<input name="karel[]" /><input name="karel[]" />
k prvnmu inputu (tzn. první hodnotě pole) potom přistoupíš třeba takto:
echo $_POST['karel'][0];
, ke druhé podobně:
echo $_POST['karel'][1];


Pokud budeš chtít víc rozměrů, můžeš použít zápis:
<input name="karel['bla']['ble']" />
a k tomu podobně:
echo $_POST['karel']['bla']['ble'];


Případně napiš konkrétní situaci, kterou potřebuješ vyřešit, protože z tvého dotazu (tohoto ani toho prvního, který jsem vyhledal) není zřejmé, co konkrétně požaduješ.
doveda
Profil *
Se mnou to je jak s kozou na ledě :)
Tak tu jednu hodnotu jsem odeslal. Pomocí události jsem načetl do inputu hodnotu 14, odeslal a v PHP přečet. To mi funguje.

<script>

A=14;
function ahoj()
{
document.all.karel.value=A;
}
</script>

<html>
<form method="post" action="tradá.php">
<input name="karel" >
<input type="submit" OnMouseOver="ahoj1();" >
</form>
</html>

<?
echo $_POST['karel'];
?>

Ale odeslat pole je pro mě trága. Všechno špatně, nic mi nefunguje. Jsem opět v koncích - nemohl by
mě ještě jednou někdo popoštouchnout????
habendorf
Profil
doveda: Já ti řeknu v čem je problém tohoto i tvého minulého threadu. Nikdo kloudně neví, co vlastně chceš. Ono totiž "odeslat pole" je krapet vágní pojem. Takže zkus napsat něco ve stylu "mám form s deseti inputy a rád bych dosáhl toho, aby po jeho odeslání ... ".
doveda
Profil *
jj. upřesňuju:

Ze souborů PHP načtu do JS hodně čísel (řádově v tisících). Některá čísla v závislosti na událostech
JS měním, jiná zůstávají. No a jde mi o to, abych poslal zpět do PHP jen ta, která se změnila.
Samozřejmě - mohl bych v JS pomocí cyklů při načítání stránky dynamicky vygenerovat třebas 10 000 inputů a držet hodnoty v nich, ale pak bych je musel zase všechny odeslat. I ty, co změněný nebyly.
A taky se takovýmu množství inputů chci vyhnout proto, že se mi začíná trochu kousat prohlížeč. Nevím
proč, ale je to tak.

Takže oč mi vlastně jde. Vím, že se mi u některých proměnných změnily hodnoty a ty a né jiný chci
odeslat. Příklad:

načetl jsem do JS
a=10;kk=12;b=1;k15=10;ka=25 ............... atd.

protože změna nastala např. jen u kk=26;ka=40;a=56; tak chci odeslat jen tyhle
zivan
Profil
A co posilat v inputu karel text "kk=26;ka=40;a=56;" a pak to v php rozdelit?

Koukam, ze pouzivas pristup k inputu pres document.all... To ti napr. ve Firefoxu nebude fungovat. Pouzij radeji metodu document.getElementById().
doveda
Profil *
zivan sem se sem dřív nedostal, dík :)
peta
Profil
-------------------------
//pole na retezec
xxx = ('aa','bb','cc');
yyy = xxx.join("|");
--> yyy = "aa|bb|cc";

//asociativniho pole na retezec
zzz = {'a':0,'b':3,'c':2};
for (i in zzz)
{yyy+=i+"="+zzz[i]+"|";}
--> yyy = "a=0|b=3|c=2|";
yyy = yyy.sustring(0,yyy.length-2); //tusim, proste orezat posledni oddelovac
--> yyy = "a=0|b=3|c=2";
------------------------

<form method="post" action="trada.php" onsubmit="return nejakaFunkce(this)">
<input type="hidden" name="tajne">
<input type="submit">
</form>

<script>
function nejakaFunkce(Xform)
{
xxx = ('aa','bb','cc');
yyy = xxx.join("|");
Xform.tajne.value=yyy;
return true;
}
</script>

Pripada ti na tom ty fundovany neco slozite?
Ale je to JS a kdyz vypnes JS, tak $_GET['tajne'] budes mit prazdne.
doveda
Profil *
peta: už né tolik .... teď , když jsem si to přečet udělaný :):) :):)
vendo
Profil
Tiež sa ospravedlňujem, ale mám tiež zaujímavý problémik, ktorý by sa mohol riešiť viacrozmerným poľom, ale neviem ako na to... Najprv však úvod do problematiky:

===============
riešim rôzne rozlíšenia monitoru takým spôsobom, že elementy pripnem doľava, doprava, hore a dolu, takže dostanem plávajúci priestor. ale potrebujem vyriešiť stred... a ten riešim DIV tabulkovým usporiadaním fotiek, ale tak, že sa mi fotky postupne vyskladajú do mozaiky. Manuálne to viem..., a trápim sa s poľom.

Ukážka na vendo.borec.cz/milos/applet1.htm

Problém však je, ak sa stránka zobrazí na 800x600, alebo 1200 a viac rozlíšení. V prvom prípade je to natlačené a rozbité, v druhom je to zase prázdne a hluché. Dá sa to riešiť prepočítaním voči šírke a výške, ale šírka a výška prehluiadača nemusí sa meniť proporčne - rozne navbary, apd... Rozumnejšie je vypočítať stredovú voľnú plochu, a do nej pri pomere strán obrázku 3:2 vsadiť nezávisle nejaký počet obr na šírku, a tiež nezávisle počet obr. na výšku. (alebo riešiť stránku naozaj proporčne, ale to sa dá len cez channell mode...). Sú tu teda tieto možnosti:

1. V channel móde alebo fullscreen móde treba doplniť vlastné menu, najmä lištu pre napísanie URL adresy - cez formulárový input, ale neviem aký action parameter mu udať. History sa dá cez GO, a ešte by bolo vhodné STOP a ikonka pre vypnutie a minimalizáciu prehliadača.

2. Rešpektovať užívateľove nastavenia, ale potom treba nejako vyplniť prípadnú hluchú plochu obrázkami - a to je superkomplikované:
Musela by sa vbyrátať možná voľná plocha vrátane nevyhnutného aspoň 10px odstupu od ostatných elementov, potom vyrátať, koľko takýchto miniobrázkov so šírkou 55-60px a hrúbkou borderu 2px by sa do takéhoto oddielu malo cez modulo delenie vyrátať počet dostupných obrázkov na šírku aj výšku tak, aby nezostal presah, a ten presah sa bude vlastne skracovať týmto výpočtom - proste ak vojed 8 fotiek, tak 8 a nič viac ani menej, ak nevojde, bude ich 7 a bude väčší okraj okolo "centrálnej" animačnej tabulky. Napokon treba vyrátať najťažšiu časť: algoritmus zobrazovania - v tomto prípade je to "dvojitý slimák", ale ako si môžete všimnúť v zdrojíku, ašte mi to s funkciami cez ++ a cyklické prechádzanie poľa, či dokonca vnáranie polí, zatiaľ nejde. Konečným cieľom by vlastne bolo urobiť takýto efekt podťa 3-4 algoritmov, ktoré by sa vyberali náhodným číslom - spočítaním položiek času - a modulo delením.
----------------

Pokúsil som sa to už špecifikovať aj bližšie, ale ďalej som sa už nedostal...

1. po odrátaní pravého a ľavého pásu a tiež nevyhnutného okraja aspoň 10px z každej strany
dostaneme akceptovateľnú šírku predbežného vymedzenia oblasti, kde bude animácia.
To isté vyrátame na výšku - odrátame horný logo pás, a prípadne nejakú dolnú navigačnú
lištu, a taktiež nejakých 2x 10px ako odstup.
(matematická šírka mímus odrátané položky=šírka oblasti)
Túto predbežne vymedzenú oblasť napozicujeme top, left.
(matematická šírka mínus šírka oblasti/2)

2. Od vyrátanej šírky predbežnej oblasti odrátame 2px(ľavý border), a potom toto číslo delíme
(šírkou minifoto, plus 2px - pravý border). Vyjde nám číslo, ktoré zaokrúhlime smerom dolu,
a to prostredníctvom ďalšej premennej:

var horizont_pocet=(napr. zo 7,5 na 7). Toto číslo sa potom prenesie aj do indexu pola -
max_pocet, pre vyrátanie neskorších algoritmov pri zobrazovaní.

3. do dalšej premennej dáme 2px (ľavý border), a prirátame súčet(horizont_pocet krát
(šírka minifoto plus pravý border)). Vyjde nám skutočná šírka animovanej oblasti.

4. Od predbežnej šírky oblasti odrátame skutočnú šírku oblasti, deleno 2, a vyjde nám pozícia
left od predbežnej oblasti tak, aby bola skutočná oblasť tiež pozicovaná na stred.

kroky 3 a 4 vyrátame aj pre výšku.

Pozn. pre dvojité pozicovanie - dvojitý "slimák" - je dôležité, aby počet minifoto bol párny,
teda aspoň jedna z položiek výška/šírka bola párna.

===================================================

Premenlivé algoritmy:

1. Najprv treba poznať systém tvorby (postup) tabuľky, a potom tento kopírovať -
teda vlastne nasledovať do algoritmu:

- klasický spôsobom naprv riadok, potom sa vyplní zľava doprava, potom ďalší riadok...
Toto vyhovuje dynamickému spôsobu tvorby obrázkov a algoritmov (konkrétneho hotového
algoritmu podľa master algoritmu vzoru) - vytvorí sa pole, ktoré bude obsahovať ďalšie
aspoň 2 polia - počet na šírku a počet na výšku. Toto sa zidtí podľa vlastnosti .lenght ...
Teda ASI vytvoríme povedzme 5 riadkov (výška), každý bude obsahovať 7 minifoto.
Pristupovať teda ku nim budeme ako ku 5x filmovému pásu. (Zrejme by sa dalo pristupovať
aj cez maticové pole, ale to je pre pokročilejšieho...). Potom by sme mali postupovať
podľa ID a indexov poľa - A[0] A[1] A[2] A[3] A[4] A[5] A[6] (prvý riadok), B[6], C[6],
D[6], E[6] ->E[5] E[4] E[3] E[2] E[1] E[0] D[0] C[0] B[0] ..... ATĎ ...
Otázka: ako priradiť poľu na výšku miesto indexu 0-4 čísla A - E ???
Otázka 2: Ak mi cez innerHTML text v Mozille bliká, prečo neblikajú fotky???
-----> ďalej: ako vieme, že bude mať na šírku 7 obrázkov??? Malo by tam byť niečo ako
n++ podľa lenght, na konci posľa výškových indexov robiť podľa (posledného - ale ako???),
alebo podľa prvého a zároveň je pole obrátené reverzne, takže je vlastne odd posledného ...
----> ale princíp je podľa first/last, first/last mínus jedna, mínus dva, atď ...


=====================


- spôsob ktorý ide po "položkách", ktoré už majú aj umiestňovacie dáta - toto je už vlastne
napevno algoritmus 2 v 1... Takýchto algoritmov môže byť viac, ale NEVÝHODA je, že
nemožno ho použiť na premenlivý počet obrázkov - iba na pevné...







= = = = = = = = = = = =
Otázka: poznáte nejaký príklad na riešenie takejto konštrukcie??? Vďaka
Toto téma je uzamčeno. Odpověď nelze zaslat.