Datenbank wird nicht ausgelesen

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
  • Hallo alle zusammen,
    ich habe gestern und heute mich mal an ein Haus System ran gesetzt und ich habe Manuel in der Datenbank Koordinaten eingefügt allerdings kommt nichts im Spiel. Das wundert mich bisschen und bräuchte dabei ein bisschen Hilfe. Code weis ich jetzt nicht welchen ich schicken soll also schick ich einfach mal erst einen wenn ich einen genauen Code schnipsel wissen wollt.

  • Das?

    enum hInfo{
    Float:h_x,
    Float:h_y,
    Float:h_z,
    Float:ih_x,
    Float:ih_y,
    Float:ih_z,
    hInterior,
    hBesitzer[MAX_PLAYER_NAME],
    hID,
    hPickup,
    Text3D:hText,
    hPreis
    }
    new HouseInfo[MAX_HOUSES][hInfo];


    //HäuserLaden
    new query[128];
    format(query,sizeof(query),"SELECT * FROM haus");
    mysql_function_query(dbhandle,query,true,"OnHousesLoad","");


    getFreeHouseID()
    {
    for(new i=0; i<sizeof(HouseInfo); i++)
    {
    if(HouseInfo[i][hID] == 0) return 1;
    }
    return 1;
    }


    public OnHousesLoad()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id = getFreeHouseID();
    HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
    HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
    HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
    HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
    HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
    HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
    HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
    new tmp_name[MAX_PLAYER_NAME];
    cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
    strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
    new string[128];
    if(!strlen(HouseInfo[id][hBesitzer]))
    {
    HouseInfo[id][hPickup] = CreatePickup(1273,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
    format(string,sizeof(string),"Zum Verkauf\nPreis: %i$\n/buyhouse",HouseInfo[id][hPreis]);
    HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    HouseInfo[id][hPickup] = CreatePickup(1239,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
    format(string,sizeof(string),"Besitzer: %s\nWert: %i$\n/enter",HouseInfo[id][hBesitzer],HouseInfo[id][hPreis]);
    HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
    }
    }
    return 1;
    }

  • Guten Abend.



    new query[128];
    format(query,sizeof(query),"SELECT * FROM haus");
    mysql_function_query(dbhandle,query,true,"OnHousesLoad","");


    zu



    mysql_function_query(dbhandle,"SELECT * FROM haus",true,"OnHousesLoad","");

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:



  • Wo ist den da der Unterschied ?


    TheTutoFreak: debugge mal ein bisschen lass dir num_rows, und jeweils immer die hID printen

  • Debugge es so:
    public OnHousesLoad()
    {
    printf("OnHousesLoad aufgerufen.");
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    printf("num_rows: %d", num_rows);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    printf("i: %d", i);
    new id = getFreeHouseID();
    printf("id: %d", id);
    HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
    HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
    HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
    HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
    HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
    HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
    HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
    printf("Koordinaten: %f/%f/%f", HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z]);
    new tmp_name[MAX_PLAYER_NAME];
    cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
    strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
    new string[128];
    printf("Besitzer: %s", HouseInfo[id][hBesitzer]);
    if(!strlen(HouseInfo[id][hBesitzer]))
    {
    HouseInfo[id][hPickup] = CreatePickup(1273,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
    format(string,sizeof(string),"Zum Verkauf\nPreis: %i$\n/buyhouse",HouseInfo[id][hPreis]);
    HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    HouseInfo[id][hPickup] = CreatePickup(1239,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
    format(string,sizeof(string),"Besitzer: %s\nWert: %i$\n/enter",HouseInfo[id][hBesitzer],HouseInfo[id][hPreis]);
    HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
    }
    printf("string: %s", string);
    }
    printf("Fertig.");
    return 1;
    }


    Dann poste was im Server Log steht, wenn du die Häuser laden lässt.
    Gegebenenfalls auch gleich das, was im MySQL Log steht.

  • server_log:


    mysql_log:

    Code
    [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES)
    [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES)
    [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES)
    [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES)
  • Da haben wir doch den Fehler schon.


    Nimm den root Benutzer ohne Passwort:
    #define db_host "127.0.0.1"
    #define db_user "root"
    #define db_pass ""
    #define db_db "DATENBANKNAME"


    Das ist in 99% aller Fälle standardmäßig so eingestellt.
    Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
    Deshalb benutze, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.