Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Falsche Anzahl der Datensätze wird ausgegeben

Einklappen

Neue Werbung 2019

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

  • noOx
    hat ein Thema erstellt [Erledigt] Falsche Anzahl der Datensätze wird ausgegeben.

    [Erledigt] Falsche Anzahl der Datensätze wird ausgegeben

    Hallo,
    ich habe folgendes Problem. Und zwar möchte ich in Kategorien unterteilte Daten ausgeben und die Anzahl der eingetragenen Datensätze soll hinter dem Kategorie-Namen angezeigt werden. Es wird aber immer nur angezeigt das "1" Datensatz eingetragen ist, obwohl in der Kategorie 3 Stück eingetragen sind.

    Quellcode:
    PHP-Code:
    <?php 
    include ("config.php");

    $connectionid  mysql_connect ("$sqlhost""$sqluser""$sqlpw"); 
    if (!
    mysql_select_db ("$sqldb"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 
    }
     
    $query "SELECT * FROM kategorien";
      
      
    $result mysql_query($query);
      
    $num_rows mysql_num_rows($result);
            if (
    $num_rows 0)
            {
                    while (
    $dat mysql_fetch_array($result))
                    {
                    
    $kategorie $dat["kategorie"];     
                        
    $id $dat["id"];                    
                        
                        
    $res mysql_query("SELECT COUNT(*) FROM bilder WHERE cid='$id' GROUP BY cid='$id'");
    $anzahl mysql_num_rows($res); 

                                         
    $ausgabe .= "<a href='kategorie.php?id=".$id."'>".$kategorie." (".$anzahl.")</a><br />";


         
                     
    $i++;                 
                    }
            }
            else
            {
             
    $ausgabe .= "Keine Einträge vorhanden!";
            }

    echo 
    $ausgabe;                    

    ?>
    Hoffe ihr wisst bescheid!

  • cycap
    antwortet
    Zitat von lazydog Beitrag anzeigen
    [edit]
    Da war wieder einer schneller
    Schullileung

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Zitat von cycap Beitrag anzeigen
    Ähm lazydog, dein Script ergibt ohne 2te Tabelle irgendwie keinen Sinn...
    Sorry da hast du natürlich recht , habe ich übersehen. Geht aber trotzdem, die zweite Tabelle muss einfach mit rein:
    PHP-Code:
    $query 
        SELECT  
            k.id, 
            k.kategorie, 
            COUNT(b.*) AS anzahl  
        FROM  
            kategorien k
        INNER JOIN 
            bilder on k.id = b.cid
        GROUP BY 
            k.id"

    [edit]
    Da war wieder einer schneller

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Ähm lazydog, dein Script ergibt ohne 2te Tabelle irgendwie keinen Sinn...

    [edit]

    mit dem SQL-Statement macht lazydogs Script Sinn:

    Code:
        SELECT 
            k.id,
            k.kategorie,
            COUNT(b.id) AS anzahl 
        FROM 
            bilder AS b
        LEFT JOIN 
            kategorien AS k
        ON
           k.id = b.cid
        GROUP BY
            k.id

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Warum denn so furchtbar kompliziert. Das geht doch problemlos mit einer Abfrage:
    PHP-Code:
    ...
    $query "
        SELECT 
            id,
            ketegorie,
            COUNT(*) AS anzahl 
        FROM 
            kategorien
        GROUP BY
            id"
    ;
    $result mysql_query($query) or exit(mysql_error());
    while (
    $dat mysql_fetch_assoc($result)){
        
    $kategorie $dat["kategorie"];     
        
    $id $dat["id"];                    
                               
        
    $ausgabe .= "<a href='kategorie.php?id=$id'>$kategorie(" $dat['anzahl'] . ")</a><br />";

    Einen Kommentar schreiben:


  • tomtaz
    antwortet
    Das freut mich, dann markiere mal fix das Thema als erledigt.

    Einen Kommentar schreiben:


  • noOx
    antwortet
    Zitat von tomtaz Beitrag anzeigen
    Ist dir das noch nicht aufgefallen? Du sendest deinen Query 2 mal an die Datenbank....

    PHP-Code:
    $sql mysql_query("SELECT COUNT(*) FROM bilder WHERE cid='$id' GROUP BY cid='$id'");
    mysql_query($sql) or die(mysql_error());
    $anzahl mysql_num_rows($sql); 
    Zudem ist es fraglich ob mysql_num_rows() da auch die entsprechende Anzahl zurück gibt, bin mir da jetzt aber nicht sicher.
    Versuch es mal so:


    PHP-Code:
    $sql "SELECT COUNT(*) AS num FROM bilder WHERE cid='$id'";

    $result mysql_query$sql ) or die( mysql_error() );
    $anzahl mysql_fetch_assoc$result );
    $anzahl $anzahl'num' ]; 

    Jetzt funktioniert es mit deinem Code. Musste aber erst die $result umbennen.

    Einen Kommentar schreiben:


  • tomtaz
    antwortet
    Ist dir das noch nicht aufgefallen? Du sendest deinen Query 2 mal an die Datenbank....

    PHP-Code:
    $sql mysql_query("SELECT COUNT(*) FROM bilder WHERE cid='$id' GROUP BY cid='$id'");
    mysql_query($sql) or die(mysql_error());
    $anzahl mysql_num_rows($sql); 
    Zudem ist es fraglich ob mysql_num_rows() da auch die entsprechende Anzahl zurück gibt, bin mir da jetzt aber nicht sicher.
    Versuch es mal so:


    PHP-Code:
    $sql "SELECT COUNT(*) AS num FROM bilder WHERE cid='$id'";

    $result mysql_query$sql ) or die( mysql_error() );
    $anzahl mysql_fetch_assoc$result );
    $anzahl $anzahl'num' ]; 

    Einen Kommentar schreiben:


  • cycap
    antwortet
    PHP-Code:
    $sql mysql_query("SELECT COUNT(*) FROM bilder WHERE cid='$id' GROUP BY cid='$id'");
    mysql_query($sql) or die(mysql_error());
    $anzahl mysql_num_rows($sql); 
    Guck dir mal an was du mit welchen Variablen wie oft machst. Außerdem wird der SQL-Error wohl durch GROUP BY cid='$id' kommen, was weder Sinn macht noch syntaktisch richtig ist. Du solltest dein Query mal im phpMyAdmin testen und auch mal schauen was rauskommt und ob das das ist was du haben willst.

    Einen Kommentar schreiben:


  • noOx
    antwortet
    Hab mich jetzt an den Thread gehalten und den Code etwas verändert.

    PHP-Code:
    <?php 
     error_reporting
    (E_ALL);  
     
    $ausgabe "";
    include (
    "config.php");

    $connectionid  mysql_connect ("$sqlhost""$sqluser""$sqlpw"); 
    if (!
    mysql_select_db ("$sqldb"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 
    }
     
    $query "SELECT * FROM kategorien";
      
      
    $result mysql_query($query);
      
    $num_rows mysql_num_rows($result);
            if (
    $num_rows 0)
            {
                    while (
    $dat mysql_fetch_array($result))
                    {
                    
    $kategorie $dat["kategorie"];     
                        
    $id $dat["id"];                    
                        
                        
    $sql mysql_query("SELECT COUNT(*) FROM bilder WHERE cid='$id' GROUP BY cid='$id'");
    mysql_query($sql) or die(mysql_error());
    $anzahl mysql_num_rows($sql); 

                                         
    $ausgabe .= "<a href='kategorie.php?id=".$id."'>".$kategorie." (".$anzahl.")</a><br />";


         
                     
                    }
            }
            else
            {
             
    $ausgabe .= "Keine Einträge vorhanden!";
            }

    echo 
    $ausgabe;                    

    ?>
    Jetzt bekomm ich aber das hier: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #6' at line 1

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Hi, das

    PHP-Code:
    $res mysql_query("SELECT COUNT(*) FROM bilder WHERE cid='$id' GROUP BY cid='$id'");
    $anzahl mysql_num_rows($res); 
    ergbit auch keinen Sinn. Ich weiss wie du dir das vortstellst, aber bevor ich dir helfe halte dich erstmal hieran.

    Gruß
    Cy

    PS: Übrigens ist das eine Einsteiger-Frage, daher verschiebe ich das mal.

    Einen Kommentar schreiben:

Lädt...
X