Ergebnis 1 bis 12 von 12

Thema: tl_member - Mitgliederauswertung

  1. #1
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard tl_member - Mitgliederauswertung

    Grüß Euch.

    Ich würde mir gerne eine Übersicht der User und ein paar weitere Auswertungen auf meiner Seite anzeigen lassen.
    Dazu habe ich mir ein Templatefile erstellt und dieses in ein Modul eingebunden.

    Ein paar Versuche auf die Datenbank zuzugreifen, sind leider aus Mangel an PHP Kenntnissen gescheitert.

    Als Auswertung würde ich gerne die Gesamtzahl der Mitglieder nach Mitgliedergruppen
    und die Gesamtzahl der Unternehmen ausgeben lassen.

    Hat hier jemand schon soetwas schon einmal realisiert?
    lg.

    Jochen aus Graz

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich weiß zwar nicht, wie du ein Templatefile in ein Modul eingebunden hast, aber so kannst du DB-Abfragen starten.
    PHP-Code:
    <?php

    $this
    ->import('Database');

    // Beispiel
    $myDbObject $this->Database->prepare("SELECT * FROM tl_member WHERE id=?")
                                      ->
    limit(1)
                                      ->
    execute($user->id);
    ?>
    Die Methoden findest du in der system/libraries/Database.php. Schau dir Beispiele in den Core-Dateien an.
    Manchmal ist die Klasse Database schon geladen, dann kannst du auch auf das Importieren verzichten, einfach ausprobieren.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard

    Servus Andreas.

    Leider bin ich absoluter anfänger in PHP und hab in den letzten Wochen sehr viele Codeschnipsel versucht anzupassen, jedoch mit mäßigem Erfolg.

    zu deiner Frage:
    - Ich habe mir ein Template angelegt [tbl-members-results.xhtml]
    - Dieses Template habe ich in ein Modul [Eigener HTML Code] so {{file::tbl-members-results.xhtml}} eingebunden.

    - Mein Ziel ist folgende Auswertung {SELECT alle Mitglieder der tl_member WHERE Mitgliedergruppe = Lehrer}
    Begonnen habe ich mit diesem Code:
    Code:
    <?php 
    // Zum Aufbau der Verbindung zur Datenbank -die xxx sidn Platzhalter
    define ( 'MYSQL_HOST',      'localhost' );
    define ( 'MYSQL_BENUTZER',  ' xxx ' );
    define ( 'MYSQL_KENNWORT',  ' xxx' );
    define ( 'MYSQL_DATENBANK', ' xxx' );
     
    $db_link = mysql_connect (MYSQL_HOST, 
                              MYSQL_BENUTZER, 
                              MYSQL_KENNWORT);
     
    // Nutzen der Datenbank - 
    $db_sel = mysql_select_db( MYSQL_DATENBANK )
       or die("Auswahl der Datenbank fehlgeschlagen");
     
    $sql = "SELECT COUNT(*) FROM tl_member WHERE country = 'at'";
    $result = mysql_query($sql) or die(mysql_error());
    
    // Print out result
    while($row = mysql_fetch_array($result)){
    //altes Codefragment	
    //echo "There are ". $row['COUNT(*)'] ." ". $row['state'] ." items.";
    
    echo "Mitglieder in Österreich" $row['COUNT(*)'];
    echo "<br />";
    }
    Wo es hackt ist:
    - wie kann ich in einem Select einen BLOB Eintrag auslesen und als Bedingung verwenden.
    - wie Schreibe ich das Ergebnis der Abfrage raus / wie stelle ich das dar.
    lg.

    Jochen aus Graz

  4. #4
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard

    Die Sache mit den BLOB's konnte ich dank eines Hinweises bereits lösen.

    Fein wäre ein Feedback eurerseits wie ich noch das Ergebnis rausschreiben könnte.
    Eine While Schleife ist sicher unpassend wenn man als Ergebnis nur 1 Zahl erhält.
    lg.

    Jochen aus Graz

  5. #5
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Wenn es nur 1 Ergenis gibt kannst du das while einfach weglassen
    Ansonsten ist es genau das selbe.
    Kein Privat Support via PM.

  6. #6
    Contao-Fan Avatar von melzebub
    Registriert seit
    21.05.2010.
    Ort
    Lüneburg
    Beiträge
    292
    User beschenken
    Wunschliste

    Standard

    Kann man das nicht über das Auflistungsmodul auslesen?
    Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
    kein Support per PN. Fragen gehören ins Forum.

  7. #7
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard Auflistung und Joins

    Leider sind mir die Funktionen des Moduls Auflistung nicht bekannt.
    Was ich aber herausgelesen habe ist, dass man keine Count() Auswertungen über 2 Tabellen machen kann.

    Sollte das jemand realisiert haben, dann wäre ich für einen Lösungsvorschlag sehr dankbar.
    lg.

    Jochen aus Graz

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von ZOOTV Beitrag anzeigen
    ...Begonnen habe ich mit diesem Code:...
    Viel zu kompliziert. Ich sagte dir ja, schau dir Beispiele aus den Core-Dateien an.
    Beispiel aus der RebuildIndex.php leicht geändert
    PHP-Code:
    $this->import('Database');

    // Get active front end users
    $objMember $this->Database->execute("SELECT * FROM tl_member WHERE disable!=1 AND (start='' OR start<$time) AND (stop='' OR stop>$time) ORDER BY username");

    while (
    $objMember->next())
    {
      
    $arrMemberGroups deserialize($objMember->groups);
      
    // ID Gruppe Lehrer = 3
      
    if(in_array(3$arrMemberGroups))
      {
        
    // Hier der Code für jedes Mitglied
      
    }

    Du brauchst da nicht deine Zugangsdaten einzutragen und eine Verbindung aufzubauen.

    Oder wie melzebub sagt, mal mit dem Auflistungsmodul probieren.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard COUNT (DISTINCT)

    Grüß Euch.
    Mich quält momentan eine Abfrage zum Thema.

    Habt ihr eine Idee was ich hier falsch geschrieben habe:

    Code:
    //AUSWERTUNG SCHULEN UNGARN
    $sql1b = "SELECT COUNT(DISTINCT (company)) FROM tl_member 
    INNER JOIN tl_member ON tl_member_to_group.member_id = tl_member.id 
    WHERE tl_member_to_group.group_id = 11";
    $result1b = mysql_query($sql1b);
    // Result
    $row1b = mysql_fetch_array($result1b);
       echo "Anzahl Schulen " .$row1b['COUNT(DISTINCT (company))'];
    echo "<br />";
    lg.

    Jochen aus Graz

  10. #10
    Contao-Fan Avatar von melzebub
    Registriert seit
    21.05.2010.
    Ort
    Lüneburg
    Beiträge
    292
    User beschenken
    Wunschliste

    Standard

    welche Tabelle ist denn "tl_member_to_group"?
    und warum nicht wie oben beschrieben

    PHP-Code:
    $this->import('Database'); 

    $objMember $this->Database->prepare("SELECT COUNT(DISTINCT (company)) as count FROM tl_member INNER JOIN tl_member ON tl_member_to_group.member_id = tl_member.id WHERE tl_member_to_group.group_id = ?")->execute('11'); 

    echo 
    "Anzahl Schulen " .$objMember->count
    Geändert von melzebub (10.10.2012 um 11:42 Uhr)
    Contao Webentwickler / Webdesigner aus Lüneburg - slash-works.de
    kein Support per PN. Fragen gehören ins Forum.

  11. #11
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard

    @melzebub:
    vielen Dank für deine Unterstützung.
    Allerdings wenn ich deinen Code verwende erhalte ich eine leer Seite.

    Die Tabelle [tl_member_to_group] entstammt aus der Erweiterung "associategroups".
    Der Inhalt der Tabelle:
    Spalte member_id
    Spalte group_id

    Der Grund warum ich dies nicht nach euren Vorschlägen bisher gelöst habe ist, dass ich eure Ratschläge nicht ganz verstehe und erstmal mit meinen SQL Kentnissen ein Ergebnis erzielen möchte.

    Dein Ratschlag die Erweiterung Auflistung zu verwenden ist für mich nicht nachvollziehbar, da ich keine Referenz zu DISTINCT und COUNT Auswertungen im Zusammenhang mit dieser Erweiterung gefunden habe.
    lg.

    Jochen aus Graz

  12. #12
    Contao-Fan Avatar von ZOOTV
    Registriert seit
    23.11.2009.
    Ort
    Graz / Steiermark / Österreich
    Beiträge
    256

    Standard Fehler gefunden

    Ich hab den Fehler nun gefunden.

    Die Abfrage funktioniert mit
    Code:
    $this->import('Database');  
    
    $objMember = $this->Database->prepare("SELECT COUNT(DISTINCT (company)) as count FROM tl_member_to_group INNER JOIN tl_member ON tl_member_to_group.member_id = tl_member.id WHERE tl_member_to_group.group_id = ?")->execute('11'); 
     
    echo "Anzahl Schulen " .$objMember->count;
    Jetzt fehlt mir nurmehr die Übergabe der Ergebnisse in GLOBALE VARIABELN und das auslesen der Werte innerhalb eines Artikels.
    lg.

    Jochen aus Graz

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •