kostenloser Webspace werbefrei: lima-city


Unterseiten ermitteln und gruppieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    anlagegeld

    anlagegeld hat kostenlosen Webspace.

    Hallo

    ich habe in einer MySQL Tabelle einige URLs
    manche davon sind Unter-Seiten von einer Domain bzw. von einer SubDomain.

    wie kann ich die Links so sortieren, dass alle Seiten die jeweils auf der gleichen Domain liegen
    gemeinsam in einem Block angezeigt werden,
    dabei sollen aber SubDomains als eigene Domains behandelt werden (z.B. Lima-city User Seiten)

    $sql_select = "SELECT * FROM `".$db_tabelle1."`"; 
    $result_select = mysql_query($sql_select, $con);
    if (!$result_select) { echo "<br >Fehler: <br >\r\n" . mysql_error(); exit; }
    
    $daten = array();
    while ( $row = mysql_fetch_assoc($result_select) ) {
    $daten[] = $row;
    }
    
    echo "<pre>\r\n"; 
    print_r($daten); 
    echo "</pre>\r\n";


    Also 2D Array und Der Spaltenname für die URLs ist 'nlink'

    Wie kann ich jetzt das $daten Array so sortieren (gruppieren)
    dass alle URLs von der gleichen Domain (bzw. Subdomain)
    nacheinander im Array vorliegen ? (bzw. gruppiert ausgegeben werden können)

    ich kann mit parse_url() den host ermitteln, aber dann die Sortierung der Daten ?

    $hostcheck = array(); 
    foreach ($daten as $ditem) { 
    $purl = parse_url($ditem['nlink']); 
    if (!in_array($purl['host'], $hostcheck)) { $hostcheck[] = $purl['host']; } 
    }


    dann habe ich ein Array mit allen vorkommenden HOSTs
    wie soll ich dann je unique HOST die URLs zuordnen?
    Schleife um die unique HOSTs und je HOST dazu eine neue MySQL Abfrage ?


    ... oder (spontane IDEE) soll ich hier gleich ein Array erstellen mit KEY = HOSTNAME

    $hostliste = array(); 
    foreach ($daten as $ditem) { 
    $purl = parse_url($ditem['nlink']); 
    $hostliste[$purl['host']][] = $ditem;  // 3D-Array 
    }


    ob das funktioniert? Hostname als Key und in 3.Ebene die Daten zum Eintrag ?!?
    aber wie bekomme ich dann die Daten so sortiert in ein Array für die Ausgabe (2D Array) ?

    oder gibts ganz andere (bessere) Lösungen ?
    .. z.B. beim Speichern neuer Einträge HOST gleich als neue Spalte in Tabelle dazu
    das wäre wohl das Beste (einfachste) aber dann muss ich DB neu anlegen und Daten neu importieren

    ... sorry, ich "denke" hier laut, paar Ideen sind mir erst beim Schreiben gekommen

    wie würdet Ihr es machen: URLs nach HOST sortiert (gruppiert) ausgeben ?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Ich werde sagen es kommt darauf an, mit welchen Domains du arbeitest...
    Wenn du z.B. nur mit Subdomains von irgendeinem Freehoster arbeitest, wäre es vlt nicht unbedingt sinnig nur nach dem Host zu sortieren...

    Sollten es also mehr subdomains als domains sein, dann solltest du nach den Subdomains sortieren.

    Oder hab ich dich nun ganz falsch verstanden? :D
  4. Autor dieses Themas

    anlagegeld

    anlagegeld hat kostenlosen Webspace.

    ne... aehhm ja ...

    die SubDomains sollten schon bleiben,
    ich will auch Freehoster Subdomains als unique Hosts behandeln,

    würde ich nur Domains (ohne SubDomains) machen dann hätte ich
    bei 10 verschiedenen Lima-City Userseiten alles in einem Blok lima-city.de
    ich will aber für jede eigenständige Webseite (auch von Freehoster Subdomain) eigene Blöcke

    ich hab mir die Antwort ja quasi schon selbst gegeben, .. idee beim Schreiben bekommen

    $hostliste = array(); 
    
    $i=0; 
    foreach ($daten as $ditem) { 
    $purl = parse_url($ditem['nlink']); 
    $hostliste[$purl['host']][$i] = $ditem;  // 3D-Array 
    $i++;
    }
    
    
    foreach($hostliste as $host => $aitem) { 
    echo "<h2>".$host."</h2>\r\n"; 
    
    foreach($aitem as $ashow) { 
    echo "<pre>\r\n"; 
    print_r($ashow); 
    echo "</pre>\r\n";
    }
    
    echo "<hr />\r\n"; 
    }


    die Frage ist nur bis wieviele URLs das gut geht .... wegen Speicher oder Timeout
    bzw so wird es aufwendig die Ausgabe in Seiten zu splitten mit LIMIT in mySQL Abfrage
    denn wenn ich LIMIT setze, dann sind garantiert noch URLS vom Host ausserhalb des LIMITs
    da müsste ich je Host noch eine MySQL Abfrage machen, um die restlichen Links zu finden

    vielleicht hat ja jemand ne bessere Idee, wie ich das managen kann ?!?
    Danke

    Beitrag zuletzt geändert: 25.10.2011 17:39:54 von anlagegeld
  5. 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!