Abfrage von 6 Tabellen, dabei ersetzten von ID's durch Namen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sascha_h
    antwortet
    Hallo Leute, sorry das ich mich jetzt erst melde.
    Der Beitrag von Sallow hat mir sehr geholfen und ich bin damit ein ganzes Stück weiter gekommen.
    Den anderen Ansatz von Amica werde ichmir mal am Wochenende vornehmen. Wenn es einfacher ist bin ich immer bereit es umzusetzten.

    Danke schon mal an ALLE

    Einen Kommentar schreiben:


  • AmicaNoctis
    antwortet
    Zitat von TobiaZ Beitrag anzeigen
    @Amica: Deinen Blog-Beitrag hatte ich verlinkt.
    Na eben, hatte ich nicht bemerkt.

    Zitat von TobiaZ Beitrag anzeigen
    Aber müsste
    PHP-Code:
    $data[$color] = $row
    nicht
    PHP-Code:
    $data[$color][] = $row
    heißen?
    Völlig richtig. Ich editier das mal eben noch. Danke für den Hinweis.

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    @Amica: Deinen Blog-Beitrag hatte ich verlinkt.

    Aber müsste
    PHP-Code:
    $data[$color] = $row
    nicht
    PHP-Code:
    $data[$color][] = $row
    heißen?

    Einen Kommentar schreiben:


  • AmicaNoctis
    antwortet
    Hallo,

    ich weiß nicht, ob es (noch) hilft, aber ich hab zum Thema Gruppenwechsel mal im Blog geschrieben. Ich gebe zu, es ist nicht besonders gut erklärt, aber vielleicht ist es trotzdem halbwegs nachvollziehbar. Die Idee dahinter ist jedenfalls einfacher und flexibler als die mit der $old- oder $last-Variable.

    Edit: vielleicht gleich noch ein simples Beispiel:

    Eine Abfrage nach Möbelstücken (name, color) ergibt z. B. so etwas wie

    Tisch, Buche
    Wandregal, Kirsche
    Schreibtisch, Birke hell
    Wandschrank, Eiche rustikal
    Schreibtisch, Kirsche
    Tisch, Eiche rustikal
    Wandregal, Buche

    Will man jetzt nach der Farbe gruppieren, geht man so vor:

    PHP-Code:
    $data = array();
    while (
    $row mysql_fetch_assoc($result)) {
        
    $color $row["color"];
        
    $data[$color][] = $row// nachträglich korrigiert
    }
    print_r($data); 
    Natürlich kann man jetzt auch $row["name"] zum Gruppieren verwenden und es wird die Ergebnisse dem Namen nach ausspucken.

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 21.11.2010, 21:23.

    Einen Kommentar schreiben:


  • sallow2001
    antwortet
    Zitat von TobiaZ Beitrag anzeigen
    Es wurde nach einem Simplen Beispiel gefragt.
    Auch zu einem simplen Beispiel kann man 1 oder 2 erklärende Sätze schreiben.

    Zitat von TobiaZ Beitrag anzeigen
    Mein Code ist wirklich aufs wesentliche reduziert gewesen.
    Würde ein um Hilfe Fragender hier einen Code ohne jeglichen Kommentar posten, gäb's doch auch
    Warum sollte also ein erklärender Code nicht kommentiert werden?

    Zitat von TobiaZ Beitrag anzeigen
    Wer ein langes Tutorial will
    Verdreh' mir bitte nicht das Wort. Ich sage nicht, dass Dein Beispiel schlecht ist, ich sage nicht, dass es völlig unverständlich ist und ich sage auch nicht, dass Du seitenweise Text dazuschreiben sollst.

    Ich habe lediglich darauf hingewiesen, dass ich es besser finden würde, wenn man 1-2 Sätze dazuschreibt, um das Thema einfach direkt auf den Punkt zu bringen.

    Zum Glück ahnte ich schon, worauf Du hinaus wolltest (kannte den Begriff aber nicht) und ich bin ja nun auch nicht gerade der unerfahrendste Programmierer, aber selbst ich habe 3x hinsehen müssen, um sicherzugehen, dass Du das meinst, was ich denke, was Du meinst.

    cya

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Es wurde nach einem Simplen Beispiel gefragt. Mein Code ist wirklich aufs wesentliche reduziert gewesen. Wer ein langes Tutorial will, der liest den zig-fach hier im Forum verlinkten Blog von Amica. Man muss nun wirklich nicht in jedem Thread alles von vorne erzählen.

    Einen Kommentar schreiben:


  • sallow2001
    antwortet
    TobiaZ wollte Dir mit der "Gruppenbildung" nur sagen, dass Du Dir während Deiner Ausgabe die Gruppe merken sollst, um darauf einzugehen.

    Wenn ich's richtig verstanden habe, wäre Deine Gruppe entweder $daten['com_id'] oder $daten['pci_link'].

    Durch die Hilfsvariable $last merkst Du Dir (wie in dem Gruppenbildungs-Beispiel) die zuletzt abgearbeitete Gruppe und änderst entsprechend die Ausgabe.

    (Tabellen-Code lasse ich aus Gründen der Übericht weg.)

    PHP-Code:
    [...]
    $last "";
    while(
    $daten $style->fetch_array())
    {
       if (
    $last != $daten['com_id'])
       {
          echo 
    "<br>";
          echo 
    $daten['com_id'] . " ";
          echo 
    $daten['pic_link'] . " ";
          echo 
    htmlspecialchars ($daten['style_id']) . " ";
          echo 
    htmlspecialchars ($daten'stylename']) . " ";
          
    $last $daten['com_id'];
       }
       else
       {
          echo 
    htmlspecialchars ($daten['style_id']) . " ";
          echo 
    htmlspecialchars ($daten'stylename']) . " ";
       }
    }
    [...] 
    Ich hoffe, ich hab' nichts übersehen...ist schon spät.



    Warum's TobiaZ so umständlich macht mit seiner Hilfe...tja, daran muss man sich leider in PHP-Foren gewöhnen. Manche Helfer werfen einem Fragenden lieber seitenweise Informationsbrocken zu, anstatt nur 1/10 der Zeit zu investieren, um einfach den helfenden Code hinzutippern.

    Aber wir wollen uns ja nicht

    Wir haben uns ja schließlich alle lieb.


    cya



    P.S.:
    Meiner Meinung nach sollte jeder noch so simpel gehaltene und scheinbar selbsterklärende Quellcode kommentiert werden, falls er dazu dienen soll, etwas zu erklären bzw. aufzuzeigen.

    Einen Kommentar schreiben:


  • sascha_h
    antwortet
    Sicherlich helft ihr alle nur unentgeltlich, das mache ich auch bei meinen Kollegen. da habe ich auch nicht immer die passende antwort parat. aber ich kann beispiele nennen. und mehr möchte ich ja gar nicht. weder fordernd noch nörgelnt. Und ganz klar ist es mein problem. das steht ausser frage.

    ich hatte nur die hoffnung das hier auch anfängern geholfen wird. man muss aber anscheinend eigentlich schon alles beherrschen, sonst wird einem nicht geholfen. Jeder hat mal angefangen, der eine 2001 der andere 2010.

    Tue dir mal den Gefallen, so wie ich es getan habe und google nach gruppenwechsel php, und bekommst du ein passendes ergebnis?

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    $old speichert einfach den aktuellen (bzw. im nächsten Schleifendurchlauf dann den letzte) Wert für die zu grupppierende Eigenschaft. In deinem Fall kommt da halt die com_id rein, denn nach der willst du gruppieren. (statt old wäre wohl last) der bessere Name, gebe ich zu.

    Aber ansonsten ist das Beispiel so simpel gehalten, dass es denke ich selbsterklärend ist. Anderenfalls frag nach, aber hör auf rumzunörgeln. Es ist DEIN Problem, bei dem wir nur freiwillig und unentgeltlich versuchen wollen zu helfen. Es gibt also keinen Grund hier fordernd zu werden.

    Einen Kommentar schreiben:


  • sascha_h
    antwortet
    Hab ich gelesen, was bringt mir das nun? Ohne Erklärung? einfach nur KOT.

    Ich würde auch gerne verstehen warum ich was mache. Mit $old = ' '; kann ich nichts anfangen. Weil ich es nicht verstehe..

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    PHP-FAQ: - Was ist ein Gruppenwechsel?

    Einen Kommentar schreiben:


  • sascha_h
    antwortet
    Ja danke TobiaZ. Wenn ich was vernünftiges finden würde zum Gruppenwechsel, meinste dann würde ich hier noch weiter fragen??

    Ein simples Beispiel würde mir ja reichen. Learning by doing.

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Dann wandel es doch einfach um. Das stichwort Gruppenwechsel wurde dir bereits genannt!

    Einen Kommentar schreiben:


  • sascha_h
    antwortet
    So, also ich habe heute einiges gegooglet. Gruppenbildung, Datenbank normalisieren etc.
    Und dann habe ich mit einem Kumpel telefoniert und auch ihm mein Problem geschildert. Er meinte sofort, du brauchst eine weitere Tabelle.
    So wie er mir das erklärt hat, habe ich das auch verstanden.

    Also nun habe ich (erstmal) drei Tabellen:
    competition1 (com_id/pic_link )
    verweis (verweis_id/com_id/style_id)
    style (style_id/stylename)

    Während ich nun in die competition1 Tabelle immer nur ein Bild einfüge mit einer com_id, kann ich in die Verweis Tabelle nun mehrere Einträge mit der gleichen com_id machen.
    Aber wie löse ich nun die Anzeige, ich habe keine Ahnung.
    Ich möchte gerne das Bild(pic_link) einmal anzeigen lassen und dazu die stylename. Daran hat sich nix geändert.
    Vielleicht kann mir ja jemand, nen bisschen auf die Sprünge helfen.

    Mit dieser Abfrage:
    PHP-Code:
    <?php
    include "../includes/db_daten.php";
    $style $mysqli->query(
        SELECT  * FROM  competition1,verweis,style                           
        WHERE 
        competition1.com_id=verweis.com_id
        AND
        verweis.style_id=style.style_id "
    );
        {         
             while(
    $daten $style->fetch_array()) 
                {   
                 echo 
                      
    "<table><tr>
                      <td>"  
    .  ($daten['com_id']) ."</td>"
                      
    "<td>"  .  ($daten['pic_link']) ."</td>"
                    
    "<td>"  htmlspecialchars ($daten['style_id']) . "</td>"
                    
    "<td>"  htmlspecialchars ($daten['stylename']) . "</td></tr>";
                }
               
    $style->close();
             echo 
    "</table>";
      
        }
    ?>
    bekomme ich dieses ergebnis. Was ich so halt nicht möchte.
    HTML-Code:
    1	../vollbild/2403-08-Michelle.jpg	3	tri top
    1	../vollbild/2403-08-Michelle.jpg	6	mirco knicker
    2	../vollbild/2404-04-Christine.jpg	5	lighthouse shorts
    2	../vollbild/2404-04-Christine.jpg	10	hot shorts
    Ich möchte
    HTML-Code:
    1 ../vollbild/2403-08-Michelle.jpg 3 tri top 6 mirco knicker
    2 ../vollbild/2404-04-Christine.jpg 5 lighthouse shorts 10 hot shorts

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Ich glaub, du solltest a) deine Datenbank normalisieren und b) dich mit Gruppenwechsel anfreunden. Oder evtl. auch mehrfach die selbe Tabelle joinen?

    Meine Idee wäre, die Styles aus der Tabelle Styles in ein Array abzulegen und dann bei der Ausgabe die ID durch den Namen zu ersetzten lassen.
    ABER wie???
    Die Idee ist zwar nicht sonderlich gut, aber woran scheiterst du denn? Sicher bekommst du die Daten ins Array rein und wie man auf einem bestimmten Array-Index (=ID) zugreift, sind genauso Grundlagen.

    Einen Kommentar schreiben:

Lädt...
X