• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP macht was es will...

Status
Für weitere Antworten geschlossen.

WannaBe²

Neues Mitglied
Hallo!

Es geht bei diesem Script um die Auswahl eines Charakter-Typs. Allerdings gibt PHP auch die bereits bestehenden Charaktere des Users aus. Da das ganze Abfragen über die Datenbank geht, poste ich die verwendete Klassen-Funktion noch mit.

Erst einmal das eigentliche Script:

PHP:
<?php
                if ( !LoggedIn(session_id(),$DB) )
                {
                	die("Du bist nicht eingeloggt!<br>\n\t\t<a class=\"content\" href=\"./register.php\">Account erstellen</a><br>\n\t\t<a class=\"content\" href=\"./login.php\">Login</a>\n");
                }
                if ( $DB->Count("SELECT * FROM characters WHERE UserID='".$User_Data['ID']."'") == $Game_Config['Max_Chars'] )
                {
                	die("Du hast schon die maximale Anzahl an Charakteren.<br>\n\t\t<a class=\"content\" href=\"./usercp.php\">Zurück</a>\n");
                }
                //--------------------------------------------------------------------------------------------------->
                $Charakters = $DB->GetAll("SELECT * FROM characters WHERE UserID='".$User_Data['ID']."'");

                $Char_Types = $DB->GetAll("SELECT * FROM char_types ORDER BY ID ASC");
                $Count_Chars = count($Char_Types);
                //--------------------------------------------------------------------------------------------------->
                for ( $i = 0; $i < count($Charakters); $i++ )
                {
                	if ( $Charakters[$i]['Level'] == $Game_Config['MG_Unlock'] )
                        {
                        	$MG = true;
                                break;
                        }
                        else
                        {
                        	$MG = false;
                        }
                }
                if ( $MG != true )
                {
                	$Count_Chars--;
                };
                //--------------------------------------------------------------------------------------------------->
                echo "<table width=\"100%\" cellspacing=\"0\">\n";
                echo "\t\t\t<tr>\n";
                echo "\t\t\t\t<td width=\"18%\"><b>Name</b></td>\n";
                echo "\t\t\t\t<td width=\"16%\"><b>Stärke</b></td>\n";
                echo "\t\t\t\t<td width=\"22%\"><b>Verteidigung</b></td>\n";
                echo "\t\t\t\t<td width=\"16%\"><b>Vitalität</b></td>\n";
                echo "\t\t\t\t<td width=\"16%\"><b>Energie</b></td>\n";
                echo "\t\t\t\t<td width=\"14%\"><b>Wählen</b></td>\n";
                echo "\t\t\t</tr>\n";

                for ( $z = 0; $z < $Count_Chars; $z++ )
                {
                	echo "\t\t\t<tr>\n";
                        echo "\t\t\t\t<td width=\"16%\">".$Char_Types[$z]['Name']."</td>\n";
                        echo "\t\t\t\t<td width=\"16%\">".$Char_Types[$z]['Str']."</td>\n";
                        echo "\t\t\t\t<td width=\"16%\">".$Char_Types[$z]['Agi']."</td>\n";
                        echo "\t\t\t\t<td width=\"26%\">".$Char_Types[$z]['Vit']."</td>\n";
                        echo "\t\t\t\t<td width=\"16%\">".$Char_Types[$z]['Eng']."</td>\n";
                        echo "\t\t\t\t<td width=\"10%\"><a href=\"./choose_char.php?id=".$Char_Types[$z]['ID']."\" class=\"content\">Go -></a></td>\n";
                        echo "\t\t\t</tr>\n";
                }
                echo "\t\t</table>\n";

                //--------------------------------------------------------------------------------------------------->
                ?>

Die verwendete Funktion:
PHP:
public function GetAll($Qry)
        {
        	$this->Result = mysql_query($Qry) or die("Error Code: 104 - GetAll");
                if ( $this->Result )
                {
                	while ( $this->Row = mysql_fetch_assoc($this->Result) )
                        {
                        	$this->Rows[] = $this->Row;
                        }

                        if ( is_array($this->Rows) )
                        {
                        	return $this->Rows;
                        }
                        else
                        {
                        	die("Error Code: 104 - GetAll - No Array");
                        }
                }
        }

error_reporting gibt mir folgenden Fehler aus:

Notice: Undefined index: Name in C:\xampp\htdocs\Game\_site\create_char.php on line 66

Danke schonmal,
WannaBe²
 
Code:
echo "\t\t\t\t<td width=\"16%\">".$Char_Types[$z]['Name']."</td>\n";

Den Key 'Name' gibt es nicht.

Undefinded Index ist eine Fehlermeldung bei Arrays.

Bsp.:
PHP:
<?php
 $array[$i] // Richtig
 $array["$i"] // Falsch, weil der Key als Variable übertregen wird, und der Key dann einfach "$i" heißt, also keine Variable ist.
?>

Kann auch nicht stimmen, wenn es den Key nicht gibt.
 
Zuletzt bearbeitet von einem Moderator:
Name ist ein Feld in der Tabelle char_types aber nicht in characters, also kommt diese Fehlermeldung nur, weil er auch die Daten aus der characters da mit rein packt, was nicht sein kann und darf. Nur darum geht es mir -.-
 
Hi, auf Anhieb würd ich sagen, dass Name nich existiert. Frag doch mal vorher mit isset ab, dann sollte die Notice verschwinden.

grüß
greg
 
Meine Güte, ich habs doch schon gesagt, ich habe 2 Tabellen im Script.

characters: Speichert die Charaktere des Users
char_types: Speichert die Typen zum Auswählen

PHP soll in der Liste nur die Werte aus char_types auslesen, was ja auch deutlich wird, wenn man sich die Query von $Char_Types ansieht. Allerdings packt PHP auch noch die Werte aus characters da mit rein. In der characters gibt es kein Feld 'Name', im char_types aber schon.

Mein Problem ist: Warum liest PHP Werte aus 2 Tabellen aus, obwohl in der Query nur EINE erwähnt ist?
 
Weil Du Deine Funktion zweimal aufrufst mit unterschiedlichen Query's?!
$Charakters = $DB->GetAll("SELECT * FROM characters WHERE UserID='".$User_Data['ID']."'");

$Char_Types = $DB->GetAll("SELECT * FROM char_types ORDER BY ID ASC");
 
Ich habe die Funktion mitgepostet... Alle Werte werden in einem Array gespeichert, also kann da nix überschrieben werden -.-

[Sorry wegen Doppelpost...]

...aber hat jemand ne Idee, was das sein könnte?

Mod-Edit:Zusammengefügt - Auch wenn Du Dich entschuldigst, Doppelpost´s sind verboten. (boehseronkel)
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben