Left Join

rollerueckwaerts

Erfahrenes Mitglied
Hallo Tutorials-Gemeinde :)

Dieser Code hier zählt die Anzahl der registrierten Mitglieder der Seite und gibt diese aus.
Nun nöchte ich jedoch noch eine Sql Bedingung hinzufügen.
Undzwar sollen nur die Mitglieder gezählt werden bei denen in der Tabelle #__users
Spalte "Usertype", "Level1" steht.

PHP:
if($ShowTotal == 1){

$statistics = "SELECT count(c.id) FROM #__profiles c WHERE c.confirmed = 1 AND c.approved = 1";

$database->setQuery($statistics);

$nTotal = $database->loadResult();
    
echo "<td style=\"text-align:right\">"._REG_TOTAL."</td><td style=\"text-align:left\"><a href=\"/index.php?task=usersList&listid=4\">($nTotal)</a></td>";  
  }

nach einigen googlen und ins tutorial geschaut hab ichs so versucht:

PHP:
if($ShowTotal == 1){

$statistics = "SELECT count(c.id) FROM #__profiles c LEFT JOIN #__users u ON u.id = c.userid WHERE(c.confirmed = 1 ) AND (c.approved = 1 ) AND (u.usertype = 'level1')";

$database->setQuery($statistics);

$nTotal = $database->loadResult();

echo "<td style=\"text-align:right\">"._REG_TOTAL."</td><td style=\"text-align:left\"><a href=\"/index.php?task=usersList&listid=4\">($nTotal)</a></td>";
}

Naja klappen tut es nicht .... aber was hab ich falsch gemacht ?!
Bin nicht sehr begabt was php angeht .... hoffe nur es ging wenigstens in die richtige Richtung :)

Lieben Dank schonmal jetz.

Greetz tob
 
Hi,

ich kenne leider weder Deine Datenbankstruktur noch die Datenbankklasse, die Du in Deinem Skript verwendest. Kannst Du überprüfen, ob der Query erfolgreich ist? Hast Du die Abfrage einfach mal PMA unter die Nase gehalten?
Stimmt diese ON-Bedingung? Oder sollte die vielleicht "c.id = u.userid" lauten?

LG
 
Normalerweise geben solche DB Klassen doch immer Arrays aus.

D.h. Du machst
Code:
SELECT count(c.id) as regt

und unten gibst du

PHP:
echo "<td style=\"text-align:right\">"._REG_TOTAL."</td><td style=\"text-align:left\"><a href=\"/index.php?task=usersList&listid=4\">(".$nTotal['regt'].")</a></td>";

aus.

Wenn des ned hilft, gib uns doch bitte mal die print_r() Ausgabe von $nTotal.
 
print_r kommt 11 bei raus, stimmt auch :) passt !!

PHP:
 if($ShowTotal == 1) {
$statistics = "SELECT count(id) as regt FROM #__users WHERE usertype='Author'";
$database->setQuery($statistics);
$nTotal = $database->loadResult();
print_r ($nTotal) ;
//echo "<td style=\"text-align:right\">"._REG_TOTAL."</td><td style=\"text-align:left\"><a href=\"/index.php?task=usersList&listid=4\">(".$nTotal['regt'].")</a></td>";

beim echo befehl kommt ne 1.

Da fehlt doch noch was :)
 
Zuletzt bearbeitet:
Zurück