kostenloser Webspace werbefrei: lima-city


MySQL Benutzerliste

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    Servus,
    Ich habe in einer MySQL Tabelle Benutzer gespeichert, die ich auslesen möchte.
    Allerdings sollen die Benutzer nach dem Anfangsbuchstaben geordnet sein und zwischen jedem neuen Anfangsbuchstaben eine Zwischenüberschrift mit diesem Buchstaben sein.

    Hier mal zur Verbildlichung:

    A
    Aaron
    Arnold
    Augustus

    B
    Bastian
    Benedikt
    Benjamin

    C
    ...


    Wie ermögliche ich das mit PHP?

    Grüßle Fabi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Einfach alles sortiert abfragen....

    $abfrage = "SELECT * FROM tabelle ORDER BY name";


    Beitrag zuletzt geändert: 11.5.2010 16:51:34 von buechsdeluxe
  4. Ich habe so etwas ähnliches mal programmiert. Anbei mal eine gekürzte Version. Das baut die Mitglieder in einer 4-Spalten Tabelle auf.

    $query= mysql_query("SELECT id, nutzer, vorname, name, gruppe FROM mitglieder ORDER BY vorname ASC");
    
    // Navigationstabelle erzeugen!
    // ----------------------------
    $differenz     = ord('a')-ord('A'); // Differenz zwischen Alphabeten
    $buchstabe_alt = chr(ord('A')-1);
    $spalten       = 4;
    $aktspalte     = 1;
    $navitab       = "<table width='100%'><tr>";
    
    while ($row = mysql_fetch_object($query))
    {
      $buchstabe_neu = strtoupper((substr($row->vorname,0,1)));
      if(ord($buchstabe_neu)==0) $buchstabe_neu = $buchstabe_alt;     // falls Leerzeichen, dann kein neuen Buchstaben erkennen
      if (ord($buchstabe_neu) != ord($buchstabe_alt)) //falls neuer Buchstabe gefunden wurde, neue Buchstabenausgabe in Indexleiste erzeugen
      {
         if($aktspalte != 1) $navitab .= "</table></td>";
         if($aktspalte > $spalten) 
         {
    	$navitab .= "</tr><tr>";
    	$aktspalte = 1;
         }
        $navitab .= "<td valign='top'><table width='100%'><tr><td valign='top' colspan='2' class='index_Buchstabe'>";
        for ($i = 1; $i < (ord($buchstabe_neu)-ord($buchstabe_alt)); $i++)
        {
    	$navitab .= chr(ord($buchstabe_alt)+$i)."&nbsp;\n"; // Zwischenbuchstaben
        }
        if((ord($buchstabe_neu)-ord($buchstabe_alt))>1) 
        {			
    	$navitab.= "</td></tr></table></td>";
    	if($aktspalte == $spalten) 
    	{
               $navitab .= "</tr><tr>";
    	   $aktspalte = 0;
    	}
    	$navitab .= "<td valign='top'><table width='100%'><tr><td valign='top' colspan='2' >"; // Neue Spalten für Einträge
    	$aktspalte++;
         }
        $navitab .= $buchstabe_neu."&nbsp;\n</td></tr>"; 
        $navitab .= "<tr><td width='95%'><a href='".$_SERVER['SCRIPT_NAME']."?aktion=details&zeige=".$row->nutzer."'>".$row->vorname." ".$row->name."</a></td><td>[".substr($gruppe[$row->gruppe],0,1)."]</td></tr>";
       $buchstabe_alt = $buchstabe_neu;
       $aktspalte++;
      }
      else
      {
        $navitab .= "<tr><td width='95%'><a href='"$_SERVER['SCRIPT_NAME']."?aktion=details&zeige=".$row->nutzer."'>".$row->vorname." ".$row->name."</a></td><td>[".substr($gruppe[$row->gruppe],0,1)."]</td></tr>";
      }
    }
    // Alphabet mit Buchstaben auffüllen bis Z, falls nicht schon vorher erreicht.
    if(ord('Z')-ord($buchstabe_alt))
    {
    	if(mysql_num_rows($query) != 0) $navitab .= "</table></td>";
    	if($aktspalte > $spalten) $navitab .= "</tr><tr>";
    	$navitab .= "<td valign='top'><table width='100%'><tr><td class='index_Buchstabe_deaktiviert'>";
    	for ($i = 1; $i <= (ord('Z')-ord($buchstabe_alt)); $i++)
    	{
            	$navitab .= chr(ord($buchstabe_alt)+$i)."&nbsp;\n"; // Zwischenbuchstaben
    	}
    	$navitab .= "</td></tr></table>";
    }
    $navitab       .= "</tr></table>";
    echo $navitab;


    Ich hoffe, das funktioniert so, da halt gekürzt. Ansonsten melde Dich nochmal per PN.
  5. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    Falls du es erstmal ohne Tabelle haben willst und es relativ kurz sein soll hab ich mich grad mal drangesetzt und was geschrieben.
    Es erfüllt vom Prinzip her deine Anforderungen und das Design kannst du ja selbst noch genau anpassen.
    Allerdings überspringt es leere Buchstabengruppen.
    <?php
    	$userlist = mysql_query("SELECT username FROM user ORDER BY username");
    	$letter = "";
    	while($user = mysql_fetch_object($userlist)) {
    		$firstletter = substr($user->username, 0, 1);
    		if($firstletter != $letter) {
    			$letter = $firstletter;
    			echo ("<h2>$letter</h2>\n<br>\n");
    		}
    		echo ("$user->username<br>\n");
    	}
    ?>


    MfG
    karlsve

    Beitrag zuletzt geändert: 11.5.2010 17:24:10 von karlsve
  6. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    @karlsve:
    Des ist prima! War grad am entwirren des anderen Scriptes.
    Danke!
    Fabi

    Beitrag zuletzt geändert: 11.5.2010 17:33:16 von fabian-riedel
  7. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    Null Problem ;)
    Der Thread kann dann ja jetzt geschlossen werden oder?
    Falls du noch Fragen hast kannst du mir auch einfach eine PN schicken.

    MfG
    karlsve
  8. 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!