hilfe beim umschreiben eines mysql codes

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
  • Bräuchte hilfe folgenden code umzuschreiben


    bedeutet dieser Abschnitt muss umgeschrieben werden


    mysql_free_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(!rows) return false;
    else return true;
    return 1;


    das sie in den neuen mysql versionen nicht mehr unterstützt werden, leider hab ich keine ahnung wie die befehle nun im aktuellsten mysql version heißen und funktionieren.

  • Welche MySQL Plugin Version nutzt du?
    Müssen die Abfragen in den stock's bleiben? Man kann es zwar auch mit dem neusten Plugin so machen, ist aber (auch von mir) nicht empfohlen, da der Performancevorteil an der Stelle nicht greift. Kommt aber hier auf die Verwendung drauf an, eventuell muss es so sein. Poste, falls du dir nicht sicher bist, mal den Code, der die stock's aufruft.

  • Welche MySQL Plugin Version nutzt du?
    Müssen die Abfragen in den stock's bleiben? Man kann es zwar auch mit dem neusten Plugin so machen, ist aber (auch von mir) nicht empfohlen, da der Performancevorteil an der Stelle nicht greift. Kommt aber hier auf die Verwendung drauf an, eventuell muss es so sein. Poste, falls du dir nicht sicher bist, mal den Code, der die stock's aufruft.

    Aktuelle Mysql Version: https://github.com/pBlueG/SA-MP-MySQL/releases


    Sollte schon in den Stocks bleiben da abfragen darüber gestartet werden.


    Also kurz knapp ja es soll in den stocks bleiben :)

  • stock IsBusinessCreated(businessid)
    {
    new query[200];
    format(query, sizeof(query), "SELECT ID FROM `firma` WHERE ID = %i", businessid);
    new Cache:result = mysql_query(dbhandle, query);
    new rows = cache_num_rows();
    cache_delete(result);
    if(!rows) return false;
    else return true;
    }


    Analog für den anderen stock.


    Ich habe das * zu ID geändert, da es reicht, wenn ein Feld ausgelesen wird, anstatt der ganzen Zeile.

  • stock IsBusinessCreated(businessid){ new query[200]; format(query, sizeof(query), "SELECT ID FROM `firma` WHERE ID = %i", businessid); new Cache:result = mysql_query(dbhandle, query); new rows = cache_num_rows(); cache_delete(result); if(!rows) return false; else return true;}


    Analog für den anderen stock.


    Ich habe das * zu ID geändert, da es reicht, wenn ein Feld ausgelesen wird, anstatt der ganzen Zeile.

    Probiere es gleich mal aus ich danke dir :)


    EDIT: Klappt wunderbar nur eine kleine Frage wie lass ich Text Felder aus der Datenbank auslesen?


    Und zwar ist mein Problem ich frage beim laden ab ob die Firma ein Besitzer hat und wenn es None ist das er [Kein Besitzer] ins TextLabel schreibt nun ist das Problem er schreib [Besitzer]: []


    Code:
    forward LoadBusinesses();
    public LoadBusinesses()
    {
    new num_felder,num_reihen;
    cache_get_data(num_felder,num_reihen,dbhandle);
    if(!num_reihen)return 1;
    for(new i = 0; i < num_reihen; i++)
    {
    new des[128], BizName[24], string[128],string3[128];
    bInfo[i][b_id] = cache_get_field_content_int(i,"ID",dbhandle);
    bInfo[i][b_preis] = cache_get_field_content_int(i,"Preis",dbhandle);
    bInfo[i][b_enterx] = cache_get_field_content_float(i,"EnterX",dbhandle);
    bInfo[i][b_entery] = cache_get_field_content_float(i,"EnterY",dbhandle);
    bInfo[i][b_enterz] = cache_get_field_content_float(i,"EnterZ",dbhandle);
    bInfo[i][b_exitx] = cache_get_field_content_float(i,"ExitX",dbhandle);
    bInfo[i][b_exity] = cache_get_field_content_float(i,"ExitY",dbhandle);
    bInfo[i][b_exitz] = cache_get_field_content_float(i,"ExitZ",dbhandle);
    bInfo[i][b_interior] = cache_get_field_content_int(i,"Interior",dbhandle);
    bInfo[i][b_world] = cache_get_field_content_int(i,"World",dbhandle);
    bInfo[i][b_text] = cache_get_field_content(i,"Text",des,dbhandle);
    bInfo[i][b_besitzer] = cache_get_field_content(i,"Besitzer",des,dbhandle);
    bInfo[i][b_minuten] = cache_get_field_content_int(i,"Minuten",dbhandle);
    bInfo[i][b_geld] = cache_get_field_content_int(i,"Geld",dbhandle);


    format(BizName, 24, "%s", bInfo[i][b_text]);
    strreplace(BizName, '_', ' ');
    if(!strcmp(bInfo[i][b_besitzer], "None", false))
    {
    format(string, sizeof string,"%s \n[Kein Besitzer]\nPreis: %i", BizName, bInfo[i][b_preis]);
    }
    else format(string, sizeof string, "%s [Besitzer]: %s\nTippe /enter um die Firma zu betreten", bInfo[i][b_text], bInfo[i][b_besitzer]);
    bInfo[i][b_label] = CreateDynamic3DTextLabel(string, GELB, bInfo[i][b_enterx],bInfo[i][b_entery], bInfo[i][b_enterz], 12, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1);
    bInfo[i][b_pickup] = CreateDynamicPickup(1272, 1, bInfo[i][b_enterx], bInfo[i][b_entery], bInfo[i][b_enterz], 0);
    format(string3,sizeof string3,"%s",bInfo[i][b_text]);
    if(IsBusinessOwned(i)) printf("Firmen ID %i wurde geladen; Name: %s", i, string3);
    }
    return 1;
    }

    Einmal editiert, zuletzt von MnX ()

  • bInfo[i][b_besitzer] = cache_get_field_content(i,"Besitzer",des,dbhandle);
    zu:
    cache_get_field_content(i,"Besitzer",bInfo[i][b_besitzer],dbhandle,32);

    Danke dir hat wunderbar geklappt


    und wieder ein kleines problem haha :D:D


    Er sagt mir wenn ich /buybiz eingebe das die Firma ein Besitzer hat obwohl in der Datenbank Besitzer "None" steht
    stock IsBusinessOwned(businessid)
    {
    new query[200];
    format(query, sizeof(query), "SELECT Besitzer FROM `firma` WHERE ID = %i", businessid);
    new Cache:result = mysql_query(dbhandle, query);
    new rows = cache_num_rows();
    cache_delete(result);
    if(!rows ) return false;
    else return true;
    }
    ocmd:buybiz(playerid,params[])
    {
    for(new i = 0; i < MAX_BUSINESSES; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 5.0, bInfo[i][b_enterx], bInfo[i][b_entery], bInfo[i][b_enterz]))
    {
    if(!IsBusinessOwned(i))
    {
    if(GetPlayerMoney(playerid) < bInfo[i][b_preis]) return SendClientMessage(playerid, ORANGE, "Du hast nicht genug Geld um diese Firma zu kaufen!");
    UpdateBusinessOwner(i, SpielerName(playerid));
    }
    else return SendClientMessage(playerid,ORANGE,"Die Firma hat schon einen Besitzer.");
    }
    else SCM(playerid, WEISS, "Du bist nicht in der Nähe einer Firma!");
    }
    return 1;
    }

    Einmal editiert, zuletzt von MnX ()

  • Dann muss der stock so aussehen:
    stock IsBusinessOwned(businessid)
    {
    new query[200];
    format(query, sizeof(query), "SELECT Besitzer FROM `firma` WHERE ID = %i", businessid);
    new Cache:result = mysql_query(dbhandle, query);
    new rows = cache_num_rows();
    if(!rows)
    {
    cache_delete(result);
    return false;
    }
    cache_get_field_content(0,"Besitzer",query,dbhandle);
    cache_delete(result);
    if(!strcmp(query, "None")) return false;
    else return true;
    }