Autor | Zpráva | ||
---|---|---|---|
TWE3K Profil |
#1 · Zasláno: 10. 12. 2011, 21:43:45 · Upravil/a: TWE3K
Zdravím, vedel by mi niekto pomôcť s nasledovným problémom?
1. užívateľ zadáva číslo po 1. odoslaní 2. generuje sa formulár s počtom políčok typu text zadaného čísla - užívateľ povyplňa nejaké čísla.. po 2. odoslaní 3. každé zadané číslo sa zaokrúhli na najbližšiu druhú mocninu.. napr. 57 na 64 .. + ďalej, zatiaľ neriešim môj problém: 1. neviem ako sa vysporiadať s tým, aby mi po 2. odoslaní zostali vypísané políčka, ktoré sa vygenerovali po 1. odoslaní (bude problém v "{" zátvorke?) 2. po 2. odoslaní sa v ďalších výpočtoch nezaratávajú hodnoty , ktoré boli zadané do políčok.. kód v skratke: html.. <?php if (isset($_POST['submit1'])) { ... podmienky... + function multipolia($value){ $value = $value + 1; for($i = 1;$i < $value; $i++) { echo "<p>$i.hodnota <input type='text' name='hodnoty[$i]'></p>"; // ukladá to dobre do premmenej 'hodnoty[$i]' ??? } return $hodnoty[$i]; } ?> html pre výpis funkcií.. <?php } if (isset($_POST['submit2'])) { funkcie.. ?> html pre výpis.. snažím sa vo funckiách pracovať s hodnotami v $hodnoty[$i], avšak tu už ich nepozná..čiže po 2. odoslaní sa akoby vymažú |
||
Tori Profil |
#2 · Zasláno: 10. 12. 2011, 22:17:16 · Upravil/a: Tori
Na ř.14: Odkud se bere to pole $hodnoty? Ve funkci definované není.
Při další zpracování formuláře (za ř.22) pracujete s $_POST['hodnoty'] (proměnná $hodnoty zřejmě opět není definovaná).
|
||
TWE3K Profil |
#3 · Zasláno: 11. 12. 2011, 11:26:05
riadok 14, som celý zmazal, v podstate je tam aj zbytočný ..
za riadkom 22 mám definovanú premmennú z formulára nasledovne.. $hodnoty = array($_POST['hodnoty[$i]']); funkciu na počítanie mám potom v nasledovnom tvare: function PotrebneIP($hodnoty){ $celkovypocet = array(); if($hodnoty[$i] > 15 && $hodnoty[$i] < 33) { $celkovypocet[$i] = 32; } elseif($hodnoty[$i] > 7 && $hodnoty[$i] < 17) { $celkovypocet[$i] = 16; } elseif($hodnoty[$i] > 268435454 && $hodnoty[$i] < 536870912) { $celkovypocet[$i] = 8; } $celkovypocet = array_count_values($celkovypocet[$i]); return $celkovypocet; ešte som chcel, že aby po 2. odoslaní zostalo vypísané to čo po prvom..aktuálne je to tak, že ked kliknem druhý krát odoslat formulár tak sa výpis iba zamení.. |
||
Tori Profil |
#4 · Zasláno: 11. 12. 2011, 14:04:03 · Upravil/a: Tori
TWE3K:
Jak se funkce PotrebneIP dostane k proměnné $i? Předpokládám, že tam je ještě nějaký cyklus, který jste neuvedl (jinak by to nedávalo smysl). Nalezení nejbližší mocniny osmi (je-li to to, co chcete) se dá udělat i takto: $a = array(123, 57, 4, 23, 31); foreach($a as $cislo) { $rozdil = $cislo % 8; if ($rozdil > 4 || $cislo < 8) { // aby pro čísla menší než 4 nebyla výsledkem nula, ale 8 $vysledek = $cislo + 8 - $rozdil; } else { $vysledek = $cislo - $rozdil; } echo "<br>$cislo ... (rozdil = $rozdil) ... $vysledek"; } edit: Pardon, radím blbosti, najde to násobky osmi místo mocnin. „za riadkom 22 mám definovanú premmennú z formulára nasledovne..“ Mělo byt to být zřejmě $_POST["hodnoty[$i]"] (uvnitř apostrofů se proměnné nezpracují).
„ešte som chcel, že aby po 2. odoslaní zostalo vypísané to čo po prvom“ Navrhuji po 2.odeslání uložit pole $_POST['hodnoty'] do session, a v dalších formulářích číst odtamtud. |
||
TWE3K Profil |
#5 · Zasláno: 11. 12. 2011, 16:08:20
Tori:
Jak se funkce PotrebneIP dostane k proměnné $i? Máte pravdu, nedostane sa k nim nijak.. cyklus tam nie je žiadny.. akurát neviem pod čím mám tých X hodnôt, ktoré užívateľ vyplní načítavať do tej funkcie... nejako som si nahovoril že pod $i by to mohlo fungovať.. a tá funkcia nemá fungovať pod najbližšou mocninou ôsmymi, ale dvomi.. bolo zbytočné vypisovať viac podmienok potrebujem to množstvo čísel zadaných od užívateľa zaradiť do najbližšej mocniny a následne sčítať zatiaľ Ďakujem za riešenie problému |
||
Tori Profil |
#6 · Zasláno: 11. 12. 2011, 16:13:39 · Upravil/a: Tori
TWE3K:
„akurát neviem pod čím mám tých X hodnôt, ktoré užívateľ vyplní načítavať do tej funkcie“ Funkci posíláte přece celé pole, tak ho stačí ve fci projít pomocí foreach function PotrebneIP($hodnoty) { foreach ($hodnoty as $hodnota) { if($hodnota > 15 && $hodnota < 33) { ...atd. |
||
TWE3K Profil |
#7 · Zasláno: 11. 12. 2011, 16:31:54
aktuálne to vyzerá teda takto:
function PotrebneIP($hodnoty){ $celkovypocet = array(); foreach ($hodnoty as $hodnota){ if($hodnota > 15 && $hodnota < 33) { $celkovypocet[] = 32; } elseif($hodnota > 7 && $hodnota < 17) { $celkovypocet[] = 16; } ... $celkovypocet = array_count_values($celkovypocet[]); return $celkovypocet; odmieta mi však brať pri sčítaní polí zátvorku [] .. |
||
lol Profil * |
#8 · Zasláno: 11. 12. 2011, 16:32:43
Tak tam tú zátvorku nedajte.
|
||
Tori Profil |
#9 · Zasláno: 11. 12. 2011, 16:39:03
TWE3K:
„a tá funkcia nemá fungovať pod najbližšou mocninou ôsmymi, ale dvomi“ Pak by to šlo i převodem na dvojkovou soustavu: $a = array(123, 573498, 4, 23, 123456789); foreach($a as $cislo) { $new = str_replace('1', '0', decbin($cislo)); $new[0] = '1'; echo "<br>$cislo ... ".bindec($new); } |
||
TWE3K Profil |
#10 · Zasláno: 11. 12. 2011, 17:42:32
lol:
bez zátvorok som to samozrejme skúšal, vypisuje mi však iba: Array Tori: mne stačí zaokrúhlovanie na najbližšiu hornú mocninu, ďakujem za nápad |
||
TWE3K Profil |
#11 · Zasláno: 11. 12. 2011, 19:24:50 · Upravil/a: TWE3K
ak som vytvoril funkciu:
function pocet($hodnoty){ echo $hodnoty; } znamená to že do: $hodnoty = array($_POST['hodnoty[$i]']); ukladá teda prázdne hodnoty??? |
||
Tori Profil |
#12 · Zasláno: 11. 12. 2011, 19:35:33 · Upravil/a: Tori
TWE3K:
„vo výpise píše iba : Array“ což je naprosto správně, protože echem se vypisují řetězce a čísla a výsledkem konverze pole na řetězec je "Array". Použijte var_dump nebo print_r. Ad [#7]: ↓ Funkci PotrebneIP prostě předejte celé pole $_POST['hodnoty']. Na řádku 12 tamtéž má být $celkovypocet = array_count_values($celkovypocet); . To, že to pak někde dál vypisuje "Array" je tím, co píšu výše.
Btw, je rozdíl mezi $_POST['pocetpc[$i]'] , $_POST["pocetpc[$i]"] a $_POST['pocetpc'][$i] .
|
||
TWE3K Profil |
#13 · Zasláno: 11. 12. 2011, 19:49:45 · Upravil/a: TWE3K
skúsil som to takto:
$hodnoty = array($_POST["hodnoty[$i]"]); function pocet($hodnoty){ var_dump($hodnoty); } vypisuje mi: Array ( [0] => ) alebo array(1) { [0]=> NULL } ak tomu chápem správne, v $hodnoty nie je nič? |
||
TWE3K Profil |
#14 · Zasláno: 11. 12. 2011, 21:21:27
po úprave načítania do premennej:
$hodnoty = array($_POST["hodnoty"]); my už funguje skúšobná funkcia pocet .. Celkom však nechápem vašej rade: Funkci PotrebneIP prostě předejte celé pole $_POST['hodnoty'] |
||
Tori Profil |
#15 · Zasláno: 11. 12. 2011, 21:38:13
myslela jsem to samé, co jste teď udělal s tou zkušební funkcí.
|
||
TWE3K Profil |
#16 · Zasláno: 11. 12. 2011, 21:45:36
skúsil som to, len stále mi vypisovalo iba "Array", tak som si myslel že máte na mysli niečo viacej..
nebude tam problém s ukladaním tých mocnín dvojky do $celkovypocet[] = xx ? |
||
Časová prodleva: 14 let
|
0