Fehler im Code? Falsche oder keine Anzeige der Auswahl.

Fehler im Code? Falsche oder keine Anzeige der Auswahl.

am 08.12.2005 11:02:38 von swpepe

Hallo Zusammen,

leider bin ich in MySQL und PHP noch nicht so vorangeschritten wie manch
anderer hier in der NG.

Ich habe eine Datenbank erstellt aus der ich in mehreren Schritten etwas per
Formular heraussuchen will.

Als erstes muss man sich die "Liga" die man aktualisieren möchte aussuchen =
FUNKTIONIERT
Wenn die "Liga" ausgesucht worden ist, werden 2 DropDown Menüs mit den
"Mannschaften" der jeweiligen "Liga" angezeigt = FUNKTIONIERT

Nun mein Problem, jetzt sollen für jede "Mannschaft" die passenden "Spieler"
angezeigt werden.
Da ist mein Fehler es werden entweder die falschen "Spieler" angezeigt oder
überhaupt keine.


Habe folgende Tabellen in meiner Datenbank:

_kader
Spalten: K_Nummer/K_S_Nummer/K_Status/K_T_Nummer

_liga
Spalten: L_Nummer/L_Name/L_Saison/L_Sektion

_spiele
Spalten:
Spiel_NR/Liga_NR/Heimteam_NR/Gastteam_NR/Datum/Ort/Heimpunkt e/Gastpunkte/Heimtore/Gasttore

_spieler
Spalten: S_Nummer/S_Vorname/S_Nachname/S_Geschlecht/S_Gebjahr/S_GebDa t

_team
Spalten: T_Nummer/T_Verein/T_Rang/T_liga/T_Name

_verein
Spalten: V_NR/V_Name



Folgenden Code verwende ich:



$Heimteam= $HTTP_POST_VARS['Heimteam'];

$Gastteam= $HTTP_POST_VARS['Gastteam'];



if( $Heimteam == $Gastteam )

{

print( 'Du hast anscheinend den Satz
"Da habe ich mal wieder gegen
mich selbst

gespielt"
falsch verstanden ?!
Eine Mannschaft kann nicht
gegen sich selbst

antreten ! Bitte korrigieren!' );

}

else

{

$abfrage =

"SELECT

s.*, t.*, t2.*

FROM

(_spiele AS s

INNER JOIN

_team AS t

ON

s.Heimteam_NR = t.T_Nummer AND
s.Gastteam_NR=t2.T_Nummer)

INNER JOIN

_team AS t2

WHERE

t.T_Name = '".$Heimteam."' AND

t2.T_Name = '".$Gastteam."'";



$result = mysql_query( $abfrage ) or die ("Query Spielsuche failed");

$SpielNr = mysql_fetch_row($result);



if( $SpielNr[6]+$SpielNr[7] == 32 ) {

$tag= substr( $SpielNr[4],8,2);

$monat = substr( $SpielNr[4],5,2);

$jahr = substr( $SpielNr[4],0,4);

$datum = $tag.".".$monat.".".$jahr;

print( 'Wiederholungstäter !!! Das Spiel fand bereits am ' .$datum. '
statt !' );

}

else

{

print( 'Hier bitte die Einzelwertung des Spiels eingeben:
');



//Suche mir die Team-Nummer des ausgewählten Teams

$abfrage_Hteam = "SELECT * FROM _team WHERE T_Name = '" .$Heimteam. "'";

$result_Hteam = mysql_query($abfrage_Hteam)

or die ("Query HTeam failed");

$HTeam_Nr = mysql_fetch_row($result_Hteam);

$abfrage_Gteam = "SELECT * FROM _team WHERE T_Name = '". $Gastteam. "'";

$result_Gteam = mysql_query ($abfrage_Gteam)

or die ("Query GTeam failed");

$GTeam_Nr = mysql_fetch_row($result_Gteam);



print('

');



print('');

print('');



print('');

print('');



for( $anz=0; $anz<6; $anz++ )

{

print('');

print('');

// Spielpunkte des Spielers

print('');

// Tore des Spielers

print('');

// Gegentore des Spielers

print('');

print('');

}



//Und nun das Gastteam

print('');

print('');



print('');

print('');



for( $anz=0; $anz<6; $anz++ )

{

print('');

print('');

// Spielpunkte des Spielers

print('');

// Tore des Spielers

print('');

// Gegentore des Spielers

print('');

print('');

}





print('');

print('');

print('');

print('');

print('
');

print( $Heimteam );

print('
');

if( $anz<4 )

{

print( '');

}

else

{

print( '
' );

}

print('
');

print( '
');

print( '
' );

print('
');

print( '
' );

print('
');

print( $Gastteam );

print('
');

if( $anz<4 )

{

print( '');

}

else

{

print( '
' );

}

print('
');

print( '
');

print( '
' );

print('
');

print( '
' );

print('
>
');

}

}

?>





Kann mir da vielleicht jemand helfen, wo der Fehler ist oder was ich für
einen Fehler in meinem Code habe.

Vielen Dank

Gruß
Stephan

Re: Fehler im Code? Falsche oder keine Anzeige der Auswahl.

am 08.12.2005 13:52:13 von Stefan Rybacki

[MLC]X-Treme|Zuma wrote:
> Hallo Zusammen,
> ...
> ... code ...

> Kann mir da vielleicht jemand helfen, wo der Fehler ist oder was ich für
> einen Fehler in meinem Code habe.

Als erstes solltest du deine Abfragen direkt testen, d.h. ohne alles ringsherum.
D.h. benutze die mysql Kommandozeile oder ein visuelles Tool wie z.B. den Query-Browser
und überprüfe, ob deine Abfrage die gewünschten Ergebnisse liefert.

Bis denn dann
Stefan

>
> Vielen Dank
>
> Gruß
> Stephan
>
>

Re: Fehler im Code? Falsche oder keine Anzeige der Auswahl.

am 09.12.2005 12:40:44 von dev-null-use-reply-adress

[MLC]X-Treme|Zuma schrieb:

Komischer Name.

> leider bin ich in MySQL und PHP noch nicht so vorangeschritten wie manch
> anderer hier in der NG.

Das macht ja nichts. Jeder hat mal angfangen und grundsätzlich
helfen wir gern.

> Nun mein Problem, jetzt sollen für jede "Mannschaft" die passenden "Spieler"
> angezeigt werden.
> Da ist mein Fehler es werden entweder die falschen "Spieler" angezeigt oder
> überhaupt keine.

[Viiiiel Code]

> Kann mir da vielleicht jemand helfen, wo der Fehler ist oder was ich für
> einen Fehler in meinem Code habe.

Ergänzend zu Stephans Antwort, die Dir schon mal helfen könnte:

Dein Code ist sehr schwer lesbar, z.B. aufgrund der vielen Leerzeilen,
und viel zu umfangreich. Du hast sicher Verständis dafür, daß sich
kaum einer da durchwühlen möchte. Versuche das Problem bitte auf
eine kleinen, relevanten Teil einzugrenzen und poste nur diesen.


Gruß
JPM

Re: Fehler im Code? Falsche oder keine Anzeige der Auswahl.

am 12.12.2005 11:08:26 von Ulf Kadner

[MLC]X-Treme|Zuma wrote:


> $Heimteam= $HTTP_POST_VARS['Heimteam'];
> $Gastteam= $HTTP_POST_VARS['Gastteam'];
> t.T_Name = '".$Heimteam."' AND
> t2.T_Name = '".$Gastteam."'";

Ergänzend zu den Antworten von Stefan und JPM möchte ich Dir auch noch
nen paar Tips geben.

Prüfe allen Input, traue niemanden! Passend dazu:

12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html

Also solltest Du unbedingt ein mysql_escape_string:
http://www.php.net/manual/en/function.mysql-escape-string.ph p

bzw. ein mysql_real_escape_string:
http://www.php.net/manual/en/function.mysql-real-escape-stri ng.php

verwenden, um eine SQL-Injection zu verhindern!

Gibt es einen bestimmten Grund warum Du den alten, nicht superglobalen
Array $HTTP_POST_VARS den neuen/besseren/superglobalen $_POST vorziehst?

MfG, Ulf