| 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: 15 let
|
|||
0