Autor Zpráva
jurra
Profil *
Vytvořil jsem si script, vytvořil jsem si okénka s počtem vojáků, které můžete postavit
a máte 100 zlatých. Při postavení vojáků by se mi měly odečíst zlatky a když si postavím všech 100
vojáků tak mám samozřejmě 0 zlatých....
Mám takový problém, když do jenoho okénka zadám třeba, že chci postavit 4 vojáky tak je postavím
Ale když kliknu aktualizovat, tak se mi znovu odečtou 4 aniž bych něco zadával. Nevíte jak na to ?

<?php
session_start();
?>
<HTML>
<BODY>
<?php

if (!isset($_SESSION["vypocet"]))
{
$_SESSION["vypocet"] = 100;
} else {

if (!isset($_SESSION["vypocet2"]))
{
$_SESSION["vypocet2"] = $_SESSION["vypocet"] ;
} else {


if ($_POST['oknossermiri'] < 0){
} else
if ( $_POST['oknossermiri'] <= $_SESSION["vypocet"]) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] - $_POST['oknossermiri'];
} else
if ($_SESSION["vypocet"] == 0) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] * 0;
}}}




if ($_POST['oknosgardisty'] < 0){
} else
if ( $_POST['oknosgardisty'] <= ($_SESSION["vypocet"] / 2)) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] - $_POST['oknosgardisty'] * 2;
$_SESSION["vypocet"] = number_format ($_SESSION["vypocet"], 0,","," ");

} else
if ($_SESSION["vypocet"] == 0) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] * 0;
}

if ($_SESSION["vypocet"] > 0) {
$_SESSION["vypocet2"] = $_SESSION["vypocet"] / 2;
$_SESSION["vypocet2"] = number_format ($_SESSION["vypocet2"], 0,","," "); }
echo "můžete ještě postavit&nbsp;&nbsp;&nbsp; ".$_SESSION["vypocet2"]." gardistů <br> ";
echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;
&nbsp;&nbsp;&nbsp; ".$_SESSION["vypocet"]." šermířů <br> ";
echo " Máte ".$_SESSION["vypocet"]." zlatých";

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" />
<br>1 gardista stojí 2 zlatku<br>
1 šermíř stojí 1 zlatky<br><br>
postavte gardisty <input type="text" name="oknosgardisty" /><br><br>
postavte šermíře <input type="text" name="oknossermiri" />
&nbsp;&nbsp;&nbsp; <input type="submit" name="klik" value="Postavte vojsko" />
</form>
</BODY>
</HTML>
TSD
Profil *
if ($_POST['oknosgardisty'] < 0){
} else
if ( $_POST['oknosgardisty'] <= ($_SESSION["vypocet"] / 2)) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] - $_POST['oknosgardisty'] * 2;
$_SESSION["vypocet"] = number_format ($_SESSION["vypocet"], 0,","," ");

header('Location: tatostranka.php');
TSD
Profil *
Chyba, omlovám se.

Princip je takový, že odchytíš, že se má provést nějaká akce - na základě $_POST, uděláš co potřebuješ a pak pomocí http://cz2.php.net/header tu stránku de facto otevřeš znovu, tentokrát už bez parametrů.

Ale aby
header('Location: tatostranka.php');
fungovalo, musí být v kódu před čímkoliv, co způsobí výstup do prohlížeče, tzn. před <head>
jurra
Profil *
Jenže když to dám před hlavičku tak mi to nfunguje, píše to smyčka při přesměrování....
Tkahle to tam mám.
<?php
session_start();
?>
<HTML>
<?php
header('Location: index.php');
?>
<head><title>zlatky</title></head>
<BODY>
....
jurra
Profil *
to mi nefunguje
TSD
Profil *
<?php 
session_start(); 
?> 
<?php 
header('Location: index.php'); 
?> 
<HTML> 
<head><title>zlatky</title></head> 
<BODY> 
....
jurra
Profil *
To jsem taky zkoušel a nefungovalo mi to ..
Ale vyřešil jsem to jinak ( ten script jsem zjednodušil )
A funguje mi to, ale bez tebe bych na to nepřišel. Díky fakt moc.


<?php
session_start();
?>
<HTML>
<BODY>
<?php
if (!isset($_SESSION["vypocet"]))
{
$_SESSION["vypocet"] = 100;
} else {

if ($_POST['klik']) {
if ($_POST['oknossermiri'] < 0){
} else
if ( $_POST['oknossermiri'] <= $_SESSION["vypocet"]) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] - $_POST['oknossermiri'];
header('Location: index.php');
} else


if ($_SESSION["vypocet"] == 0) {
$_SESSION["vypocet"] = $_SESSION["vypocet"] * 0;
}}}
echo "můžete ještě postavit&nbsp;&nbsp;&nbsp; ".$_SESSION["vypocet"]." šermířů <br> ";
echo " Máte ".$_SESSION["vypocet"]." zlatých";
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" />
1 šermíř stojí 1 zlatky<br><br>
postavte šermíře <input type="text" name="oknossermiri" />
&nbsp;&nbsp;&nbsp; <input type="submit" name="klik" value="Postavte vojsko" />
</form>
</BODY>
</HTML>
Adam Zábranský
Profil
píše to smyčka při přesměrování....
je jasný že když pokaždé co se stránka načítá dáš přesměrování na tu samou stránku, tak bude chyba v přesměrování :)
TSD
Profil *
Já jsem to s tím kódem nemyslel doslova.
To co tam máš teď, je špatně, nemuůže to fungovat.

Takže postup je tento


<?php
session_start();

pokud byl formulář odeslán
{
- odečtu body nebo prostě provedu akci, já se v tom tvém kódu nevyznám
- header('Location: index.php');
}
?>

<HTML>
<BODY>
..


Nechce se mně to psát doslova, mně by to stálo víc času a tobě by to pomohlo míň, kdybys to měl bez práce.
Každopádně příkaz header(Location.. musí být zařazen před odeslání čehokoliv do prohlížeče, jinak nefunguje.
jurra
Profil *
Já vím, ve své knize to mám taky,ale mě to funguje - taky to nechápu
krteczek_mimo
Profil *
a za header dát exit;!

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: