Christian: count() funktioiert nicht so richtig

Hallo zusammen

Ich habe ein Problem und das sieht folgendermassen aus. Ich bekomme nie das richtige Resultat für die Variabel $anz aus folgendem Script:

<?
session_register(user);
session_register(style);

if($style == "")
{
$style = "blau";
}
echo '
<link rel="stylesheet" type="text/css" href="style/'.$style.'/'.$style.'.css">
<center>
Willkommen '.$user.'
<br>
<table border="0" align="center">';

include("config/connect_config.php");

mysql_select_db ("stargate_forum", $vk)
 or die ("Keine Verbindung zur Datenbank");

$z = mysql_query("SELECT id FROM forum\_foren");
$y = mysql_fetch_array($z);
$anz = count($y);

for($i = 1; $i <= $anz; $i++)
{
$a = mysql_query("SELECT name FROM forum\_foren WHERE id='$i'");
$titel = mysql_fetch_array($a);
$b = mysql_query("SELECT thema FROM forum\_foren WHERE id='$i'");
$thema = mysql_fetch_array($b);
$c = mysql_query("SELECT moderator FROM forum\_foren WHERE id='$i'");
$poster = mysql_fetch_array($c);
$d = mysql_query("SELECT erstellt FROM forum\_foren WHERE id='$i'");
$datum = mysql_fetch_array($d);

echo '
  <tr>
    <td width="45" height="30" background="style/'.$style.'/block.png"></td>
 <td width="600" height="30" colspan="2" background="style/'.$style.'/line.png"><B>'.$titel[0].'</B></td>
  </tr>
  <tr>
    <td width="45"></td>
    <td width="500">'.$thema[0].'</td>
    <td width="100">Moderator:<br>'.$poster[0].'<br>Erstellt am:<br>'.$datum[0].'</td>
  </tr>
';
}
echo "</table>";
?>

An was kann das liegen? Wäre echt froh wenn mir Jemand helfen könnte.

  1. Hallo!

    Ich bekomme nie das richtige Resultat für die Variabel $anz aus folgendem Script

    Probier mal http://at.php.net/manual/de/function.mysql-num-rows.php.

    Beste Grüße
    Viennamade

  2. Danke viel mals.

    Funktioniert prima.

  3. Hello,

    und noch was...

    für dein Problem hätte es genügt:

    $z = mysql_query("SELECT id FROM forum\_foren");
    $y = mysql_fetch_array($z);
    $anz = count($y);

    dieses Stückchen zu posten.

    Einen Lösungsweg hat Dir Vienna schon erzählt, ist aber nicht unbedingt der beste. Wenn man nämlich nur die Anzahl von Datansätzen wissen will, dann fragt man die Datanbank nur danach und nlässt sich nicht Daten kommen, die man nicht verwendet.

    also

    $res = mysql_query("SELECT count(*) as anz FROM forum\_foren");
    $_rec = mysql_fetch_array($res)

    echo $_rec['anz'];

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
      Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
      Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  4. Moin!

    Ich habe ein Problem und das sieht folgendermassen aus. Ich bekomme nie das richtige Resultat für die Variabel $anz aus folgendem Script:

    Das könnte daran liegen, dass du so ziemlich die ineffizienteste Variante einer Datenbankvergewaltigung gewählt hast (DatenbankABFRAGE kann man das schon nicht mehr nennen).

    $z = mysql_query("SELECT id FROM forum\_foren");
    $a = mysql_query("SELECT name FROM forum\_foren WHERE id='$i'");
    $b = mysql_query("SELECT thema FROM forum\_foren WHERE id='$i'");
    $c = mysql_query("SELECT moderator FROM forum\_foren WHERE id='$i'");
    $d = mysql_query("SELECT erstellt FROM forum\_foren WHERE id='$i'");

    Du willst für alle IDs, die in der DB enthalten sind, die Felder name, thema, moderator und erstellt wissen.

    Mach EINMAL eine DB-Abfrage und werte alle sich daraus ergebenden Zeile aus:

    $result = mysql_query("SELECT id, name, thema, moderator, erstellt FROM forum_foren");

    while ($zeile = mysql_fetch_assoc($result))
    {
      echo "ID: ".$zeile['id']."<br>";
      echo "Name: ".$zeile['name']."<br>";
      // und so weiter, und so fort...
    }

    - Sven Rautenberg