Gebäudeskript
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abziehen
auftrag
bauzeit
falschen stelle
fehler
holz
host
kind
recht danke
rohstoff
set
stein
steinmetz
tab
teil
ticks
update
variablen kind
weglassen
wert nehmen
-
Folgendes Skript soll in meinem game die geb?ude bauen (vereinfachte und noch unvollst?ndige Version). Warum wird immer nur "kannbau2 geb?ude werden gebaut" ausgegeben?
<?
//Geb?udebau
//Die Variablen $kind und $build wurden ?bergeben.
$name=$_SESSION['name'];
$host="mysql.lima-city.de";
$user="xxxxxxx";
$database="xxxxxx";
$pass="xxxxxxx";
$dz=mysql_connect($host,$user,$pass);
mysql_select_db($database,$dz);
if (!is_numeric($build)) echo "Gib bitte einen nummerischen Wert an.";
if ($kind=="Steinmetz")
{
$steine=200;
$holz=50;
}
$holzpreis=$holz*$build;
$steinpreis=$steine*$build;
$query = "SELECT vh FROM tab2 WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$holzvorrat=$ds->vh;
$query = "SELECT vs FROM tab2 WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$steinvorrat=$ds->vs;
if ($holzpreis<=$holzvorrat) $bau1="ja";
$kannbau1= $holzvorrat / $holz; //hier muss noch nach untenn hin gerundet werden.
if (steinpreis<=$steinvorrat) $bau2="ja";
$kannbau2 =$steinvorrat / $steine; //hier muss noch nach unten hin abgerundet werden.
if ( $bau1=="ja" && $bau2=="ja" )
{
$query = "SELECT fsm FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$fsm=$ds->fsm;
if($kind="Steinmetz") $kind2 = "fsm";
$tatbau=$build;
$neu = $fsm + $tatbau;
$query = "UPDATE tab SET $kind2='$neu' WHERE name = '$name'";
$sql=mysql_query($query);
//+rohstoffe abziehen.
}
else
{
if ($kannbau1 > $kannbau2 ) $tatbau = $kannbau2;
elseif ($kannbau2 > $kannbau1 ) $tatbau = $kannbau1;
elseif ($kannbau1 = kannbau2 ) $tatbau= $kannbau1;
$query = "SELECT fsm FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$fsm=$ds->fsm;
if($kind="Steinmetz") $kind2 = "fsm";
$neu2 = $fsm + $tatbau;
$query = "UPDATE tab SET $kind2='$neu2' WHERE name = '$name'";
$sql=mysql_query($query);
//+Geld abziehen
}
echo "Es wurde/n $tatbau Geb?ude in Auftrag gegeben. ";
//+ifabfrage bei NULLeingabe
?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also was ich auf jeden fall ?ndern w?rde ist:
jof schrieb:
$holzvorrat=$ds->vh;
so:
$holzvorrat=$ds['vh']
sonst f?llt mir nichts auf...sry!!
DOCH:
du vergisst bei if() die { } !!
und bei elseif auch!!
Ohne die kann es nicht gehn!! -
doch hier:
.......
echo "Es wurde/n $tatbau Geb?ude in Auftrag gegeben. ";
//+ifabfrage bei NULLeingabe
?>
-
DOCH:
du vergisst bei if() die { } !!
und bei elseif auch!!
Ohne die kann es nicht gehn!!
kann man die nicht weglassen wenns einzeilig ist??? -
if ($holzpreis<=$holzvorrat) $bau1="ja";
$kannbau1= $holzvorrat / $holz; //hier muss noch nach untenn hin gerundet werden.
if (steinpreis<=$steinvorrat) $bau2="ja";
$kannbau2 =$steinvorrat / $steine; //hier muss noch nach unten hin abgerundet werden.
if ( $bau1=="ja" && $bau2=="ja" )
Also da ist ein Fehler drin.
sollte doch nicht "steinpreis" dies hei?en "$steinpreis"
n?mlich so:
if ($holzpreis<=$holzvorrat) $bau1="ja";
$kannbau1= $holzvorrat / $holz; //hier muss noch nach untenn hin gerundet werden.
if ($steinpreis<=$steinvorrat) $bau2="ja";
$kannbau2 =$steinvorrat / $steine; //hier muss noch nach unten hin abgerundet werden.
if ( $bau1=="ja" && $bau2=="ja" )
Dann noch eins da wurde wieder ein $ vergessen.
if ($kannbau1 > $kannbau2 ) $tatbau = $kannbau2;
elseif ($kannbau2 > $kannbau1 ) $tatbau = $kannbau1;
elseif ($kannbau1 = kannbau2 ) $tatbau= $kannbau1;
w?rde dann so sein:
if ($kannbau1 > $kannbau2 ) $tatbau = $kannbau2;
elseif ($kannbau2 > $kannbau1 ) $tatbau = $kannbau1;
elseif ($kannbau1 = $kannbau2 ) $tatbau= $kannbau1;
Ich hoffe ich habe dir geholfen! -
hab noch en bisschen was ver?ndert und dank eurer hilfe (besonders medabots1992) funktionierts jetzt, danke echt super community!!!
-
Also was ich auf jeden fall ?ndern w?rde ist:
jof schrieb:
$holzvorrat=$ds->vh;
so:
$holzvorrat=$ds['vh']
sonst f?llt mir nichts auf...sry!!
DOCH:
du vergisst bei if() die { } !!
und bei elseif auch!!
Ohne die kann es nicht gehn!!
beides quark
f?r arrays kannst du auch $array->wert nehmen
und bei einzeiligen if, elseif und else kann man die {} weglassen, sollte man aber nich, da es sonst schnell un?bersichtlich wird ;) -
jetzt hab ichs noch ein bisschen abge?ndert, nun funktioniert aber gar nichts mehr: ich erhalte andauern pares error unexpected !, expecting ) on line 14, obwohl da gar nichts steht.
<?
session_start();
//Geb?udebau
//Die Variablen $kind und $build wurden ?bergeben.
$name=$_SESSION['name'];
$host="mysql.lima-city.de";
$user="xxxxxx";
$database="xxxxxx";
$pass="xxxxxx";
$dz=mysql_connect($host,$user,$pass);
mysql_select_db($database,$dz);
if (!is_numeric($build)) echo "Gib bitte einen nummerischen Wert an.";
if ($kind=="Steinmetz")
{
$steine=200;
$holz=50;
}
$holzpreis=$holz*$build;
$steinpreis=$steine*$build;
$query = "SELECT vh FROM tab2 WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$holzvorrat=$ds->vh;
$query = "SELECT vs FROM tab2 WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$steinvorrat=$ds->vs;
if ($holzpreis<=$holzvorrat) $bau1="ja";
$kannbau1= $holzvorrat / $holz; //hier muss noch nach untenn hin gerundet werden.
if ($steinpreis<=$steinvorrat) $bau2="ja";
$kannbau2 =$steinvorrat / $steine; //hier muss noch nach unten hin abgerundet werden.
if ( $bau1=="ja" && $bau2=="ja" )
{
$query = "SELECT fsm FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$fsm=$ds->fsm;
if($kind="Steinmetz") $kind2 = "bsm";
if($kind="Steinmetz") $zeit = "zsm";
$query = "SELECT $kind2 FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$prufer2=$ds->$kind2;
if ($prufer2=="0"){
$tatbau=$build;
$neu = $tatbau;
$query = "UPDATE tab SET $kind2='$neu' WHERE name = '$name'";
$sql=mysql_query($query);
$ticks=(time()- 1108158150)/60 ;
$ticksrounded=round($ticks);
$bauzeit= $ticksrounded + 5*$tatbau;
$query = "UPDATE tab SET $zeit='$bauzeit' WHERE name = '$name'";
$sql=mysql_query($query);
$kostenholz= $holz*$tatbau;
$kostenstein= $steine * $tatbau;
$kontoholz=$holzvorrat-$kostenholz;
$kontostein=$steinvorrat-$kostenstein;
$query = "UPDATE tab2 SET vh='$kontoholz' WHERE name = '$name'";
$sql=mysql_query($query);
$query = "UPDATE tab2 SET vs='$kontostein' WHERE name = '$name'";
$sql=mysql_query($query);
}
else {
$query = "SELECT $zeit2 FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$zeit4=$ds->$zeit2;
$zuzeit2= $zeit4 + 5*$tatbau;
$query = "UPDATE tab SET $zeit='$zuzeit2' WHERE name = '$name'";
$sql=mysql_query($query);
$kostenholz= $holz*$tatbau;
$kostenstein= $steine * $tatbau;
$kontoholz=$holzvorrat-$kostenholz;
$kontostein=$steinvorrat-$kostenstein;
$query = "UPDATE tab2 SET vh='$kontoholz' WHERE name = '$name'";
$sql=mysql_query($query);
$query = "UPDATE tab2 SET vs='$kontostein' WHERE name = '$name'";
$sql=mysql_query($query);
}
}
else
{
if ($kannbau1 > $kannbau2 ) $tatbau = $kannbau2;
elseif ($kannbau2 > $kannbau1 ) $tatbau = $kannbau1;
elseif ($kannbau1 = $kannbau2 ) $tatbau= $kannbau1;
if($kind="Steinmetz") $kind2 = "bsm";
if($kind="Steinmetz") $zeit2 = "zsm";
$query = "SELECT $kind2 FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$prufer=$ds->$kind2;
if ($prufer=="0"){
$neu2 = $tatbau;
$ticks2=(time()- 1108158150)/60 ;
$ticksrounded2=round($ticks);
$bauzeit2= $ticksrounded2 + 5*$tatbau;
$query = "UPDATE tab SET $zeit2='$bauzeit2' WHERE name = '$name'";
$sql=mysql_query($query);
$query = "UPDATE tab SET $kind2='$neu2' WHERE name = '$name'";
$sql=mysql_query($query);
$kostenholz= $holz*$tatbau;
$kostenstein= $steine * $tatbau;
$kontoholz=$holzvorrat-$kostenholz;
$kontostein=$steinvorrat-$kostenstein;
$query = "UPDATE tab2 SET vh='$kontoholz' WHERE name = '$name'";
$sql=mysql_query($query);
$query = "UPDATE tab2 SET vs='$kontostein' WHERE name = '$name'";
$sql=mysql_query($query);
}
else {
$query = "SELECT $zeit2 FROM tab WHERE name = '$name'";
$sql=mysql_query($query);
$ds=mysql_fetch_object($sql);
$zeit3=$ds->$zeit2;
$zuzeit= $zeit3 + 5*$tatbau;
$query = "UPDATE tab SET $zeit2='$zuzeit' WHERE name = '$name'";
$sql=mysql_query($query);
$neu3 = $prufer + $tatbau;
$query = "UPDATE tab SET $kind2='$neu3' WHERE name = '$name'";
$sql=mysql_query($query);
$kostenholz= $holz*$tatbau;
$kostenstein= $steine * $tatbau;
$kontoholz=$holzvorrat-$kostenholz;
$kontostein=$steinvorrat-$kostenstein;
$query = "UPDATE tab2 SET vh='$kontoholz' WHERE name = '$name'";
$sql=mysql_query($query);
$query = "UPDATE tab2 SET vs='$kontostein' WHERE name = '$name'";
$sql=mysql_query($query);
}
}
echo "Es wurde/n $tatbau Geb?ude in Auftrag gegeben. ";
?>
-
Also ein fehler war, dass $zeit noch nicht initialisiert war, nun funktioniert der Teil mit der zweiten gro?en if , aber der erste nicht.
EDIT:// Nun funktioniert alles wieder. Wens interressiert: $tatbau wurde an der falschen Stelle initialisiert.
Der code war wahrscheinlich auch ein bisschen lang, wenn man nicht wei? worum es geht^^ -
noch 3 fehlerchen
else
{
if ($kannbau1 > $kannbau2 ) $tatbau = $kannbau2;
elseif ($kannbau2 > $kannbau1 ) $tatbau = $kannbau1;
elseif ($kannbau1 = $kannbau2 ) $tatbau= $kannbau1;
if($kind="Steinmetz") $kind2 = "bsm";
if($kind="Steinmetz") $zeit2 = "zsm";
sollte == sein
also:
else
{
if ($kannbau1 > $kannbau2 ) $tatbau = $kannbau2;
elseif ($kannbau2 > $kannbau1 ) $tatbau = $kannbau1;
elseif ($kannbau1 == $kannbau2 ) $tatbau= $kannbau1;
if($kind == "Steinmetz") $kind2 = "bsm";
if($kind == "Steinmetz") $zeit2 = "zsm";
sonst ist es eine zweisung und kein vergleich -
hast recht, danke!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage