tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
283
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    468
    Hallo,

    ich habe eine Datenbank mit Bilder und der dazugehörigen "UserID":

    id | user_id | photo

    - UserID: 5
    1 | 5 | a.jpg
    2 | 5 | b.jpg
    3 | 5 | c.jpg

    UserID: 7
    4 | 7 | d.jpg
    5 | 7 | e.jpg
    6 | 7 | f.jpg

    Nun geb ich die Fotos aus:

    PHP-Code:
      $res mysql_query("SELECT * FROM `photos`"); 
      while(
    $row mysql_fetch_array($res)){ 
        
    $photo_list "<img src=\"upload/images/$row[photo]\">";
      } 
    Nun zu meinem Problem:

    Ich möchte nicht alle Fotos ausgeben sondern immer nur 1 Foto pro Benutzer.

    Bei dem Beispiel dürfen also nur die 2 Fotos ausgegeben werden:
    1 | 5 | a.jpg
    4 | 7 | d.jpg


    Wie mach ich das am besten?

    MfG proloser
     

  2. #2
    Fide Fide ist offline Mitglied Bronze
    Registriert seit
    Jan 2009
    Beiträge
    49
    Hi,
    ich würde in der while-Schleife eine Abfrage einbauen ob zu der User-Id schon ein Bild verarbeitet wurde. Also in etwa so:

    PHP-Code:
    $alte_id 0;

    $res mysql_query("SELECT * FROM `photos`"); 
    while(
    $row mysql_fetch_array($res)){ 
       
        
    // Bild nur ausgeben wenn die User-Id noch nicht dran war
        // es kann also auch noch kein Bild ausgegeben worden sein
        
    if( $alte_id != $row['userid'] )
        {
            
    $photo_list "<img src=\"upload/images/$row[photo]\">";
        }
        
    $alte_id $row['userid'];

    Damit das so funktioniert muss das Result-Set nach den User-IDs sortiert sein. Ansonsten muss man die alten User-IDs in ein Array schreiben und immer Abfragen ob die aktuelle User-ID schon im Array drin steht.

    mfg.Fide
     

  3. #3
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    468
    Das problem ist damit ich es nicht nach der UserID sortieren kann, hab jetzt mit dem Array versucht aber komm da nicht ganz klar.

    Könntest du mir das noch etwas genauer erklären ...
     

  4. #4
    Fide Fide ist offline Mitglied Bronze
    Registriert seit
    Jan 2009
    Beiträge
    49
    Dazu gibt es die Funktion "in_array( )".
    Es müsste dann in etwas so aussehen:

    PHP-Code:
    $alte_id = array();
    $i 0;

    $res mysql_query("SELECT * FROM `photos`"); 
    while(
    $row mysql_fetch_array($res)){ 
       
        if( !(
    in_array$row['userid'], $alte_id )) )
        {
            
    $photo_list "<img src=\"upload/images/$row[photo]\">";
        }
        
    $alte_id[$i] = $row['userid'];
        
    $i++;

    Hier ist die Funktion erklärt:
    http://de.php.net/in_array

    mfg.Fide
     

  5. #5
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    468
    Vielen Dank,
    funktioniert perfekt!
     

  6. #6
    Registriert seit
    Mar 2004
    Beiträge
    1.853
    Blog-Einträge
    2
    Wus? ... Das kannst du SQL auch erledigen lassen:
    Code :
    1
    
    SELECT `userID`, `imageSrc` FROM `table` GROUP BY `userID`
    Dabei wurde immer das erste genommen.

    Oder, wenn du ein zufälliges pro Benutzer haben willst:
    Code :
    1
    
    SELECT * FROM (SELECT `userID`, `imageSrc` FROM `table` ORDER BY RAND()) AS RandTable GROUP BY `userID`

    Die Bezeichnungen der Felder musst natürlich auf deine anpassen.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  7. #7
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    468
    Noch perfekter, danke
     

Ähnliche Themen

  1. Foto druckbereit auf einer Grafik anzeigen
    Von Darian im Forum Sonstige Grafik-Programme
    Antworten: 1
    Letzter Beitrag: 29.07.10, 17:35
  2. Daten aus mehreren Tabellen über Joins anzeigen
    Von thinkpad im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 10.04.08, 13:08
  3. GridView´s in mehreren Sprachen anzeigen
    Von keks1984 im Forum .NET Web und Kommunikation
    Antworten: 2
    Letzter Beitrag: 20.09.07, 09:08
  4. SQL-Abfrage: Mitglieder die keinen Beitrag bezahlt haben anzeigen lassen
    Von aro69 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.03.07, 09:42
  5. Antworten: 13
    Letzter Beitrag: 10.01.05, 12:31