Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankeinträge zählen und ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankeinträge zählen und ausgeben

    Hallo Ihr alle,
    kurze Frage:

    Ich möchte meine Datenbankeinträge zählen und als einfache Zahl in einem Text ausgeben.
    Dazu habe ich folgendes Script:

    PHP-Code:
    <?php

     error_reporting 
    (E_ALL);
     
    ini_set ('display_errors''On');

    include (
    "database.php");

    // Verbindungsaufbau zum MySQL-Server
    $db mysqli_connect(MYSQL_HOSTMYSQL_BENUTZERMYSQL_PASSWORTMYSQL_DATENBANK);

       
    $query "select count(id) from eintrag";
        
    // Anfrage ausführen
       
    $result mysqli_query($db$query) or die ("MySQL-Fehler: " mysqli_error()); 
        
       
    $anzahl mysqli_fetch_assoc($result); 
        
       echo 
    $anzahl
    ?>
    Leider habe ich danach folgende Fehlermeldung:
    Notice: Array to string conversion in /var/www/zaehler.php on line 27
    Array

    In Line 27 steht: echo $anzahl;

    Bin ratlos trotz umfangreichen Recherchen.

    Kann mir jemand helfen?
    Vielen Dank

  • #2
    nimm statt mysqli_fetch_assoc($result) einfach mysqli_num_rows($result) und du hast die Zahl der Datensätze.
    http://php.net/manual/de/mysqli-result.num-rows.php


    andere Möglichkeit wäre mit count($result) das Array auszählen zu lassen, ist aber nicht so zu empfehlen, da aufwändiger.
    http://php.net/manual/de/function.count.php

    beste Möglichkeit ist vielleicht das über eine andere Query zu lösen.Sowas hier wäre vielleich tmöglich, kenn ich mich aber nicht ganz so gut mit aus, da ich das noch nie benutzt habe.
    http://www.sql-lernen.de/count.php


    Deine Fehlermeldung bedeutet, dass du versuchst ein Array, also einen Container voller Variablen mit Werten auszugeben. Wenn du soetwas ausgeben möchtest, brauchst du die Funktion print_r
    http://php.net/manual/de/function.print-r.php
    mysqli_fetch_assoc gibt dir als Wert aber den Inhalt des ausgewählten datensatzes zurück, nicht die Anzahl. Wenn du alle Datensätze anzeigen lassen willst, dann nimm mysqli_fetch_all. oder nimm dafür eine While-Schleife. Dann springt bei jedem Durchlauf mysqli_fetch_assoc einen Datensatz weiter, gibt dir dann also den nächsten aus.
    Lektüre zu Arrays
    Auf dieser Webseite findest du viele gute Erklärungen. Wenn du da mal guckst, findest du auf der Webseite auch Hilfe zu SQL und MYSQL.

    PHP-Code:
    echo "<pre>";
    print_r($anzahl);
    echo 
    "</pre>";
    // <pre> zeigt dir das im vernünftigem Format an, also mit zeilenumbrüche. 

    Kommentar


    • #3
      Danke für die Antwort.

      Habe den ersten Vorschlag angewendet - und es funktioniert !!!

      also nun ja, ich bekomme eine Zahl, nämlich die EINS.

      Wenn ich mehrere Einträge habe ändert sich aber nicht die Anzahl, es bleibt einfach die EINS.

      Von einem Problem zum nächsten.

      Hat da noch jemand eine Idee?

      Vielen Dank

      Kommentar


      • #4
        Dafür ist das Anfängerforum da. Wir haben alle ja mal irgendwie angefangen. Lies dir die Webseite von Peter Kropff am besten mal durch. Da kannst du dir schon viel gutes abgucken. Es gibt natürlich auch viele andere Seiten, wo du sowas findest.
        Viel Erfolg noch

        Edit:
        ohh... , hatte überlesen, dass du schon count in der SQL abfrage benutzt.

        Wenn du weiter mit mysqli_num_rows arbeiten willst, dann nimm als Query
        "SELECT * FROM eintrag"
        Wenn du weiter mit count() arbeiten willst, dann schreibe zur ausgabe. dies ist eigentlich die bessere methode, aber mit der anderen lernst du vielleicht mehr bzw kannst sie für andere dinge weiterverwenden
        echo $anzahl['0'];

        es kann sein, dass es mit der 0 in klammern nicht funktioniert wegen fetch assoc, dann nimm einfach mysqli_fetch_row

        Kommentar


        • #5
          Super, so geht es!

          Problem gelöst.

          Vielen Dank nochmal, das ihr uns "Rookies" ertragt.

          Bis dann

          Kommentar

          Lädt...
          X