Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Foreach Problem“

rey

Der Frager ;)

AW: Foreach Problem

hm... mir is eingefallen kan man nicht irgendwie z.b. mit ner if schleife die maximalen spieler ermiteln die z.B. im info->players sind?
wen es bsp. insgesamt zwei spieler sind
soll die ausgabe so lauten
PHP:
echo"<td>Spieler1</td><td>Vs.</td><td>Spieler2</td>
wenn es 4 sind
echo"<td>Spieler1</td><td></td><td>Spieler2</td><br>
<td></td><td>Vs.</td><td></td><br>
<td>Spieler4</td><td></td><td>Spieler3</td>
bei 6
echo"<td>Spieler1</td><td></td><td>Spieler2</td><br>
<td>Spieler6</td><td>Vs.</td><td></td>Spieler5<br>
<td>Spieler4</td><td></td><td>Spieler3</td>
ist das irgendwie machbar anstatt eben dem foreach($info->Player as player)
echo $player->Name;
ihabs so versucht ist aber leider falsch
PHP:
foreach($info->Players as $player)
echo "<tr><td bgcolor=FF6600><b>".if ($info->NumPlayer = 2)
{
$spieler1 = $player->Name where player is 1;
}.$spieler1
."</td>Vs.<td><td>$player->Name</td>";
}
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Problem

ich habe mir überlegt alles in eine Datenbank zu schreiben. Dann kann man auch Statistiken besser berechnen.
ich habe mir gedacht der aufbau der DB schaut so aus
fileID TeamA TeamB MapName ReplayPfad Datum Dauer SpielName TeamArassen MatchUp TeamBrassen



ich lade das replay hoch und füge es dann mit einem Insert Befehl in die DB
die ganzen Daten bekomme ich durch $info = php_bw_load_replay(getcwd()."/".$pfad);
wie ich den MapName den Replaypfad das Datum SpielNamen und Matchup einfüge weiß ich bloß die Spieler mit deren Rassen bereiten mir Probleme

Die Spieler und Ihre Rassen sind in einem array mit nem Objekt
der aufbau schaut so aus habe mir den aufbau durch var_dump($info->Players); anzeigen lassen
array(4) {
[0]=>
object(stdClass)#9 (17) {
["Name"]=>
string(12) "C.Le.WeekEnd"
["Race"]=>
int(0)
["RaceName"]=>
string(4) "Zerg"
["Number"]=>
int(3)
["APM"]=>
int(55)
["Human"]=>
bool(true)
["Computer"]=>
bool(false)
["Color"]=>
int(0)
["ColorName"]=>
string(3) "Red"
["ColorHTML"]=>
int(16711680)
["IsObserver"]=>
bool(false)
["StartingLocation4"]=>
int(3)
["StartingLocation12"]=>
int(3)
["NormXpos"]=>
float(0.9140625)
["NormYpos"]=>
float(0.42578125)
["DidLeave"]=>
bool(true)
["LeaveStamp"]=>
int(1594)
}
so bei nem eins gegen eins ist es auch kein Problem die Spieler mit Ihren rassen einzutragen bloß ab einem zwei gegen zwei drei gegen drei oder 4gegen 4 wird es zu einem Problem.
schließlich sollen ja die Spieler zu ihrem Team zugeordnet werden der aufbau von $info->Teams
schaut so aus
array(2) {
[0]=>
array(2) {
[0]=>
string(11) "nemezis_krk"
[1]=>
string(12) "C.Le.WeekEnd"
}
[1]=>
array(2) {
[0]=>
string(7) "Rey-619"
[1]=>
string(10) "MegamanX13"
}
}
also wie gesagt bei einem 1 gegen 1 habe ich es hinbekommen.
ich habe mir gedacht ich gucke mit einer If schleife nach ob es ein teams gab oder nicht wenn es kein Team gab dann war es ein 1 gegen 1 und dann soll er eintragen bla bla... in die DB
und dann hänge ich jetzt bei der else Anweisung ich weiß einfach nicht wie ich es machen soll


so schaut es beim 1 gegen 1 aus
PHP:
<?php
$pfad = $_GET['path'];
?>
<?php
chdir('repasmrep/');
$info = php_bw_load_replay(getcwd()."/".$pfad);
if($info->ErrorCode != 0) 
  die("Could not load the replay ! Message : " . $info->ErrorString); 
   	$datum = date("F j, Y, G:i ",$info->GameDate); 
  		$map = $info->Map; 
			$winner = $info->Winner;
					$gewinner = $winner->Name;
			$spielerim = $info->Players;
		$spielname = $info->GameName;
				$matchup = $info->Matchup;  
  			$mapname = $map->Name;
   				 $dauer = date("i:s",$info->GameLength);
	echo"Es Spielten<br>";
  foreach($info->Players as $player)
          # Check if player is observer
		 
          if ($player->IsObserver != '1'){

                     
            echo $player->Name;
            echo "<img src='img/" . $player->RaceName . ".png'>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ";      # i got 3 pngs in /img/
                   }
	echo "<br>gegeneinander";
      #get the winner in 1o1...
      $sieger = $info->Winner;
      $gewinner = $sieger->Name;
      $rasseg = $player->RaceName;
      # get the Looser in 1o1

      foreach($info->Players as $player)
      {
         if (($player->IsObserver != '1') && ($player->Name != $sieger->Name)){
          $verlierer = $player->Name;
		  $rassev = $player->RaceName;
		  echo $rassev[1];
        }

  

}
		
		//Datum Prüfen mit Spiel Dauer und Namen
$checkdaten = mysql_query("SELECT datum,dauer,spielname FROM repasmuserstat WHERE datum='$datum' AND dauer='$dauer' AND spielname='$spielname'");
$daten_exist = mysql_num_rows($checkdaten);



if ($daten_exist>0) {
echo "<br>The game is already added";
 echo"<br><a href=\"javascript:history.go(-1);\">Back</a>";
	    die;
}
else {
}
//Everything seems good, lets insert.
$query = "INSERT INTO repasmuserstat SET datum='$datum', TemArassen ='$player->RaceName', TeamBrassen ='$rassev', spielname='$spielname', mapname='$mapname', dauer='$dauer', replaypfad='$pfad', matchup='$matchup', TemA='$gewinner', farbe='$player->ColorName', TeamB='$verlierer'";
mysql_query($query) or die(mysql_error());
echo "<br>The Game has been successfully added.";


mir ist aufgefallen das es die Sieger in den letzten array stellet
somit stellt sich die frage wie macht man das am besten ich habe keine Ahnung.
habe es so versucht echo"Gewinner:<br>".$team[1]; das ging leider nicht.
weil wenn es so funktioniert hätte hätte ich die Datenbank Tabelle die felder TeamA und TeamB um nennen können in Gewinner Verlierer
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Problem

Ich würde aus allen Begegnungen ein Team machen, das erleichtert Dir das Arbeiten mit mit der Datenbank

Tabelle User, hier nur Userspezifische Daten rein
Tabelle Teams, wenn es ein 1vs1 ist, ist Teamname=Username
Tabelle Begegnungen

habs mir nochmal überlegt der weg wäre denk ich bissel Besser ich habe es so gemacht insgesamt 14spalten für jeden Spieler eine und dann noch 14 Spalten für die Jeweilige Rasse das sind so schon 28 Spalten und dann kommen noch mapname Spielname usw. dazu. ich finde das sind ein paar spalten zuviel.
und wollte es deshalb so machen das ich alle spiele eines Team in die spalte des Teams einfüge mit dem html code dann wird es bei der auslese so ausgeben wie ich es möchte.
Aber es klappt nicht und Fehler finde ich nicht.
PHP:
elseif($info->Teams !=false){

         $i = 0;
        $replay_team = array();
        foreach($info->Teams as $team)
        {
           $i ++;
          $temp="";
          foreach($info->Players as $player)
          {
            if (in_array($player->Name,$team))
            {
                 $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."<br>";
            }
           }
          $replay_team[$i]=$temp;
      $TeamA = $replay_team[0];
      $TeamB = $replay_team[1];
         }
      }

      //Datum Prüfen mit Spiel Dauer und Namen
$checkdaten = mysql_query("SELECT Datum,Dauer,SpielName FROM replaydb WHERE Datum='$datum' AND Dauer='$dauer' AND SpielName='$spielname'");
$daten_exist = mysql_num_rows($checkdaten);



if ($daten_exist>0) {
echo "<br>The game is already added";
 echo"<br><a href=\"javascript:history.go(-1);\">Back</a>";
       die;
}
else {
//Everything seems good, lets insert.
$query = "INSERT INTO replaydb SET (TeamB,TeamA)
VALUES( addslashes(htmlspecialchars($TeamB)),
             addslashes(htmlspecialchars($TeamA)))";
mysql_query($query) or die(mysql_error());
echo "<br>The Game has been successfully added.";
 echo"<br><a href=\"javascript:history.go(-1);\">Back</a>";
}
}
es kommt
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Element
Darkshadow' at line 2
normalerweise müsste er doch so gucken wie viele Spieler in jedem Team sind wenn es drei Spieler in teamA sind und zwei Spieler in TeamB
müsste es doch so reinschreiben
das für TeamA
"<img src='img/".Zerg.".png'> Darkshadow<br>";
"<img src='img/".Protoss.".png'>Element<br>";
"<img src='img/"Protoss".png'> Tank<br>";
und das für TeamB
"<img src='img/Terra".png'>King<br>";
"<img src='img/Zerg".png'>ghost<br>";

also den Namen des Spielers jeweils und der Pfad zur rasse.
das war die idee aber es klappt leider nicht.
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Problem

der vorschlag ging.
das Problem ist jetzt bloß beim auslesen.
anstatt das er mir das bild der Gespielten rasse anzeigt und dahinter den Spielernamen zeigt er es so an.

<img src='img/Zerg.png'> DraGoN[SuNRiSe]<br><img src='img/Terran.png'> rIpPeNqUeTsCheR<br>
wie kann ich das beheben damit er das dekodiert?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.158
Beiträge
2.581.879
Mitglieder
67.225
Neuestes Mitglied
Petra
Oben