Autor Zpráva
TomasRe
Profil
Prosím o radu a schovívavost. S řadami array nejsem úplně kamarád a popravdě jim moc nerozumím, i když zkouším pročítat co se dá... Mám formulář, kde se zadávají proměnné osob a dny - podle čeho se vypočítávají další hodnoty. První stránka - zadám počet osob a dny. Na druhé stránce mi vypočítá potřebná data a vypíše všechny tyto hodnoty + je zde formulář s dopňujícíma informacema (například jméno). To by mělo jít na další (konečnou stránku), kde by se měly všechny tyto hodnoty zobrazit (jde mi tedy především o počet osob a dní z úvodní stránky). Tyto hodnoty se mi ale nedaří předat až na tu 3 stránku:

<?php include "db.php"; ?>
<?php // KONEČNÝ VÝSTUP
if(isset($_POST["objednat"])) {
if ($_POST['posob']!=0){
foreach($_POST['posob'] as $id => $pocet_osob)
{
    if($pocet_osob!=0)
    {
        $vysledek = mysql_query("SELECT * FROM cenik_ponor WHERE id=$id ORDER BY poradi");
        while ($zaznam = mysql_fetch_array($vysledek)){$cena=$zaznam['cena'];$text=$zaznam['text'];}
        $ponor_suma[$id]=$pocet_osob*$cena*$_POST['dni'][$id];
        echo $text.", pocet osob: ".$pocet_osob.", pocet dni: ".$_POST['dni'][$id].", cena: ".$ponor_suma[$id]."<br>";
    }
}}else {echo"chyba";}
} ?>
<?php // KALKULACE
if(isset($_POST["odeslat"])) { 

if ($_POST['posob']!=0){
foreach($_POST['posob'] as $id => $pocet_osob)
{
    if($pocet_osob!=0)
    {
        $vysledek = mysql_query("SELECT * FROM cenik_ponor WHERE id=$id ORDER BY poradi");
        while ($zaznam = mysql_fetch_array($vysledek)){$cena=$zaznam['cena'];$text=$zaznam['text'];}
        $ponor_suma[$id]=$pocet_osob*$cena*$_POST['dni'][$id];
        echo $text.", pocet osob: ".$pocet_osob.", pocet dni: ".$_POST['dni'][$id].", cena: ".$ponor_suma[$id]."<br>";
    }
}}
if ($ponor_suma!=0)
{echo "CELKEM: ".array_sum($ponor_suma);}
?>
<form id="formular" action="" method="post" onsubmit="return test()">
<?php // FORMULÁŘ 2
echo "jmeno: <input type='text' name='jmeno'>";
if ($_POST['posob']!=0){
foreach($_POST['posob'] as $id => $pocet_osob)
{
    if($pocet_osob!=0)
    {
        $pocet_dni = $_POST['dni'][$id];
        echo "<input type='hidden' name='posob".$id."' value='".$pocet_osob."'> <input type='hidden' name='dni".$id."' value='".$pocet_dni."'><br>";
    }
}}
?>
<input type="submit" name="objednat" value="objednat">
</form>
<?php }
else { // FORMULÁŘ 1
?>
<form id="formular" action="" method="post">
<?php
$opt_dni=$opt_osob='';
for ($k=0;$k<15;$k++) $opt_osob.="<option value='".$k."'>".$k."</option>";
for ($k=1;$k<15;$k++) $opt_dni.="<option value='".$k."'>".$k."</option>";
 
$vysledek = mysql_query("SELECT * FROM cenik_ponor WHERE cena!=0 ORDER BY poradi");
while ($zaznam = mysql_fetch_array($vysledek))
{echo $zaznam['text']. "<select name='posob[".$zaznam['id']."]'>".$opt_osob."</select> dní: <select name='dni[".$zaznam['id']."]'>".$opt_dni."</select><br>";}
?>
<input type="submit" name="odeslat" value="Spočítat">
</form>
<?php } ?>
veredico
Profil
Ahoj,
myslim ze neco podobneho jsem resil... pokud jsem tedy dotaz pochopil spravne...

abych si hodnoty prenesl na treti stranku, tak jsem to udelal tak, ze jsem si je na druhe strance hodil do noveho <form> a ten jsem dal cely jako hidden...

urcite existuje lepsi metoda, ale tato me funguje...
lionel messi
Profil
TomasRe:
Prvá možnosť je tá, o ktorej píše veredico, pre začiatok určite stačí a možno ti bude vyhovovať viac. Zároveň však dobre poznamenáva, že: „urcite existuje lepsi metoda“. Na prenos informácií medzi viacerými stránkami môžeš použiť cookies alebo session, len neviem, aké máš skúsenosti.
veredico
Profil
lionel messi:
To mas pravdu, cookies me vubec nenapadlo... a session zatim vubec neumim... :)
TomasRe
Profil
První variantu zkouším (viz. kód), kde vkládám do inputu s hodnotou hidden, ale z nějakého důvodu se to nedaří přenést dále. Cookies bych nerad používal, už z důvodu, že je má spousty lidí zakázáno a Session se mi vůbec nedařilo rozchodit a házelo mi to chybu.
Taps
Profil
TomasRe:
a házelo mi to chybu.
Jakou chybu?
Keeehi
Profil
veredico:
Ano, správně je to input hidden, ne form hidden. Aby to fungovalo, musí být ve stejném formuláři a musíš mu vyplnit hodnotu.
... value="<?php echo $pocetLidi; ?>" ...

Cookies ... že je má spousty lidí zakázáno
Statistiku neznám, ale velká spousta webů přestane fungovat, když si zakážete cookies. Schválně jsem teď otestoval Facebook a Gmail a bez cookies se prostě nepřihlásíš. Z tohoto důvodu si myslím, že lidí se zakázanými cookies nebude až tak moc, jelikož je mnohem pohodlnější je mít povolené, než udělovat povolení ručně jen určitým stránkám.
TomasRe
Profil
Taps:
Warning: Invalid argument supplied for foreach() in

Přiznám se, že pořádně nevím, jak se s $_COOKIE pracuje :-(


Keeehi:
To mám:
<input type='hidden' name='posob".$id."' value='".$pocet_osob."'>
Keeehi
Profil
TomasRe:
Chápu, že pro začátečníka může být práce s poli matoucí, nedej bože pokud jsou vícerozměrná. Pak se lehce zapomíná, kde člověk je. Existuje však skvělá funkce právě na zjišťování obsahu proměnných. var_dump($vasePromenna); Tato funkce vám vypíše obsah proměnné (pokud to je pole tak všechny jeho prvky) a datový typ. Dá se tím krásně zjistit, že v té proměnné máte něco jinného než si myslíte že tam je.
TomasRe
Profil
Keeehi:
Zobrazuje se:
var_dump(id);
var_dump(posob);
var_dump(dni);

string(2) "id"
string(5) "posob"
string(3) "dni"

Což mi přijde hodně matoucí, když by počet prvků měl být u všech stejný...
blaaablaaa
Profil
var_dump($id);
TomasRe
Profil
Už jsem na to přišel. Je to moje chyba. Zapomněl jsem v odesílacím formuláři přidat závorky [$id], proto se to nebralo jako řada, ale jako name1, name2 apod...


Každopádně všem moc děkuji za pomoc a ochotu poradit. Opravdu děkuju.

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: