kostenloser Webspace werbefrei: lima-city


Dublikate ausschließen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    Hallo,
    ich habe folgendes Problem:
    Ich habe ein kleines Blog-Script geschrieben, welches die Beiträge auf einer DB speichert. In der Tabellenzeile der Eintrage sind auch die Kategorien der einzelnen Einträge gespeichert.
    Nun möchte ich eine Liste der Kategorien erstellen, logischerweise soll jede Kategorie nur einmal in dieser Liste erscheinen.

    Das Script sieht bis jetzt so aus:
    <?php
      $abfrage = "SELECT category FROM blog";
      $ergebnis = mysql_query($abfrage);
     while($row = mysql_fetch_object($ergebnis))
        {
    	$category = $row->category;
    	$category_blog = ucfirst($category);
            $eintrag = "<li><a href=\"index.php?url=blog&category=" . $category . "\">" . $category_blog . "</a></li>";
    	}
       echo "<div class=\"kasten\"><h2>Kategorien</h2><ul class=\"blog_list\">$eintrag</ul></div>";
    }
    }
    }
    ?>


    Wie mache ich es, dass jede Kategorie nur einmal ausgegeben wird?
    Grüßle Fabi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich bin keine PHP Profi, aber es müsste ja eine Vergleichsfunktion geben...

    Dann kannst du ein Array erstellen, und jeden eintrag darin speichern...
    Wenn du alle Einträge aus der DB ausgelesen hast, und in das Array gespeist hast, gehst du mit einer Schleife durchs Array, und vergleichst, ob es einen Eintrag in diesem Array doppelt gibt...

    // EDIT:
    Vergleichen müsste ja dann in etwa so gehen:
    // EDIT2 - Code ein wenig korrigiert :D
    // Gesamter Inhalt wurde abgefragt und in das Array gespeichert...
    $i = 0;
    $j = 0;
    // Eintrag [0] im Array entspricht dem 1. Inhalt, der aus der Datenbank ausgelesen wurde.
    while($j < $x)  // Wobei $x die ermittelte Anzahl der abgefragten Inhalte ist...  (10 Inhalter in der DB -> x = 10)
    {
      $i = 0;
      while($i < $x)
      {
        if($array[$i] == $array[$j])
        {
          $array[$i] = '0';  // Vernichtet den doppelten Content
        }
        $i++;
      }
      $j++;
    }

    Ist vil. ein wenig Pseudo-Code mäßig, müsste aber eig. funktionieren ;)

    Jetzt hast du meiner Meinung nach 2 Möglichkeiten:
    Entweder, du machst ein 2. Array, und schreibst alle Einträge die Unique (also bereits überprüft und einzigartig) sind, in dieses zweite Array, oder du bleibst bei einem Array, und überschriebst alle doppelten (nicht gewollten) Inhalte mit 0.

    Später bei der Ausgabe (wieder eine Schleife...) kannst du dann je nach gewählter Variante entweder das ganze Array ausgeben, bzw. nur die Inhalte, in denen keine Null steht.

    Ich hoffe, dass ich dir damit keinen Blödsinn erzähle, und das in PHP geht... In C ginge es jedenfalls :D

    lg
    Sincer

    Beitrag zuletzt geändert: 19.12.2009 0:35:59 von sincer
  4. Muss das echo nicht in die Schleife?

    Also so hier:

    <?php
      $abfrage = "SELECT category FROM blog";
      $ergebnis = mysql_query($abfrage);
     while($row = mysql_fetch_object($ergebnis))
        {
    	$category = $row->category;
    	$category_blog = ucfirst($category);
            $eintrag = "<li><a href=\"index.php?url=blog&category=" . $category . "\">" . $category_blog . "</a></li>";
            echo "<div class=\"kasten\"><h2>Kategorien</h2><ul class=\"blog_list\">$eintrag</ul></div>";
    	}
    }
    }
    }
    ?>


    Beitrag zuletzt geändert: 18.12.2009 23:30:15 von zerojan
  5. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    Ich hab eine sehr einfache Lösung gefunden:

    <div class="kasten"><h2>Kategorien</h2><ul class="blog_list">
    <?php
      $abfrage = "SELECT DISTINCT category FROM blog";
      $ergebnis = mysql_query($abfrage);
     while($row = mysql_fetch_object($ergebnis))
        {
    	$category = $row->category;
    	$category_blog = ucfirst($category);
        $eintrag = "<a href=\"index.php?url=blog&category=" . $category . "\"><li>" . $category_blog . "</a></li>";
        echo $eintrag;
    }
    ?>
    </ul></div>


    Funktioniert ganz einfach mit "SELECT DISTINCT".
    Trotzdem danke an alle Beiträge.
    Grüßle Fabi
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!