Ankündigung

Einklappen
Keine Ankündigung bisher.

Distinct und While bekommen sich in die Haare

Einklappen

Neue Werbung 2019

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

  • Distinct und While bekommen sich in die Haare

    So,

    jetz hab ich auch ma wieder ein Problem:P
    Es geht um folgendes. Ich habe eine MySQL Tabelle für meine Links. Da habe ich ne Spalte Typ(Varchar) in die ich die Linktypen reinschreib(Textlink,88*30 usw) Und die will ich dann auch automatisch auslesen lassen, sodass ich keine 100 querys manuell eingeben muss. Dass wollt ich so machen:
    PHP-Code:
    <?php
    $mysqlConn
    ->datenbankQuery("SELECT DISTINCT 
                                    `typ`
                                FROM 
                                    `links`
                                "
    );
    while(
    $typ mysql_fetch_object($mysqlConn->query)) {
        echo 
    '<div class="kopfzeile"><h3>'.$typ->typ.' Banner</h3></div>';
        
    $mysqlConn->datenbankQuery("SELECT 
                                        `id`
                                    FROM
                                        `links`
                                    WHERE
                                        `typ` = '
    $typ->typ'
                                    "
    );
        
    $limitvalue Blaetterfunktion(20,$mysqlConn->query);
        
    $mysqlConn->datenbankQuery("SELECT 
                                        `titel`,
                                        `bild`,
                                        `url`,
                                        `beschreibung` 
                                    FROM
                                        `links`
                                    WHERE
                                        `typ` = '
    $typ->typ'
                                    LIMIT 
    $limitvalue,20
                                    "
    );
        while(
    $links mysql_fetch_object($mysqlConn->query)) {
            echo 
    '<div class="cntbg">';
            echo 
    '<div>[url="'.$links->url.'"]'.$links->titel.'[/url]</div>';
            if(!empty(
    $links->bild)) {
                echo 
    '<div class="ctr">[url="'.$links->url.'"][img]'.$links->bild.'[/img][/url]</div>';
            }
            echo 
    '<div>'.$links->beschreibung.'</div>';
            echo 
    '</div>';
        }
    }
    ?>
    Eigentlich seh ich da keinen logischen fehler drinn...
    Ich hole die Typen per Distinct, damit die ned doppelt vorkommen. Danach hol ich die daten zu den Typen...
    Aber es wird imma nur der erste Typ angezeigt, der in der DB gespeichert ist...
    Weiß jemand ne lösung?
    Ich denke ich hab nen logischen Fehler drinnen, find den aber ned bzw komm ned drauf....
    PHP: 5.0.5
    MySQL: 5.0.15
    (is local sonst würde ich euch schon nen Link geben zur phpinfo() )
    Greetz


  • #2
    Ich habe mir den Codew nicht wieter angesehen, aber wofür die Abfragen innerhalb der while Schleife? Für soetwas sind doch JOINs da.
    http://www.w3schools.com/sql/sql_join.asp

    Kommentar


    • #3
      soweit ich das mitbekommen hab, is das nur um 2 tabellen zu verknüpfen, oder hab ich das was falsch verstanden?
      Ich hab das alles ja in einer Tabelle...
      Geht da JOIN auch? Wenn ja, wie? Auf deutsch wär das ganz ein bisschen leichter hast du da auch nen link?

      Kommentar


      • #4
        Du kannst auch eine Tabelle sich selbst joinen lassen, in dem du zwei verschiedene Aliase verwendest.

        Kommentar


        • #5
          wie gebe ich einer tabelle 2 aliase?
          diese 2 dinger sind komplettes neuland für mich
          also join und aliase, deswegen wärs nett, wenn ihr mir das noch sagt, dann müsste ich denr est selber schaffen
          Edit
          Hab das jetz mal versucht, aber nix hinbekommen... hier mein SQL befehl:
          Code:
           SELECT link.typ, verweis.titel, verweis.url, verweis.bild, verweis.beschreibug, verweis.typ
          FROM links link, links verweis
          LEFT JOIN verweis ON ( link.typ = verweis.typ )
          LIMIT 0 , 30
          MySQL meldet:
          #1066 - Not unique table/alias: 'verweis'

          Kommentar


          • #6
            Naja ich habs jetz mit den Aliasen und dem Join ned hibekommen.. Habs aber anders gelöst.
            Hab die Typen in einer while schleife in ein array gespeichert und danach per foreach die query gestartet und die daten ausgegeben.
            Wenns jemand interresiert:
            PHP-Code:
            <?php

            $mysqlConn
            ->datenbankQuery("SELECT DISTINCT 
                                            `typ`
                                        FROM 
                                            `links`
                                        "
            );
            while(
            $typ mysql_fetch_object($mysqlConn->query)) {
                
            $typen[] = $typ->typ;
            }
            foreach(
            $typen as $typ) {
                echo 
            '<div class="kopfzeile"><h3>'.$typ.' Banner</h3></div>';
                
            $mysqlConn->datenbankQuery("SELECT 
                                                `id`
                                            FROM
                                                `links`
                                            WHERE
                                                `typ` = '
            $typ'
                                            "
            );
                
            $limitvalue Blaetterfunktion(20,$mysqlConn->query);
                
            $mysqlConn->datenbankQuery("SELECT 
                                                `titel`,
                                                `bild`,
                                                `url`,
                                                `beschreibung` 
                                            FROM
                                                `links`
                                            WHERE
                                                `typ` = '
            $typ'
                                            LIMIT 
            $limitvalue,20
                                            "
            );
                while(
            $links mysql_fetch_object($mysqlConn->query)) {
                    echo 
            '<div class="cntbg">';
                    echo 
            '<div>[url="'.$links->url.'"]'.$links->titel.'[/url]</div>';
                    if(!empty(
            $links->bild)) {
                        echo 
            '<div class="ctr">[url="'.$links->url.'"][img]'.$links->bild.'[/img][/url]</div>';
                    }
                    echo 
            '<div>'.$links->beschreibung.'</div>';
                    echo 
            '</div>
            '
            ;
                }
            }

            ?>

            Kommentar

            Lädt...
            X