login  Naam:   Wachtwoord: 
Registreer je!
 Forum

if()

Offline svenie - 15/01/2005 20:05
Avatar van svenieHTML 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):

  1. 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
Offline Fenrir - 15/01/2005 20:09
Avatar van Fenrir PHP expert Vertel eens wat het wél moet doen, dan kunnen we ook zien of de code fout is.
Offline numlockrond - 15/01/2005 20:17
Avatar van numlockrond 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:

  1. <?php
  2.  
  3. $test = 'a';
  4.  
  5. $test++;
  6.  
  7. echo $test; //geeft "b"
  8.  
  9. ?>
Offline Fenrir - 15/01/2005 20:52 (laatste wijziging 15/01/2005 20:53)
Avatar van Fenrir PHP expert
  1. <?php
  2.  
  3. $test = 'a';
  4.  
  5. echo (int) $test; //geeft volgens mij 65
  6.  
  7. ?>
Offline svenie - 16/01/2005 15:59
Avatar van svenie 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
Offline Thomas - 16/01/2005 16:06 (laatste wijziging 16/01/2005 16:07)
Avatar van Thomas 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.
Offline svenie - 16/01/2005 16:10
Avatar van svenie HTML interesse ow, ik begrijp het!

bestaat er ook een code die in 1 keer zegt:

je hebt niet genoeg grondstoffen?
Offline Thomas - 16/01/2005 16:15
Avatar van Thomas Moderator Ik neem aan dat je met grondstoffen hout/steen/goud bedoelt ?

Dat is dan zoiets:

  1. if (($obj->hout < $houtb) || ($obj->steen < $steenb) || ($obj->goud < $goudb)) {
  2. ...
  3. }
Offline svenie - 16/01/2005 17:14
Avatar van svenie 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";
}

???

Offline Klopper - 16/01/2005 17:38
Avatar van Klopper 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.
Offline svenie - 17/01/2005 19:27 (laatste wijziging 17/01/2005 19:28)
Avatar van svenie 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):

  1. if ($_POST['barack']) {
  2. $houtb=$obj->hout-1000;
  3. $steenb=$obj->steen-1000;
  4. $goudb=$obj->goud-1000;
  5. $ijzerb=$obj->ijzer-2000;
  6. $etenb=$obj->eten-2000;
  7. if (($obj->hout >= $houtb) || ($obj->steen >= $steenb) || ($obj->goud >= $goudb) || ($obj->eten >= $etenb) || ($obj->ijzer >= $ijzerb)) {
  8. $queryb="UPDATE leden SET hout='$houtb', ijzer='$ijzerb', goud='$goudb', steen='$steenb', eten='$etenb', barack=1 WHERE id = $id";
  9. mysql_query($queryb) or die (mysql_error());
  10.  
  11. echo "Gebouwd";
  12. }
  13. else {
  14. echo "Niet genoeg grondstoffen";
  15. }
  16. }


edit: hij trekt de grondstroffen er wel van af, maar gaat daarna in de min
Offline Thomas - 17/01/2005 19:43 (laatste wijziging 17/01/2005 19:48)
Avatar van Thomas 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):

  1. if($houtb >= 0 && $steenb >= 0 && $goudb >= 0 && $etenb >= 0 && $ijzerb >= 0) {
  2. // je hebt van alles blijkbaar genoeg - trek de grondstoffen
  3. // daadwerkelijk af en bouw een barak
  4. }
Offline svenie - 17/01/2005 20:04 (laatste wijziging 17/01/2005 20:35)
Avatar van svenie 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?

  1. if ($_POST['barack']) {
  2. $houtb=$obj->hout-1000;
  3. $steenb=$obj->steen-1000;
  4. $goudb=$obj->goud-1000;
  5. $ijzerb=$obj->ijzer-2000;
  6. $etenb=$obj->eten-2000;
  7. if (($obj->hout >= $houtb) || ($obj->steen >= $steenb) || ($obj->goud >= $goudb) || ($obj->eten >= $etenb) || ($obj->ijzer >= $ijzerb)) {
  8. $queryb="UPDATE leden SET hout='$houtb', ijzer='$ijzerb', goud='$goudb', steen='$steenb', eten='$etenb', barack=1 WHERE id = $id";
  9. mysql_query($queryb) or die (mysql_error());
  10.  
  11. echo "Gebouwd";
  12. }
  13. else {
  14. echo "Niet genoeg grondstoffen";
  15. }
  16. }
Offline Fenrir - 17/01/2005 21:34
Avatar van Fenrir PHP expert
  1. if ($_POST['barack'])
  2. {
  3. $barack['hout'] = 1000;
  4. $barack['steen'] = 1000;
  5. $barack['goud'] = 1000;
  6. $barack['ijzer'] = 1000;
  7. $barack['eten'] = 1000;
  8.  
  9. if(
  10. ($obj->hout - $barack['hout'] >= 0) &&
  11. ($obj->steen - $barack['steen'] >= 0) &&
  12. ($obj->goud - $barack['goud'] >= 0) &&
  13. ($obj->eten - $barack['eten'] >= 0) &&
  14. ($obj->ijzer - $barack['ijzer'] >= 0)
  15. )
  16. {
  17.  
  18. $queryb = "UPDATE leden SET hout='$houtb', ijzer='$ijzerb', goud='$goudb', steen='$steenb', eten='$etenb', barack=1 WHERE id = $id";
  19. mysql_query($queryb) or die (mysql_error());
  20. echo "Gebouwd"
  21. ;
  22. }else
  23. {
  24. echo "Niet genoeg grondstoffen";
  25. }
  26. }
Offline svenie - 18/01/2005 15:08
Avatar van svenie 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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.277s