MySQL zählt falsch?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey COm,


    Ich habe jeztz meine Einwohner zählen lassen


    Das Problem der Output sagt es sind nur 1 Einwohne rin LS aber es sind Zwei


    Code:


    new einwohner[3];
    new query = mysql_query("SELECT `Einwohnerort` FROM `accounts`");
    mysql_store_result(query);
    while(mysql_retrieve_row(query))
    {
    new result = mysql_fetch_int(query);
    if(result == 0) einwohner[0] ++;
    if(result == 1) einwohner[1] ++;
    if(result == 2) einwohner[2] ++;
    }
    mysql_free_result(query);
    new string[256],tag,monat,jahr;
    getdate(jahr,monat,tag);
    format(string,sizeof(string),"Unsere derzeitigen Akten sind nur\nnur auf ungefähren Werten:\n\nEinwohner Zahlen vom %02d.%02d.%d:\nLos Santos:\t%d Einwohner\nSan Fiero\t%d Einwohner\nLas Venturas\t%d Einwohner",tag,monat,jahr,einwohner[0],einwohner[1],einwohner[2]);
    ShowPlayerDialog(playerid,DIALOG_EINWOHNER,DIALOG_STYLE_MSGBOX,"Einwohnermeldeamt - Herr F.Hagenau",string,"Schließen","");


    Danke sehr


    Edit: Ich habe übrigends auch im Wiki nachgesehen

  • also die Spieler sind Offline???
    Was hat das mit normalen Files zu tun?


    Der soll die geamten EInwohner vom Ort zählen auch allerdings nur die die auch in der MySQL angezeigt werden später kommt noch hin (davon Online: x)


    Edit: Habe das jetzt mit drei Querys hinbekommen ist allerdings unsauber hat da jemand eine Lösung mt einem Query

  • Ah okay habe es jetzt so mit den einzelnen Querys gelassen


    Das würde auch mit 1 query gehen oder du machst 3 verschiedene querys gibst bei der WHERE clausel die jeweilige zahl an für die einwohnerspalte und arbeitest mit mysql_num_row.


    Nun um das ganze mit einem query zu machen kann man auch mit sum arbeiten da werden werte addiert und der if clausel das kan man mit dem ternär operator
    fast gleich ziehen. bedingunge,(ja) die rückgabe , (nein) die rückgabe


    SQL
    "SELECT SUM(IF(Einwohnerort='0',1,0)) AS value1 ,SUM(IF(Einwohnerort='1',1,0)) AS value2 ,SUM(IF(Einwohnerort='2',1,0)) AS value3 FROM `accounts`"


    man hätte das auch mit group by machen können oder subquerys


    so nun gut mit was kann man nun die werte abrufen. Dazu kannst du
    mysql_fetch_field_row(string[],spalte);


    benutzen


    1 Beispiel mach ich dir noch

    new result[15];
    mysql_fetch_field_row(result,"value1");


  • mysql_query("SELECT `Einwohnerort` FROM `accounts` WHERE `Einwohnerort` = '0'");
    mysql_store_result();
    einwohner[0] = mysql_num_rows();
    mysql_free_result();
    mysql_query("SELECT `Einwohnerort` FROM `accounts` WHERE `Einwohnerort` = '1'");
    mysql_store_result();
    einwohner[1] = mysql_num_rows();
    mysql_free_result();
    mysql_query("SELECT `Einwohnerort` FROM `accounts` WHERE `Einwohnerort` = '2'");
    mysql_store_result();
    einwohner[2] = mysql_num_rows();


    Habe es jetzt so aber noch nicht getestet