kleine mySQL Frage

Diskutiere kleine mySQL Frage im Webmaster Hilfe / Programmierer Forum Forum im Bereich Computerprobleme; Guten Morgen, Ich habe eine mySQL Frage wo ich nicht auf die Lössung komme. Und zwar lese ich aus der Tabelle "wars" meine Felder aus. Mache die...

  1. #1 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Guten Morgen,

    Ich habe eine mySQL Frage wo ich nicht auf die Lössung komme.

    Und zwar lese ich aus der Tabelle "wars" meine Felder aus.
    Mache die while Schleife und gebe den Inhalt aus.

    Allerdings möchte ich eine weitere Tabelle auslesen die ich brauche. Die "icon" Tabelle.
    Dort sind zwei Felder bzw. 3. "iconId, iconGame, iconBild".

    Wie setze ich es um, dass ich innerhalb einer while Schleife auf 2 Tabellen zugreife?
    Ich wäre evt. auf AND gekommen aber bin mir nicht wirklich sicher.

    Ich hoffe, einer kann mir weiter helfen :)

    Danke
     
  2. Anzeige

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    mit welchem Script (Sprache) holst du die Daten?

    Eventuell wäre es mit Innerjoin möglich.
     
  4. #3 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Meine Auslese schaut derzeit so aus:

    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv FROM $wartbl WHERE warAktiv='yes' ORDER BY warDate LIMIT 0,4");
    while(
    $auslese $db->fetchArray($warauslese)) {
      
               
    //Winner, Looser and Draw
            
    if ($auslese['warPointsHome'] > $auslese['warPointsOp']) {
                
    $summe '[img]modules/wars/Bilder/erg_92.gif[/img]';
            } elseif (
    $auslese['warPointsHome'] < $auslese['warPointsOp']) {
                
    $summe '[img]modules/wars//Bilder/erg_95.gif[/img]';
            } else {
                
    $summe '[img]modules/wars//Bilder/erg_98.gif[/img]';
            }

    //Hier sollen die Game Icons ausgelesen werden aus der Tabellen ld_icon

    //die Ausgabe
            
    $links->newLink('','','<table width="252%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td background="modules/wars/Bilder/wars_90.gif" width="252" height="21">
        <table width="252" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>'
    .$game.'</td>
        <td>'
    .$auslese['warPointsHome'].' : '.$auslese['warPointsOp'].'</td>
        <td>'
    .$auslese['warHeimTeam'].' vs. '.$auslese['warGegner'].'</td>
        <td>'
    .$summe.'</td>
      </tr>
    </table>
    </td>
      </tr>
      <tr>
        <td background="modules/wars/Bilder/wars_93.gif" width="252" height="8"></td>
      </tr>
    </table>
    '
    ,'_self',$nav['linkCatId']);

    //while Schleife schließen
        
    }

     
  5. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    was für ein icon muss dann kommen? ist das irgendwie geregelt?
     
  6. #5 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Das Icon ist ein kleines 21 x 21 px Bild
     
  7. #6 splasch, 25.06.2009
    splasch

    splasch Erfahrener Benutzer

    Dabei seit:
    29.01.2007
    Beiträge:
    901
    Zustimmungen:
    0
    @pgriebel

    Eine 2 While Schleife ist nicht singemäs und dazu auch noch Performenc Lastig. Normal liest man die Daten mit 1 einzigen Sql befehl aus.

    Dazu müßte man wissen welche Beziehung du zwischen den 2 Tabellen hast? (Grundlagen der Datenbank entwicklung)

    Mfg Splasch
     
  8. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    [quote='pgriebel',index.php?page=Thread&postID=753264#post753264]Das Icon ist ein kleines 21 x 21 px Bild[/quote]aber wie weisst du, oder das Script, welches Icon, zu welchem DB eintrag kommt?
     
  9. #8 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Ich geb eine kurze erklärung ab :)

    Im AdminSystem lade ich Icon´s ein. Beispiel Counter-Strike Icon.
    Dann füge ich einen "Clan-War" (eine begegnug zwei Clan´s) hinzu. Gebe den Punkte Stand, den Namen usw. ein damit die Daten in die Datenbank (ld_wars) geschrieben wird.

    Zuvor habe ich in der /acp/wars.php ebenfalls eine auslese gemacht für die Icons und es in einem Array gespeichert und dies geben ich im Template (smarty) mit foreach aus, so dass die Namen der Icons die hochgeladen sind angezeigt werden als <option> Tag.

    Auf der Starte Seite des CMS soll findet ebenfalls die auslese der Clan-Wars statt. Funktioniert auch.
    Ich kann jetzt natürlich hergehen, und eine if Schleife machen und sagen das wenn game == Counter-Strike ist, das Icon cs.png angezeigt werden soll.

    Daher habe ich umgedacht und speichere die Icons(iconBild) + Namen(iconGame) in ld_icon ab und möchte es wiederrum ausgeben statt der if schleife, da es bequemer ist und ich nicht die if schleife auf 50 icons erweitern muss.

    Ich hoffe ich konnte es soweit erklären was ich meine *g*
     
  10. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    du musst aber eine beziehung zwischen den tabellen haben, damit ich weiss, für welcher Eintrag, welches Icon kommt. Also in der Tabelle, die du bereits ausliehst, zum Beipspiel. Icon_id = 1 oder so
     
  11. #10 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Jetzt komme ich gar nicht mehr mit. :D

    Wenn ich jetzt Counter-Strike der iconId 1 zuweisse, kann ich ja gleich eine if schleife machen und die immer erweitern.
    Ich mach mal Screen´s wie der ablauf im acp ist und was ich meine.

    Ich edit hier gleich meinen Beitrag.

    Edit: So, erstmal danke das ihr euch die mühe macht und versucht mir zu helfen :)

    Anhang ist dabei
     

    Anhänge:

  12. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    SELECT iconpfad FROM TBL_ICON WHERE ATTRIBUTNAHME = $auslese['warGame']
     
  13. LowBob

    LowBob Erfahrener Benutzer

    Dabei seit:
    22.06.2009
    Beiträge:
    629
    Zustimmungen:
    0
    Ort:
    Lübeck
    als datenbank struktur solltest du dann halt in deinen matches eine game_id setzten und zusätzlich eine tbl_games erstellen.

    tbl_matches
    warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv
    dazu dann eine game_id int(11) hinzufügen

    tbl_games
    game_id int(11), autoincrease
    game_name varchar(50)
    game_icon
    usw.

    das query könnte dann so aussehen:
    Code:
    " 
    SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, game_icon
    FROM tbl_matches
    JOIN tbl_games ON tbl_matches.game_id = tbl_matches.game_id
    WHERE tbl_matches.warAktiv='yes' ORDER BY tbl_matches.warDate LIMIT 0,4"
    "
    bei den selects ist dann zu beachten das du keine gleichnamigen fieldnames in den tables hast ansonsten müssen die mit tablename abgerufen werden z.b. tbl_matches.warId AS warId, tbl_matches.warDate As warDate

    dort hast du scheinbar auch bilder für die sieger gesetzt könntest du auch noch ins sql query mit hinzufügen. als beispiel jetzt mal nur für sieger und verlierer fürs unentschieden hab ich jetzt nicht mit ins query genommen.

    Code:
    " 
    SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, game_icon,
    IF (warPointsHome > warPointsOp, 'erg_92.gif', 'erg_95.gif') AS winner_image
    FROM tbl_matches
    JOIN tbl_games ON tbl_matches.game_id = tbl_matches.game_id
    WHERE tbl_matches.warAktiv='yes' ORDER BY tbl_matches.warDate LIMIT 0,4"
    "
     
  14. #13 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Okay, danke :) Ich werde es nacher testen und bescheid geben was bei raus kamm *g*

    Edit:

    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, iconId
    FROM ld_wars
    JOIN ld_icon ON ld_wars.iconId = ld_wars.iconId
    WHERE ld_wars.warAktiv='yes' ORDER BY ld_wars.warDate LIMIT 0,4"
    );
    Ich bekomme aber diesen Fehler:

    Mysql-Error: 1052
    Error-Number: Column 'iconId' in field list is ambiguous
     
  15. LowBob

    LowBob Erfahrener Benutzer

    Dabei seit:
    22.06.2009
    Beiträge:
    629
    Zustimmungen:
    0
    Ort:
    Lübeck
    wenn die fieldnames in beiden tables identisch sind, dann musst du table.fieldname angeben

    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, ld_wars.iconId AS iconId
    FROM ld_wars
    JOIN ld_icon ON ld_wars.iconId = ld_wars.iconId
    WHERE ld_wars.warAktiv='yes' ORDER BY ld_wars.warDate LIMIT 0,4"
    );
    .

    ld_wars.iconId As iconID
     
  16. #15 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Ok soweit so gut...

    nur wie benutze ich jetzt $auslese['iconBild'] ?

    Ich habe dies bisher so versucht aber bekomme ich den Fehler das die Variable nicht definiert wäre.

    PHP:
      <tr>
        <
    td>[img]$config.urlZumCMS/upload/icon/'.$auslese['iconBild'].'[/img]</td//diese Zeile 
        
    <td>'.$auslese['warPointsHome'].' '.$auslese['warPointsOp'].'</td>
        <
    td>'.$auslese['warHeimTeam'].' vs'.$auslese['warGegner'].'</td>
        <
    td>'.$summe.'</td>
      </
    tr>
     
  17. LowBob

    LowBob Erfahrener Benutzer

    Dabei seit:
    22.06.2009
    Beiträge:
    629
    Zustimmungen:
    0
    Ort:
    Lübeck
    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, ld_wars.iconId AS iconId
    FROM ld_wars
    JOIN ld_icon ON ld_wars.iconId = ld_wars.iconId
    WHERE ld_wars.warAktiv='yes' ORDER BY ld_wars.warDate LIMIT 0,4"
    );
    wenn du dieses query benutzt hast du iconBild auch nicht selected. probiers es mal damit:

    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, ld_wars.iconBild AS iconBild
    FROM ld_wars
    JOIN ld_icon ON ld_wars.iconId = ld_wars.iconId
    WHERE ld_wars.warAktiv='yes' ORDER BY ld_wars.warDate LIMIT 0,4"
    );
    hab mich vorhin schon gewundert wieso du jetzt die iconId holst.

    ich sehs gerade jetzt erst da sind aber noch dicke fehler drin auf die ich vorhin garnicht geachtet hab:
    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, ld_icon.iconBild AS iconBild
    FROM ld_wars
    JOIN ld_icon ON ld_wars.iconId = ld_icon.iconId
    WHERE ld_wars.warAktiv='yes' ORDER BY ld_wars.warDate LIMIT 0,4"
    );
     
  18. Anzeige

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  19. #17 pgriebel, 25.06.2009
    pgriebel

    pgriebel Neuer Benutzer

    Dabei seit:
    17.02.2009
    Beiträge:
    27
    Zustimmungen:
    0
    Sorry, ich kann mir vorstellen das ich nerve, aber mit dem letzten Code Schnipsel zeigt er gar nichts mehr an.

    Hier mal die komplette warBox.php

    PHP:
    $warauslese $db->query("SELECT warId,warDate,warPointsHome,warPointsOp,warHeimTeam,warGegner,warMap,warGame,warServer,warLink,warAktiv, ld_icon.iconBild AS iconBild
    FROM ld_wars
    JOIN ld_icon ON ld_wars.iconId = ld_icon.iconId
    WHERE ld_wars.warAktiv='yes' ORDER BY ld_wars.warDate LIMIT 0,4"
    );
    while(
    $auslese $db->fetchArray($warauslese)) {
            
    //Winner, Looser and Draw
            
    if ($auslese['warPointsHome'] > $auslese['warPointsOp']) {
                
    $summe '[img]modules/wars/Bilder/erg_92.gif[/img]';
            } elseif (
    $auslese['warPointsHome'] < $auslese['warPointsOp']) {
                
    $summe '[img]modules/wars//Bilder/erg_95.gif[/img]';
            } else {
                
    $summe '[img]modules/wars//Bilder/erg_98.gif[/img]';
            }
            
    /*//Icons auslesen
            if ($auslese['warGame'] == 'Counter-Strike') {
                $game = '[img]modules/wars/icon/cs.png[/img]';
            } else {
                $game = '[img]modules/wars/icon/cs.png[/img]';
            }*/        
            
            //ausgabe
            
    $links->newLink('','','<table width="252%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td background="modules/wars/Bilder/wars_90.gif" width="252" height="21">
        <table width="252" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>[img]$config.urlZumCMS/upload/icon/'
    .$auslese['iconBild'].'[/img]</td>
        <td>'
    .$auslese['warPointsHome'].' : '.$auslese['warPointsOp'].'</td>
        <td>'
    .$auslese['warHeimTeam'].' vs. '.$auslese['warGegner'].'</td>
        <td>'
    .$summe.'</td>
      </tr>
    </table>
    </td>
      </tr>
      <tr>
        <td background="modules/wars/Bilder/wars_93.gif" width="252" height="8"></td>
      </tr>
    </table>
    '
    ,'_self',$nav['linkCatId']);
        }
     
  20. LowBob

    LowBob Erfahrener Benutzer

    Dabei seit:
    22.06.2009
    Beiträge:
    629
    Zustimmungen:
    0
    Ort:
    Lübeck
    wenn kein fehler ausgegeben wird, könnte es evtl daran liegen das die entsprechen daten nicht in der db sind ansonsten kannst du gerne mal aus JOIN einen LEFT JOIN machen. wenn du icq hast schreib mich sonst einfach mal an dann geht das ganze ein bisschen schneller für dich und zieht sich nicht immer so lange hin. am ende kannst die lösung dann hier ja posten.

    edit: problem gelöst er hatte nur die fremd id auf 0
     
Thema:

kleine mySQL Frage

Die Seite wird geladen...

kleine mySQL Frage - Ähnliche Themen

  1. Frage zu "Erklärvideo"

    Frage zu "Erklärvideo": Hallo, wir würden gerne ein Erklärvideo machen lassen und fragen uns, wie genau das ablaufen würde. Gibt man der Person/der Firma, die das machen...
  2. Hardware Kauf/Tausch Fragen etc...

    Hardware Kauf/Tausch Fragen etc...: Hallo liebe Community, Ich hätte ein paar Fragen bezüglich meines Pc´s. Und zwar möchte ich ein paar Komponenten erneuern und evtl. eine...
  3. Frage zu windows 10 update

    Frage zu windows 10 update: hallo community :) Ich hab folgende Frage: Ich wollte mir vielleicht einen neuen rechner zulegen und ich hab mich gefragt ob ich dann die ältere...
  4. Frage zu ungewöhnlicher Email mit Zahlungsaufforderung

    Frage zu ungewöhnlicher Email mit Zahlungsaufforderung: Heute habe ich eine seltsame Mail erhalten. Und zwar steht darin: Sehr geehrte(r) *Voller NAME* unsere Zahlungserinnerung blieb bislang...
  5. C# und MySQL

    C# und MySQL: Hallo zusammen! Ich bräuchte dringend hilfe von Experten, da ich ein totaler Anfänger bin. Ich habe eine vorhandene Excel Tabelle. Diese soll in...