If-Anweisung auszählen

  • Themenstarter Themenstarter McNiko
  • Beginndatum Beginndatum
Normalerweise sollte die Abfrage das Ergebnis enthalten:
SELECT COUNT(*) FROM tabelle WHERE user_online == 1;
oder so ähnlich. Ich würde das Ergebnis über die Abfrage genereieren. Alternative:
SELECT * FROM tabelle WHERE user_online == 1;
und dann mit mysql_num_rows() verwenden. Ich weiß aber nicht, welches performanter ist - vermute aber das 1.
 
Es geht aber nicht nur um das Online-Script sondern allgemein eine Variable auszählen!

mfg
 
Wieso positionierst Du die Deklaration nicht ausserhalb der Schleife, dann wird die Variable zum Zählen nicht zurückgesetzt:

PHP:
<?

# Verbindung
include("verbindung.php");

# SQL Code
$szMySQL = "SELECT * FROM user ORDER BY UserID";
$sqlErgebnis = mysql_query($szMySQL);

$i = 0;

# Ausgabe
while($sqlRowMySQL = mysql_fetch_object($sqlErgebnis))
{
if ($sqlRowMySQL->Lastactivation <= time()-3*60 && $i++)
   {
   }
else 
   {
  echo ('<a href="user.php?UserID='.$sqlRowMySQL->UserID.'"><b>'.$sqlRowMySQL->Username.'</b></a>&nbsp;<img src="http://www.tutorials.de/forum/images/page/online.gif" alt="Online"><br>');
   }

}

?>

Den Inhalt von Deinem PHP habe ich nicht angesehen oder kontrolliert, aber $i wird oberhalb der Schleife deklariert und zählt somit hoch, was Du damit anstellst ist ja sekundär.
 
So klappt es ;)

PHP:
<?

# Verbindung
include("verbindung.php");

# SQL Code
$szMySQL = "SELECT * FROM user ORDER BY UserID";
$sqlErgebnis = mysql_query($szMySQL);

$i = 0;

# Ausgabe
while($sqlRowMySQL = mysql_fetch_object($sqlErgebnis))
{

if ($sqlRowMySQL->Lastactivation <= time()-3*60)
   {
   }
else 
   {
    $i++;
  echo ('<a href="user.php?UserID='.$sqlRowMySQL->UserID.'"><b>'.$sqlRowMySQL->Username.'</b></a>&nbsp;<img src="images/page/online.gif" alt="Online"><br>');
   }

}

echo $i;

?>

...danke

mfg
 
Folgendes wäre ebenfalls möglich:
PHP:
# Verbindung
include("verbindung.php");

# SQL Code
$szMySQL = "SELECT * FROM user WHERE Lastactivation > UNIX_TIMESTAMP() - 3 * 60 ORDER BY UserID";
$sqlErgebnis = mysql_query($szMySQL);

# Ausgabe
while( $sqlRowMySQL = mysql_fetch_object($sqlErgebnis) ) {
	echo '<a href="user.php?UserID='.$sqlRowMySQL->UserID.'"><b>'.htmlspecialchars($sqlRowMySQL->Username).'</b></a>&nbsp;<img src="http://www.tutorials.de/forum/images/page/online.gif" alt="Online"><br>';
}

echo mysql_num_rows();
Damit werden gleich nur die benötigten Daten abgefragt. Activation heißt übrigens Aktivierung und nicht Aktivität (activity).
 
Zurück