Komplizierte Abfrage

  • Hallo...
    Hab im moment ein ganz doofes Problem,
    also ich versuch im moment, ein kleinen Online Fussballmanager zu erstellen,
    dass erwähn ich nur um es nachher verständlicher zu machen.

    Also nun möchte ich ein Spiel von 2 Mannschaften Simulieren..
    Jede Mannschaft hat 7 Spieler, denen man Spielerstats(Punkte) verteilen kann.

    Dummerweise ist alles in der Tabelle "hm_player" und nun möchte ich wissen,
    wie ich die Spieler der beiden Mannschaften vergleichen kann, und somit ein Spiel simulieren könnte.

    verfügbar habe ich die beiden mannschaftsnamen...

    Hoffe ihr habt mich einigermaßen verstanden und könnt mir helfen :wink:

  • beide mannschaften sind in der tabelle hm_player ?

    Code
    select ... from hm_player where mannschaft='name1' or mannschaft='name2'

    so in etwa. dann solltest 2 datensätze zurückbekommen. im ersten
    mannschaft 1, im zweiten mannschaft 2. die liest aus und schreibst
    se in nen array rein. schon kannste vergleichen...

    (wärst mit der id übrigens besser bedient als min namen)

  • Code
    $score = array('team1'=>0, 'team2'=>0);
    $sql = mysql_query('SELECT * FROM `hm_player` WHERE `mannschaft`="team1" OR mannschaft`="team2"');
    while($player = mysql_fetch_assoc($sql)) {
    $score[$player['mannschaft']]+=$player['score'];
    }

    Damit bekommst du die gesammten Scores der beiden Mannschaften.
    Das Schnippsel musst du natürlich anpassen.

    Ansonsten musst du mehr Informationen rausrücken.

    ups, da war wohl jemand ein wenig schneller :D

  • Code
    $score = array('$mannschaft1'=>0, '$mannschaft2'=>0);
    $sql = mysql_query('SELECT * FROM `hm_player` WHERE `mannschaft`="$mannschaft1" OR mannschaft`="$mannschaft2"');
    while($player = mysql_fetch_assoc($sql)) {
    $score[$player['mannschaft1']]+=$player['genauone'];
    }

    Ich weiß nicht ob ich in dem oben geändert Code schon ein fehler habe.
    genauone ist ein Attribut eines Spielers,
    die ich gerne vergleichen ggf. ausgeben möchte.

    Aber dann kommt immer folgende Fehlermeldung:

    Code
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ---/friendly3.php on line 39

    (line 39 = while($player = mysql_fetch_assoc($sql)) { )

  • also, die fehlermeldung kommt wenn er sich die daten über
    den sql-string aus der db holt. ergo is die select-anweisung
    fehlerhaft. an deiner stelle würd ich einfach den sql string mal
    kopieren und z.b. in phpmyadmin einfügen (als sql anweisung)
    und schauen was der für ne meldung bringt.

    tip: evtl hast du kein feld namens "mannschaft"

  • Hmm..
    Also jetzt hab ich schonmal nen bisschen was verändert,
    aber leider gibt er jetzt beide Werte aus:

    Code
    $score = array('$mannschaft1'=>0, '$mannschaft2'=>0);
    $abfrage = "SELECT * FROM hm_player WHERE mannschaft='$mannschaft1' OR mannschaft='$mannschaft2'";
    $sql = mysql_query($abfrage);
    while($player = mysql_fetch_assoc($sql)) 
    {
    echo $score[$player['$mannschaft1']]=$player['genauone']; 
    }

    Das ist der jetztige Code.

    Und mit:

    Code
    echo $score[$player['$mannschaft1']]=$player['genauone'];

    Zeigt er den richtigen Wert komischerweise doppelt an.

  • Man sieht du steckst noch in Kinderschuhen bei PHP

    $score = array($mannschaft1=>0, $mannschaft2=>0);
    ...
    echo $score[$player['mannschaft']]+=$player['genauone'];

    1. Du addierst die Scores nicht im while
    2. deklarierst du variablen als strings '$mannschaft1' sollte so sein $mannschaft1

  • Zitat von ::RMB::

    Man sieht du steckst noch in Kinderschuhen bei PHP

    Da haste wohl recht.
    Naja kannst du mir vielleicht sagen wie es richtig funktioniert ?

    Weil bei mir zeigt er nur 33 an oder 30 (3 ist der Wert den ich ausgeben möchte)
    will ja nur einen Wert haben.
    Im Endeffeckt will ich ja beide Werte vergleichen, zum beispiel welcher der beiden größer ist.

    ---

    Aus solchen Sachen lernt man ja wohl am besten ..
    Und ich hab dann ja was für die Zukunft :D

    Und alle fangen mal klein an :wink:

  • Nochmals mit beschreibung

    Ich würde eher klein Anfangen, ein Online Game zum lernen von PHP ist zu komplex.
    Fang doch mit einem Gästebuch an und arbeite dich zum 0815 Forum bis zum eShop und Online Game durch ;)

    Gruss

  • Zitat

    Und nebenbei bin ich Hartnäckig


    Dann sei doch mal hartnäckig beim "grundlagen lernen"