Autor Zpráva
pajajezek
Profil *
Ahoj, měl bych jeden dotázek. Dělám v php kalkulačku přes button-y a vyskytl se mi problém. Potřeboval bych, aby mi to napsalo výsledek nad těma tlačítkama.. jako klasická kalkulačka. vyhodnocení jde do jiného souboru, které to uloží do cookies a ty potom načtu v té kalkulačce. Takhle to sice funguje, ale nastává problém, když se kalkulačka spustí znova, že se vždy ukáže poslední zadaná nebo vypočtená hodnota. Také by to šlo přes externí soubor, že by se v něm výpočet ukládal, ale to by bylo to samé.

tady je malý výňatek:

//výsledek
if(isset($_COOKIE['vysledek']))
             {
              @$x=$_COOKIE['vysledek'];
             }            
           else
             {
              $x=0;
             }

//tlačítka
<form action="vypocet.php" method="post"> 
<table>
 <tr>
   <td><button class="tlacitko" type="submit" name="akce" value="1"><font size="+2"><b>1</b></font></button>
    </td>
    <td><button class="tlacitko" type="submit" name="akce" value="2"><font size="+2"><b>2</b></font></button>
    </td>
    <td><button class="tlacitko" type="submit" name="akce" value="3"><font size="+2"><b>3</b></font></button>
 </tr>
</table>

</form>             
pajajezek
Profil *
Ještě doplnění, že bych bral jakýkoliv způsob zápisu, ale nesmí v tom být javacript, nebo něco takového. Čistě jen php a html.
pajajezek
Profil *
a ještě se omlouvám, na poslední řádce výpočtu chybí jedna řádka:
echo $x;
Alphard_
Profil *
Musí tam být mezikrok s ukládáním? Proč to prostě nespočítáte a nevypíšete?
pajajezek
Profil *
No nemusí, jenže já potřebuju výsledek umístit před výpočet a mít ho stále uložen v proměnné, abych s ním mohl dále pracovat.
motik
Profil
pajajezek:
tak si dej do formuláře skrytou hodnotu
<input type="hidden" name="calc" value="<?php echo $_REQUEST['calc'];?>" />
jenikkozak
Profil
pajajezek:
Schematicky by se to dalo udělat takto:
if(odeslan_formular){
//všelijaké výpočty, uložení výsledku do proměnné
}
//vypsání formuláře, ten se bude posílat na tutéž adresu

Díky tomu není potřeba dumat nad cookies.
pajajezek
Profil *
motik:
Ahoj, to bohužel nejde :-( mohl bys mi to nějak upřesnit? výsledek už tak dostanu, ale když ho tam poté doplním s nově zadaným číslem, tak se ukazuje hodnota o to jedno zadané číslo menší a to číslo se přičte až po zadání dalšího atd...

jenikkozak:
Ahoj, to jsem až tak moc nepochopil.. můžeš mi to ještě nějak popsat?
motik
Profil
pajajezek:
co sem zkusit dát ten tvůj kód? :-P

zkus si upravit toto (je to jen nastínění řešení, ale má pár mušek)
začni tím, jak ti nastínil jenikkozak:
<?php
if ($_POST['akce'])
  {
    $_POST['calc'] += $_POST['akce'];
    echo "Odeslaná hodnota: " . $_POST['akce'] . "<br />";
    echo "Celková hodnota: " . $_POST['calc'] . "<br />";
  }

?>


a do formuláře si dej skrytou hodnotu:
<form action="" method="post"> 
<input type="hidden" name="calc" value="<?php echo $_POST['calc'];?>">
<table>
 <tr>
   <td><button class="tlacitko" type="submit" name="akce" value="1"><font size="+2"><b>1</b></font></button>
    </td>
    <td><button class="tlacitko" type="submit" name="akce" value="2"><font size="+2"><b>2</b></font></button>
    </td>
    <td><button class="tlacitko" type="submit" name="akce" value="3"><font size="+2"><b>3</b></font></button>
 </tr>
</table>
pajajezek
Profil *
motik:

Ahoj, ten tvůj způsob bych řek, že mám, ale potřebuju přenést ten výsledek z programu. Tady jsem to nahrál na web, tak na to koukni :) (zatím to počítá jenom se zadáním čísel, takže ostatní symboly zkoušet nemusíte :)

http://novy.webpark.cz/kalkulacka/kalkulacka2.php

A kód je zde:
    <tr>
      <td><button class="tlacitko" type="submit" name="akce" value="0"><font size="+3"><b>0</b></font></button></td>
      <td><button class="tlacitko" type="submit" name="akce" value=","><font size="+2">,</font></button></td>
      <td><button class="tlacitko" type="submit" name="akce" value="+-"><font size="+2">±</font></button></td>
    </tr>
<!-- tlačítka - konec ------------------------------------------------------------------------------------------------->

</table> 


<?php
@$vraceny_vysledek = $_POST['vysledek'];
@$symbol = $_POST['akce'];


//vymazání nulového výsledku
if($vraceny_vysledek==0)
  {
   $vraceny_vysledek="";
  }
//kontrola maximálního počtu znaků (18), zji±tění čísla, přidání do řetězce      
if(is_numeric($symbol))
  {
   if(strlen($vraceny_vysledek)<18)
     $vysledek=$vraceny_vysledek . $symbol;
   else
     $vysledek=$vraceny_vysledek;
  }
  
   echo "<input type=\"hidden\" name=\"vysledek\" value=\"$vysledek\">";
?>

</form>


celé to je také v tom původním <form> v jakém jsou i tlačitítka
pajajezek
Profil *
Ještě doplňuji pole buňky, do jakého by měl jít výsledek:


<!-- výsledek --------------------------------------------------------------------------------------------------------->
    <tr>
      <td class="vypocet" colspan="5">
        <?php
          if(isset($_POST["vysledek"]))
            {
            $vysledek = $_POST["vysledek"];
            echo $vysledek;
            }         
          else
            {
            $vysledek = 0;
            echo "$vysledek";
            }
          echo "<input type=\"hidden\" name=\"vysledek\" value=\"$vysledek\">";
        ?>
      </td>
    </tr>
<!-- výsledek - konec ------------------------------------------------------------------------------------------------->
Segi_L
Profil
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- program ---------------------------------------------------------------------------------------------------------->
<?php
@$vraceny_vysledek = $_POST['vysledek'];
@$symbol = $_POST['akce'];

$vysledek = 0;


//vymazání nulového výsledku
if($vraceny_vysledek==0)
  {
   $vraceny_vysledek="";
  }
//kontrola maximálního počtu znaků (18), zjištění čísla, přidání do řetězce 

     
if(is_numeric($symbol))
  {
    if(strlen($vraceny_vysledek)<18)
      $vysledek=$vraceny_vysledek . $symbol;     
    else
      $vysledek=$vraceny_vysledek;     
  }
?>

<table border="0" align="center">
<?echo "<input type=\"hidden\" name=\"vysledek\" value=\"$vysledek\">";?>
  <form action="" method="post">
<!-- výsledek --------------------------------------------------------------------------------------------------------->
    <tr>
      <td class="vypocet" colspan="5">
        <?php
          echo $vysledek;
          echo "<input type=\"hidden\" name=\"vysledek\" value=\"$vysledek\">";
        ?>
      </td>
    </tr>
<!-- výsledek - konec ------------------------------------------------------------------------------------------------->
<!-- tlačítka --------------------------------------------------------------------------------------------------------->
pajajezek
Profil *
Segi_L:
Výborně, děkuju moc, už to šlape :)

http://novy.webpark.cz/kalkulacka/kalkulacka3.php

Já vím že v IE to nejde, ale to už je jenom taková drobnost... Mě nenapadlo jak to udělat jinak než přes ty buttony, ale jestli víš, budu rád, když se podělíš :)

jak můžeš vidět, potřebuju prostě pár tlačítek, u jakých si potřebuju nastavit vlastní velikost a vlastnosti písma :)
Segi_L
Profil
@$vraceny_vysledek = $_POST['vysledek'];
@$symbol = $_POST['akce'];
$symbol = strip_tags($symbol);

$vysledek = 0;

To zvýraznené si tam doplň. je to najrýchlejšia úprava.
pajajezek
Profil *
paráda, dík :)

http://novy.webpark.cz/kalkulacka/kalkulacka3.php

vše už je OK :)

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: