if()
svenie - 15/01/2005 20:05
HTML interesse
ik ben niet zo'n kei in php
dus daarom:
een keer op sitemasters kreeg ik deze code, na een vraag, maar de code doet het niet
(de code):
if (($obj->hout >= $houtb) AND ($obj->steen >= $steenb) AND ($obj->goud >= $goudb) AND ($obj->eten >= $etenb) AND ($obj->ijzer >= $ijzerb)) {
if ( ( $obj -> hout >= $houtb ) AND ( $obj -> steen >= $steenb ) AND ( $obj -> goud >= $goudb ) AND ( $obj -> eten >= $etenb ) AND ( $obj -> ijzer >= $ijzerb ) ) {
op sitemasters tutorial staat dit:
if ($a > $b){
if($f = $g){
etc. etc.
maar de code van de tutorial word erg lang.
dus weten jullie een variant van de bovenste die het wel doet???
p.s. ik heb && ertussen ook al geprobeerd
14 antwoorden
Gesponsorde links
Fenrir - 15/01/2005 20:09
PHP expert
Vertel eens wat het wél moet doen, dan kunnen we ook zien of de code fout is.
numlockrond - 15/01/2005 20:17
Onbekend
Citaat:
p.s. ik heb && ertussen ook al geprobeerd
&& is een synoniem voor AND, dus maakt idd niks uit
Citaat:
Maar >= gebruik je toch alleen voor keys van arrays, integers en dus ook aantallen?
>= is gewoon een vergelijkings operator, je kunt getallen vergelijken (integers en floats):
if(1 > 2)
maar ook letters:
if('o' >= 'd') geeft TRUE
je kunt bijv. ook dit doen:
<?php
$test = 'a';
$test++;
echo $test; //geeft "b"
?>
<?php
$test = 'a' ;
$test ++;
?>
Fenrir - 15/01/2005 20:52 (laatste wijziging 15/01/2005 20:53)
PHP expert
<?php
$test = 'a';
echo (int) $test; //geeft volgens mij 65
?>
<?php
$test = 'a' ;
echo ( int
) $test ; //geeft volgens mij 65
?>
svenie - 16/01/2005 15:59
HTML interesse
ok....
nou hij haalt uit de tabel allemaal getallen
en als hout dat je moet betalen net zoveel of minder is dan het hout dat je hebt in de tabel, dan moet hij het kopen. maar de else doet het niet echt,
en ik denk dat het ligt aan die code hierboven
Thomas - 16/01/2005 16:06 (laatste wijziging 16/01/2005 16:07)
Moderator
Euh, realiseer je goed wat het else-statement betekent.
Het is de ontkenning van je if-statement.
Als je if-statement het volgende is:
ik heb hout genoeg
EN
ik heb steen genoeg
EN
ik heb goud genoeg
EN
ik heb eten genoeg
dan is de ontkenning hiervan (het else-statement):
ik heb hout te weinig
OF
ik heb steen te weinig
OF
ik heb goud te weinig
OF
ik heb eten te weinig
Je hebt in het else-geval dus één of meer (!) zaken tekort.
svenie - 16/01/2005 16:10
HTML interesse
ow, ik begrijp het!
bestaat er ook een code die in 1 keer zegt:
je hebt niet genoeg grondstoffen?
Thomas - 16/01/2005 16:15
Moderator
Ik neem aan dat je met grondstoffen hout/steen/goud bedoelt ?
Dat is dan zoiets:
if (($obj->hout < $houtb) || ($obj->steen < $steenb) || ($obj->goud < $goudb)) {
...
}
if ( ( $obj -> hout < $houtb ) || ( $obj -> steen < $steenb ) || ( $obj -> goud < $goudb ) ) {
...
}
svenie - 16/01/2005 17:14
HTML interesse
en met else
moet je dan nog wel
else {
echo "je hebt niet genoeg hout";
}
else {
echo "je hebt niet genoeg steen";
}
enz.
of kun je dan gewoon doen:
else {
echo "Je hebt niet genoeg grondstoffen";
}
???
Klopper - 16/01/2005 17:38
HTML interesse
Naar mijn weten bestaat er geen kortere manier, maar zou je de complete script kunnen posten, want volges mij is het probleem dat je geen verbinding hebt met een database.
En misschien is het ook wel handig om aan te geven wat voor foutmelding hij geeft en wat hij wel/niet doet wat hij hoort te doen.
svenie - 17/01/2005 19:27 (laatste wijziging 17/01/2005 19:28)
HTML interesse
ik heb alles uitgeprobeerd namelijk:
meerdere
else {
}
dingen
maar daar gaf hij een parse error bij de 2e else
dit is de code (ingekort):
if ($_POST['barack']) {
$houtb=$obj->hout-1000;
$steenb=$obj->steen-1000;
$goudb=$obj->goud-1000;
$ijzerb=$obj->ijzer-2000;
$etenb=$obj->eten-2000;
if (($obj->hout >= $houtb) || ($obj->steen >= $steenb) || ($obj->goud >= $goudb) || ($obj->eten >= $etenb) || ($obj->ijzer >= $ijzerb)) {
$queryb="UPDATE leden SET hout='$houtb', ijzer='$ijzerb', goud='$goudb', steen='$steenb', eten='$etenb', barack=1 WHERE id = $id";
mysql_query($queryb) or die (mysql_error());
echo "Gebouwd";
}
else {
echo "Niet genoeg grondstoffen";
}
}
if ( $_POST [ 'barack' ] ) {
$houtb = $obj -> hout - 1000 ;
$steenb = $obj -> steen - 1000 ;
$goudb = $obj -> goud - 1000 ;
$ijzerb = $obj -> ijzer - 2000 ;
$etenb = $obj -> eten - 2000 ;
if ( ( $obj -> hout >= $houtb ) || ( $obj -> steen >= $steenb ) || ( $obj -> goud >= $goudb ) || ( $obj -> eten >= $etenb ) || ( $obj -> ijzer >= $ijzerb ) ) {
$queryb = "UPDATE leden SET hout='$houtb ', ijzer='$ijzerb ', goud='$goudb ', steen='$steenb ', eten='$etenb ', barack=1 WHERE id = $id " ;
}
else {
echo "Niet genoeg grondstoffen" ; }
}
edit: hij trekt de grondstroffen er wel van af, maar gaat daarna in de min
Thomas - 17/01/2005 19:43 (laatste wijziging 17/01/2005 19:48)
Moderator
Euh, je moet controleren of je genoeg grondstoffen hebt. Je maakt dan net zoals hierboven een denkbeeldige rekensom... En je moet iets positiefs overhouden...
Als je (onder andere) dit doet:
$houtb = $obj->hout-1000;
en vervolgens (onder andere) dit controleert:
if($obj->hout >= $houtb)
Ja, dat is natuurlijk ALTIJD waar ...
Eerst maak je $houtb gelijk aan $obj->hout MIN 1000, en vervolgens ga je controleren of $obj->hout ten minste $houtb is...
We schrijven dit eens uit...
$obj->hout >= $houtb
== {definitie $houtb}
$obj->hout >= $obj->hout - 1000
== {$obj->hout naar links}
0 >= -1000
-1000 is volgens mij altijd kleiner dan 0...
Wat je moet controleren is of, nadat je denkbeeldig grondstoffen hebt afgetrokken (het resultaat wordt in $houtb etc opgeslagen) of je nog grondstoffen overhoudt - of precies genoeg grondstoffen hebt...
Je moet dus het volgende controleren (er van uitgaande dat het bouwen van een barak zowel hout, steen, ijzer, goud en eten kost):
if($houtb >= 0 && $steenb >= 0 && $goudb >= 0 && $etenb >= 0 && $ijzerb >= 0) {
// je hebt van alles blijkbaar genoeg - trek de grondstoffen
// daadwerkelijk af en bouw een barak
}
if ( $houtb >= 0 && $steenb >= 0 && $goudb >= 0 && $etenb >= 0 && $ijzerb >= 0 ) {
// je hebt van alles blijkbaar genoeg - trek de grondstoffen
// daadwerkelijk af en bouw een barak
}
svenie - 17/01/2005 20:04 (laatste wijziging 17/01/2005 20:35)
HTML interesse
:S duidelijk
volges mij staat daar dat als er bijv. meer hout is dan 0, dan kan je het wel kopen, dus als je 1 hout hebt kom je -999 te staan?
ik snap het niet helemaal....
kun je het misschien uitschrijven voor dit stukje?
if ($_POST['barack']) {
$houtb=$obj->hout-1000;
$steenb=$obj->steen-1000;
$goudb=$obj->goud-1000;
$ijzerb=$obj->ijzer-2000;
$etenb=$obj->eten-2000;
if (($obj->hout >= $houtb) || ($obj->steen >= $steenb) || ($obj->goud >= $goudb) || ($obj->eten >= $etenb) || ($obj->ijzer >= $ijzerb)) {
$queryb="UPDATE leden SET hout='$houtb', ijzer='$ijzerb', goud='$goudb', steen='$steenb', eten='$etenb', barack=1 WHERE id = $id";
mysql_query($queryb) or die (mysql_error());
echo "Gebouwd";
}
else {
echo "Niet genoeg grondstoffen";
}
}
if ( $_POST [ 'barack' ] ) {
$houtb = $obj -> hout - 1000 ;
$steenb = $obj -> steen - 1000 ;
$goudb = $obj -> goud - 1000 ;
$ijzerb = $obj -> ijzer - 2000 ;
$etenb = $obj -> eten - 2000 ;
if ( ( $obj -> hout >= $houtb ) || ( $obj -> steen >= $steenb ) || ( $obj -> goud >= $goudb ) || ( $obj -> eten >= $etenb ) || ( $obj -> ijzer >= $ijzerb ) ) {
$queryb = "UPDATE leden SET hout='$houtb ', ijzer='$ijzerb ', goud='$goudb ', steen='$steenb ', eten='$etenb ', barack=1 WHERE id = $id " ;
}
else {
echo "Niet genoeg grondstoffen" ; }
}
Fenrir - 17/01/2005 21:34
PHP expert
if ($_POST['barack'])
{
$barack['hout'] = 1000;
$barack['steen'] = 1000;
$barack['goud'] = 1000;
$barack['ijzer'] = 1000;
$barack['eten'] = 1000;
if(
($obj->hout - $barack['hout'] >= 0) &&
($obj->steen - $barack['steen'] >= 0) &&
($obj->goud - $barack['goud'] >= 0) &&
($obj->eten - $barack['eten'] >= 0) &&
($obj->ijzer - $barack['ijzer'] >= 0)
)
{
$queryb = "UPDATE leden SET hout='$houtb', ijzer='$ijzerb', goud='$goudb', steen='$steenb', eten='$etenb', barack=1 WHERE id = $id";
mysql_query($queryb) or die (mysql_error());
echo "Gebouwd"
;
}else
{
echo "Niet genoeg grondstoffen";
}
}
if ( $_POST [ 'barack' ] )
{
$barack [ 'hout' ] = 1000 ;
$barack [ 'steen' ] = 1000 ;
$barack [ 'goud' ] = 1000 ;
$barack [ 'ijzer' ] = 1000 ;
$barack [ 'eten' ] = 1000 ;
if (
( $obj -> hout - $barack [ 'hout' ] >= 0 ) &&
( $obj -> steen - $barack [ 'steen' ] >= 0 ) &&
( $obj -> goud - $barack [ 'goud' ] >= 0 ) &&
( $obj -> eten - $barack [ 'eten' ] >= 0 ) &&
( $obj -> ijzer - $barack [ 'ijzer' ] >= 0 )
)
{
$queryb = "UPDATE leden SET hout='$houtb ', ijzer='$ijzerb ', goud='$goudb ', steen='$steenb ', eten='$etenb ', barack=1 WHERE id = $id " ;
;
} else
{
echo "Niet genoeg grondstoffen" ; }
}
svenie - 18/01/2005 15:08
HTML interesse
thnx man!
jullie zijn echt great
bij deze zou ik al mijn punten willen geven aan Fenrir (ook al maakt het niet zoveel uit)
Gesponsorde links
Dit onderwerp is gesloten .