[ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 23.07.17
Príspevky: 245
Témy: 87 | 87
Bydlisko: Šuňava
Vek: 20
NapísalOffline : 30.05.2016 20:01 | Vnorenie podmienky - neviem kam

Ahojte, mám script, ktorý mi vypíše používateľov hrajúcich hru. V hre mám 6 frakcií, 3 z nich sa radia k USA (Spojencom) a ostatné k Nemecku (Osi). Chcel by som zadať podmienku, že používateľ nemôže zaútočiť na spriateľenú frakciu, teda frakcia 0 by nemohla zaútočiť na frakciu 3 a 5. Túto frakciu si vždy volí hráč pri registrácii. A samozrejme aj tie frakcie opačne, že 3 nemôže zaútočiť na 0 a na 5 a to isté pre 5 frakciu. Neviem kam by som if vnoril, lebo som to skúšal všade. Aj keď tam je podmienka, že ak je totožná frakcia pre útočníka a obrancu tak vypíše , že zaútočenie nie je možné. V elseif následne ale zaútoči, ak je iný stav. Teda dal som tam podmienku a vypísalo, že nie je možné zaútočiť, ale jednotka zaútočila. Tam by som to potreboval definovať. Neviem už ako, dokázali by ste mi pomôcť?? Prikladám aj kód, Ďakujem vám.
Kód:
if(!isset($_SESSION['uid'])){
   echo "Musíš byť prihlásený!";
}else{
   if(isset($_POST['attack2'])){
      if($user['fraction'] == $attacked_user['fraction']){
         output("Nemôžeš zaútočiť na svoju frakciu!");
      }elseif($stats['battery'] >= 10 && $timer['atime'] == 0 && $stats['attack'] >= 10 && $_POST['attack1'] != "" && $_POST['attack1'] != $_SESSION['uid'] && is_numeric($_POST['attack1']) && $_POST['attack1'] <= $id['MAX(`id`)'] && $_POST['attack1'] > 0){
         output("Bojovníci začali útok!");
         $azarobok1 = 0;
         $azarobok2 = 0;
         $atime = time();
         $working['ayes'] = $atime;
         $stats['battery'] -= 10;
         $stats['rank'] += 4;
         $timer['atime'] = 1;
         $info1 = mysql_query("SELECT `id` FROM `stats` WHERE `id`='".$_POST['attack1']."'") or die(mysql_error());
         $info2 = mysql_fetch_assoc($info1);
         $info3 = $info2['id'];
         $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $update_stats = mysql_query("UPDATE `stats` SET `battery`='".$stats['battery']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $update_ranking = mysql_query("UPDATE `ranking` SET `number`='".$info3."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
      }elseif((time() - $working['ayes']) >= 600 && $timer['atime'] == 1){
         $info1 = mysql_query("SELECT `number` FROM `ranking` WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $info2 = mysql_fetch_assoc($info1);
         $info3 = $info2['number'];
         $info4 = mysql_query("SELECT `defense`,`food`,`gold` FROM `stats` WHERE `id`='".$info3."'") or die(mysql_error());
         $info5 = mysql_fetch_assoc($info4);
         if($stats['attack'] > $info5['defense']){
            $azarobok1 = round($info5['food'] / 2);
            $azarobok2 = round($info5['gold'] / 2);
            output("Získal si ".$azarobok1." jedla a ".$azarobok2." zlata!");
            $atime = 0;
            $working['ayes'] = $atime;
            $stats['food'] += $azarobok1;
            $stats['gold'] += $azarobok2;
            if($azarobok1 > 0){
               $stats['rank'] += 1;
            }
            if($azarobok2 > 0){
               $stats['rank'] += 1;
            }
            $info5['food'] -= $azarobok1;
            $info5['gold'] -= $azarobok2;
            $azarobok1 = 0;
            $azarobok2 = 0;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$stats['food']."',`gold`='".$stats['gold']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$info5['food']."',`gold`='".$info5['gold']."' WHERE `id`='".$info3."'") or die(mysql_error());
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }elseif($stats['attack'] <= $info5['defense']){
            output("Bojovníci sa vzdali!");
            $atime = 0;
            $working['ayes'] = $atime;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }
      }elseif($timer['atime'] == 0){
         if($stats['attack'] == 0){
            output("Nemáš žiaden útok!");
         }elseif($stats['battery'] < 10){
            output("Nemáš dostatok baterky!");
         }elseif($_POST['attack1'] == "" | $_POST['attack1'] == $_SESSION['uid'] | !is_numeric($_POST['attack1']) | $_POST['attack1'] > $id['MAX(`id`)'] | $_POST['attack1'] <= 0){
            output("Toto nieje dobre číslo starostu!");
         }
      }else{
         $zostava = (600 - (time() - $working['ayes']));
         output("Musíš počkať ".$zostava." sekúnd.");
      }
   }     
   if(isset($_POST['askip'])){
      if((time() - $working['ayes']) >= 600){
         output("Bojovníci už skončili svoj útok!");
      }elseif($stats['battery'] >= 10){
         $info1 = mysql_query("SELECT `number` FROM `ranking` WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $info2 = mysql_fetch_assoc($info1);
         $info3 = $info2['number'];
         $info4 = mysql_query("SELECT `defense`,`food`,`gold` FROM `stats` WHERE `id`='".$info3."'") or die(mysql_error());
         $info5 = mysql_fetch_assoc($info4);
         if($stats['attack'] > $info5['defense']){
            $azarobok1 = round($info5['food'] / 2);
            $azarobok2 = round($info5['gold'] / 2);
            output("Získal si ".$azarobok1." jedla a ".$azarobok2." zlata!");
            $atime = 0;
            $working['ayes'] = $atime;
            $stats['food'] += $azarobok1;
            $stats['gold'] += $azarobok2;
            if($azarobok1 > 0){
               $stats['rank'] += 1;
            }
            if($azarobok2 > 0){
               $stats['rank'] += 1;
            }
            $info5['food'] -= $azarobok1;
            $info5['gold'] -= $azarobok2;
            $azarobok1 = 0;
            $azarobok2 = 0;
            $stats['battery'] -= 10;
            $stats['rank'] += 4;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$stats['food']."',`gold`='".$stats['gold']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$info5['food']."',`gold`='".$info5['gold']."' WHERE `id`='".$info3."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `battery`='".$stats['battery']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());//new
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }elseif($stats['attack'] <= $info5['defense']){
            output("Bojovníci sa vzdali!");
            $atime = 0;
            $working['ayes'] = $atime;
            $stats['battery'] -= 10;
            $stats['rank'] += 4;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `battery`='".$stats['battery']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());//new
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }
      }else{
         output("Nemáš dostatok baterky!");
      }
   }
   ?>
   <center><h2>Majori</h2></center>
   <br />
   <form action="rankings.php" method="post">
      <td><input type="text" name="attack1"></td>
      <?php
      if($timer['atime'] == 0){?>
         <td><button type="submit" name="attack2" class="btn btn-success">Zaútočiť (10% Batérie)</button></td><?php
      }else{?>
         <td><button type="submit" name="attack2" class="btn btn-warning">Skontrolovať</button></td><?php
         if((time() - $working['ayes']) < 600){?>
            <td><button type="submit" name="askip" class="btn btn-danger">Preskočiť (10% Batérie)</button></td><?php
         }
      }
      ?>
   </form>
   <table cellpadding="2" cellspacing="4">
      <tr>
         <td><img src="images/rank.png"></td>
         <td width="100px">Pozícia:</td>
         <td><img src="images/number.png"></td>
         <td width="100px">Číslo:</td>
         <td><img src="images/mayor.png"></td>
         <td width="100px">Starosta:</td>
         <td><img src="images/food.png"></td>
         <td width="100px">Jedlo:</td>
         <td><img src="images/gold.png"></td>
         <td width="100px">Zlato:</td>
      </tr>
      <?php
      $mayors = mysql_query("SELECT `rank`,`id`,`food`,`gold`,`b4` FROM `stats` WHERE `rank`>='0' ORDER BY `rank` DESC,`id` ASC") or die(mysql_error());
      $rank = 1;
      while($line = mysql_fetch_assoc($mayors)){
         echo "<tr>";
         echo "<td><td><i>" . $rank . ". (" . $line['rank'] . ")" . "</i></td></td>";
         $rank++;
         echo "<td><td><i>" . $line['id'] . "</i></td></td>";
         $get_mayor = mysql_query("SELECT * FROM `user` WHERE `id`='".$line['id']."'") or die(mysql_error());
         $mayor = mysql_fetch_assoc($get_mayor);
         ?><td><img src="images/fraction<?php echo $mayor['fraction']; ?>.png" style="width: 30px; height: 32px;"/></td><td><i><a <?php if($line['b4'] == 1){ ?>style="color: #2196F3;"<?php } ?> href="mayor.php?<?php echo $line['id']; ?>"><?php echo $mayor['username']; ?></a></i></td></td><?php
         echo "<td><td><i>" . $line['food'] . "</i></td></td>";
         echo "<td><td><i>" . $line['gold'] . "</i></td></td>";
         echo "</tr>";
      }
      ?>
   </table>
<?php
}?>

Potreboval by som definovať toto:
if($user['fraction'] == 0) {
if($attacked_user['fraction']== 3){
output("Nemôžeš zaútočiť spojeneckú frakciu!");
}}
Ďakujem za každú pomoc, už si neviem pomôcť
POTREBOVAL BY SOM TO INTEGROVAŤ NIEKDE TU!!
if(isset($_POST['attack2'])){
if($user['fraction'] == $attacked_user['fraction']){
output("Nemôžeš zaútočiť na svoju frakciu!");
}elseif($stats['battery'] >= 10 && $timer['atime'] == 0 && $stats['attack'] >= 10 && $_POST['attack1'] != "" && $_POST['attack1'] != $_SESSION['uid'] && is_numeric($_POST['attack1']) && $_POST['attack1'] <= $id['MAX(`id`)'] && $_POST['attack1'] > 0){
output("Bojovníci začali útok!");


// Spojený príspevok Pon 30.05.16 20:26

Vnorenie podmienky - neviem kam Nech skúšam ako skúšam, vždy tento výsledok aj keď dám podmienku nad ten output.


Online

Skúsený užívateľ
Skúsený užívateľ
Vnorenie podmienky - neviem kam

Registrovaný: 24.01.08
Prihlásený: 26.07.17
Príspevky: 14664
Témy: 66 | 66
Bydlisko: Žilina
Vek: 29
NapísalOnline : 30.05.2016 21:20 | Vnorenie podmienky - neviem kam

Ten kód je žart, však? Toľko problémov v jednej ukážke som už veľmi dlho nevidel. Nech sa učíš z akejkoľvek knihy, spáľ ju a zakop 50m pod zem.


_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 23.07.17
Príspevky: 245
Témy: 87 | 87
Bydlisko: Šuňava
Vek: 20
Napísal autor témyOffline : 30.05.2016 21:54 | Vnorenie podmienky - neviem kam

Ďakujem za komentár fakt k téme.


Online

Skúsený užívateľ
Skúsený užívateľ
Vnorenie podmienky - neviem kam

Registrovaný: 24.01.08
Prihlásený: 26.07.17
Príspevky: 14664
Témy: 66 | 66
Bydlisko: Žilina
Vek: 29
NapísalOnline : 31.05.2016 1:42 | Vnorenie podmienky - neviem kam

Je to k téme, pretože keby si sa to naučil poriadne a mal prehľadný kód, tak sem nemusíš prísť s otázkou "chcem tam pridať vnorenú podmienku". Pri takto zle napísanom kóde sa ti vôbec nečudujem, že nevieš čo s tým. Máš to deravé, zastaralé a veľmi veľa zlých návykov. Miešanie css, html, php, databázového prístupu, získavania dát od užívateľa atď atď.
Naozaj ti nedokážem odporučiť s čistým svedomím nič iné ako si to proste naštudovať poriadne a prísť sem, keď nebude treba študovať 300 riadkov zdrojáku kvôli jednej malej podmienke. Hlavne ak to nebude stránka na tvojom lokálnom PC a bude mať k tomu prístup viac ľudí. Stačilo by keby tvoj hosting spravil povedzme už len upgrade na najnovšiu verziu PHP a tvoja stránka skončila.


_________________
C#, PHP, ...
Online

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 26.07.17
Príspevky: 1401
Témy: 2 | 2
Bydlisko: Praha / Rev...
NapísalOnline : 31.05.2016 7:25 | Vnorenie podmienky - neviem kam

Súhlasím s Waltherom. V tom kóde sa vyznáš len ty a nikto iný. Naposledy som takúto žížalu videl, keď som opravoval webovú aplikáciu napísanú matfyzákom. Celé zle.
Najlepšie naozaj urobíš, keď to celé prepíšeš. Teraz sa v tom vyznáš iba ty, o mesiac už sa v tom nebudeš vyznať ani ty.

Daj tomu nejakú štruktúru, obaľuj čo najviac funkcionality do zmysluplne nazývaných funkcií. Oddeľ html od php - úplne. Jediný php kód v html by mali byť echo, if a foreach.
Používaj viac súborov, nemusí byť všetko v jednom. Include je kamarát.

No a k veci: je hlúposť testovať v podmienke každú frakciu s každou. Radšej to urob nejako takto
Kód:
function isFriend( $myFraction, $attackFraction ) {

 $friends = [
   [0,3,5],
   [2,4]
 ];

 foreach( $friends as $f ) {
   if( in_array($myFraction, $f) && in_array($attackFraction, $f) )
     return true;
 }

 return false;
}

A toto dáš do podmienky na správne miesto. Ale kde je to správne miesto, to tušíš len ty.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
 [ Príspevkov: 5 ] 


Vnorenie podmienky - neviem kam



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

neviem najst svoju temu kam ste ju premiestnili

v Správy pre vedenie fóra

1

792

15.11.2008 10:35

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

vnorenie stranky do stranky

v JavaScript, VBScript, Ajax

1

318

26.02.2011 23:27

walther

V tomto fóre nie sú ďalšie neprečítané témy.

podmienky

v PHP, ASP

16

583

26.02.2008 20:25

emer

V tomto fóre nie sú ďalšie neprečítané témy.

Podmienky

v Assembler, C, C++, Pascal, Java

8

246

23.11.2016 21:39

focko

V tomto fóre nie sú ďalšie neprečítané témy.

podmienky tlaciarne

v Grafické programy

0

512

01.04.2008 18:06

Kamahl

V tomto fóre nie sú ďalšie neprečítané témy.

Licencne podmienky

v Ostatné

1

372

03.06.2011 21:17

emer

V tomto fóre nie sú ďalšie neprečítané témy.

MYSQL vypis podmienky

v Databázy

6

577

07.09.2010 20:15

camo

V tomto fóre nie sú ďalšie neprečítané témy.

jQuery a podmienky

v JavaScript, VBScript, Ajax

2

448

09.04.2009 22:33

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

if empty - podmienky

v PHP, ASP

2

242

27.01.2010 13:09

davider137

V tomto fóre nie sú ďalšie neprečítané témy.

Podmienky používania (programy)

v Krčma

5

217

29.07.2012 22:52

eMp

V tomto fóre nie sú ďalšie neprečítané témy.

PHP a podmienky

v PHP, ASP

5

455

13.11.2007 10:01

mondzo

V tomto fóre nie sú ďalšie neprečítané témy.

google maps podmienky

v Ostatné

2

510

22.07.2011 16:32

jablko05

V tomto fóre nie sú ďalšie neprečítané témy.

Podmienky pouzivania Youtube.

v Služby a webstránky

7

395

21.02.2012 12:44

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Excel 2 podmienky

v Ostatné programy

2

162

13.12.2013 19:02

bizmos

V tomto fóre nie sú ďalšie neprečítané témy.

Podmienky reklamacie na slovensku

v Obchody, reklamácie a právo

16

366

10.12.2013 18:13

Daron

V tomto fóre nie sú ďalšie neprečítané témy.

vloženie podmienky do phpmailer

v PHP, ASP

5

113

05.08.2014 10:22

chrono



© 2005 - 2017 PCforum, edited by JanoF