Problem mit MySQL

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
  • hi mit diesem befehl soll man eigentlich eine basezone erstellen können es geht auch aber er speichert es nicht ab also ingame geht es nur bis zu einem restart hier mal der befehl


    COMMAND:setbasezone(playerid,params[])
    {
    new id,player,Float:p1x,Float:p1y,Float:p1z,Float:p2x,Float:p2y,Float:p2z;
    if(SpielerInfo[playerid][Adminlevel]!=6)return SendClientMessage(playerid,ROT,"Sie dürfen diesen Befehl nicht verwenden!");
    if(sscanf(params,"iu",id,player))return SendClientMessage(playerid,WEIS,"Verwendung: /setbasezone [BaseID] [Zweiter Spieler für Koordinaten]");
    if(!IsPlayerConnected(player))return SendClientMessage(playerid,ROT,"Kein Spieler mit anegegebner ID Online!");
    {
    GetPlayerPos(playerid,p1x,p1y,p1z);
    GetPlayerPos(player,p2x,p2y,p2z);
    GBInfo[id][GBZoneX1]=p1x;
    GBInfo[id][GBZoneX2]=p2x;
    GBInfo[id][GBZoneY1]=p1y;
    GBInfo[id][GBZoneY2]=p2y;
    if(GBInfo[id][GBZoneErstellt]==1)M_DestroyZone(GBInfo[id][GBZone]);
    if(GBInfo[id][GBBuystate]==1) GBInfo[id][GBZone]=M_CreateZone(GBInfo[id][GBZoneX1],GBInfo[id][GBZoneY1],GBInfo[id][GBZoneX2],GBInfo[id][GBZoneY2],GBASECOLOR_NOOWNER);
    else GBInfo[id][GBZone]=M_CreateZone(GBInfo[id][GBZoneX1],GBInfo[id][GBZoneY1],GBInfo[id][GBZoneX2],GBInfo[id][GBZoneY2],FraktionsInfo[GBInfo[id][GBOwner]][FColor]);
    GBInfo[id][GBZoneErstellt]=1;
    new query[150];
    format(query,sizeof(query),"UPDATE gbdata SET GBZoneX1 ='%f',GBZoneX2 ='%f',GBZoneY1 ='%f',GBZoneY2 ='%f' WHERE GBID =='%i'",p1x,p2x,p1y,p2y,id);
    mysql_query(query);
    mysql_free_result();
    }
    return 1;
    }

  • wie soll er es auch speichern wenn du keinen tabellen wert erstellst kleiner tipp am rande


    INSERT INTO 'tabellenname' usw.

  • mein fehler der befehl gehört zu einem zweiten also mit dem wird die tabele erstellt


    COMMAND:createbase(playerid,params[])
    {
    new id=GetFreeGBaseID(),string[128],Float:x,Float:y,Float:z,preis;
    if(SpielerInfo[playerid][Adminlevel]!=6)return SendClientMessage(playerid,ROT,"Sie dürfen diesen Befehl nicht verwenden!");
    if(id==0)return SendClientMessage(playerid,ROT,"Es können keine Gangzonen mehr erstellt werden!");
    if(sscanf(params,"i",preis))return SendClientMessage(playerid,WEIS,"Verwendung: /createbase [Preis]");
    {
    GetPlayerPos(playerid,x,y,z);
    format(string,sizeof(string),"Neue Gangbase ID: %i",id);
    SendClientMessage(playerid,GRAU,string);
    GBInfo[id][GBIconX]=x;
    GBInfo[id][GBIconY]=y;
    GBInfo[id][GBIconZ]=z;
    GBInfo[id][GBPreis]=preis;
    GBInfo[id][GBBuystate]=1;
    GBInfo[id][GBIcon]=CreateDynamicPickup(1314,1,x,y,z);
    format(string,sizeof(string),"Gangbase zu verkaufen\nPreis: %i$",preis);
    GBInfo[id][GBText]=Create3DTextLabel(string,ORANGE,x,y,z,20,0);
    new query[150];
    format(query,sizeof(query),"INSERT INTO gbdata (GBID,GBPreis,GBBuystate,GBIconX,GBIconY,GBIconZ) VALUES ('%i','%i','%i','%f','%f','%f')",id,preis,1,x,y,z);
    mysql_query(query);
    mysql_free_result();
    }
    return 1;
    }



    E1: Kann es daran liegen das ich zwar eine tabelle erstelle aber ein teil der werte beim erstellen leer bleiben ?

    Einmal editiert, zuletzt von janser123 ()

  • Nein, daran liegt es ganz sicher nicht.


    Hier liegt der Fehler:
    format(query,sizeof(query),"UPDATE gbdata SET GBZoneX1 ='%f',GBZoneX2 ='%f',GBZoneY1 ='%f',GBZoneY2 ='%f' WHERE GBID =='%i'",p1x,p2x,p1y,p2y,id);
    SQL Bedingungen fragt man mit nur einem '=' ab, nicht wie sonst mit zweien.


    Hier die richtige Variante:
    format(query,sizeof(query),"UPDATE gbdata SET GBZoneX1='%f',GBZoneX2='%f',GBZoneY1='%f',GBZoneY2='%f' WHERE GBID='%i'",p1x,p2x,p1y,p2y,id);





    BlackLegend