[MYSQL]Letze ID der Tabelle

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 Leute,


    ich möchte für mein MYSQL System eine Funktion damit ich die letze ID in der Tabelle herausfinde sprich
    ich habe früher bei meinem alten RL GM es über dini gemacht siehe cmd
    if(strcmp(cmd, "/auto", true)==0)
    {
    if(Account[playerid][Admin] == 3)
    {
    if((ReturnNextUnusedVehicleID()-1) >= MAX_VEHICLES) return SendClientMessage(playerid, COLOR_WHITE, "Das Maximum an Fahrzeugen wurde erreicht.");
    new modelid,respawn,vw,mj,fc,c1,c2,mystr[128];
    new Float:isx,Float:isy,Float:isz;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SCM(playerid, COLOR_WHITE, "Benutze: /auto [modelid] [Farbe1] [Farbe2]");
    return 1;
    }
    modelid = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SCM(playerid, COLOR_WHITE, "Benutze: /auto [modelid] [Farbe1] [Farbe2]");
    return 1;
    }
    c1 = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SCM(playerid, COLOR_WHITE, "Benutze: /auto [modelid] [Farbe1] [Farbe2]");
    return 1;
    }
    c2 = strval(tmp);
    SCM(playerid,COLOR_GREEN,"/////////////////////////////////////////////////");
    SCM(playerid,COLOR_LIGHTRED," Auto erstellt ");
    SCM(playerid,COLOR_GREEN,"/////////////////////////////////////////////////");
    GPP(playerid,Float:isx,Float:isy,Float:isz);
    new count=1;
    new autostring[60];
    new as[128];
    format(autostring,sizeof autostring,"Autos/vehicle_%d.ini",count);
    while(fexist(autostring))
    {
    count++;
    format(autostring,sizeof autostring,"Autos/vehicle_%d.ini",count);
    }
    dini_Create(autostring);
    dini_IntSet(autostring,"Auto",count);
    Autos[count][vModel] = modelid;
    Autos[count][vEingepackt] = 0;
    Autos[count][vArt] = 0;
    Autos[count][vX] = isx;
    Autos[count][vY] = isy;
    Autos[count][vZ] = isz;
    Autos[count][vA] = 0;
    Autos[count][vFarbe1] = c1;
    Autos[count][vFarbe2] = c2;
    format (as,sizeof(as),"FahrzeugID='%d'",count);
    new sqltemp[128];
    format(sqltemp,sizeof(sqltemp),"INSERT INTO autos SET %s",as);
    mysql_query(sqltemp);


    format(mystr,sizeof(mystr),"UPDATE autos SET Model='%d' WHERE %s;",Autos[count][vModel],as);mysql_query(mystr);
    CreateVehicle(modelid,isx,isy,isz,0,c1,c2,-1);
    }
    else
    {
    SCM(playerid, COLOR_RED, "Du bist kein Admin!");
    return 1;
    }
    return 1;
    }

    public OnVehicleDataUpdate(vehicleid)
    {
    new str[128];
    new string[128];
    format (str,sizeof(str),"FahrzeugID='%d'",vehicleid);
    format(string,sizeof(string),"Model='%d",Autos[vehicleid][vModel]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"Eingepackt='%d",Autos[vehicleid][vEingepackt]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"Art='%d",Autos[vehicleid][vArt]); UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"X='%f",Autos[vehicleid][vX]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"Y='%f",Autos[vehicleid][vY]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"Z='%f",Autos[vehicleid][vZ]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"A='%f",Autos[vehicleid][vA]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"Farbe1='%d",Autos[vehicleid][vFarbe1]);UpdateMYSQL("autos",string,str);
    format(string,sizeof(string),"Farbe2='%d",Autos[vehicleid][vFarbe2]);UpdateMYSQL("autos",string,str);
    return 1;
    }

    public OnVehicleLoad(vehicleid)
    {
    new count = vehicleid;
    new carloadstring[60];
    format(carloadstring,sizeof(carloadstring),"FahrzeugID='%d'",count);
    if (QueryMySQL("*","autos",carloadstring,"")>0)
    {
    while(mysql_fetch_row(mysqlresult))
    {
    Autos[count][vModel] = GetMySQLField_Int("Model");
    Autos[count][vEingepackt] = GetMySQLField_Int("Eingepackt");
    Autos[count][vArt] = GetMySQLField_Int("Art");
    Autos[count][vX] = GetMySQLField_Float("X");
    Autos[count][vY] = GetMySQLField_Float("Y");
    Autos[count][vZ] = GetMySQLField_Float("Z");
    Autos[count][vA] = GetMySQLField_Float("A");
    Autos[count][vFarbe1] = GetMySQLField_Int("Farbe1");
    Autos[count][vFarbe2] = GetMySQLField_Int("Farbe2");
    if (Autos[count][vEingepackt] == 0)
    {
    CreateVehicle(Autos[count][vModel],Autos[count][vX],Autos[count][vY],Autos[count][vZ],Autos[count][vA],Autos[count][vFarbe1],Autos[count][vFarbe2],-1);
    }
    else if (Autos[count][vEingepackt] == 1 && Autos[count][vArt] == 1)
    {
    CreateVehicle(591,Autos[count][vX],Autos[count][vY],Autos[count][vZ],Autos[count][vA],Autos[count][vFarbe1],Autos[count][vFarbe2],-1);
    SetVehicleVirtualWorld(count,Autos[count][vVW]);
    }
    else if (Autos[count][vEingepackt] == 1&& Autos[count][vArt] == 2)
    {
    CreateVehicle(591,Autos[count][vX],Autos[count][vY],Autos[count][vZ],Autos[count][vA],Autos[count][vFarbe1],Autos[count][vFarbe2],-1);
    SetVehicleVirtualWorld(count,Autos[count][vVW]);
    }
    else if (Autos[count][vEingepackt] == 1 && Autos[count][vArt] == 3)
    {
    CreateVehicle(591,Autos[count][vX],Autos[count][vY],Autos[count][vZ],Autos[count][vA],Autos[count][vFarbe1],Autos[count][vFarbe2],-1);
    SetVehicleVirtualWorld(count,Autos[count][vVW]);
    }
    }
    }
    }


    Alte Strukur


    Da wurde eine Daten erstellt ohne inhalt und anhand dieser Datei konnte der GM immer weiter autos erstellen ohne sie zu überschreiben
    wie mache ich es das er die ID nicht von einer Dini Datei bekommt sondern von der MYSQL Tabelle selber?


    hier meine mysql include
    http://pastebin.com/TqNjr6bT
    hier meine mysql funktionen
    http://pastebin.com/3U05hX8x


    //edit: Laden, Erstellen und Updaten eingefügt Bild der Struktur eingefügt
    Dies sind nur ausschnitte wie es bevor war mit dini und in abgespeckter Version also das nötigste ohne den ganzen Inahlt den ich früher mal hatte
    Dies habe ich nur gemacht damit ich die Basis ändern kann und der code hier kürzer wird


    mfg Dedi



    Einmal editiert, zuletzt von Tomi93 ()

  • Ich habe hier nur die abgespeckte Version also
    nicht alles wie es früher war nur das wichtigste damit man ein Auto erstellen kann
    und dann fahren
    diese Bilder und Code ausschnitte sind von meinem alten RL GM bei dem er die IDs per Dini herausfindet und
    dem entsprechend in die MYSQL Tabelle schreibt
    ich möchte das nun ohne Dini machen und das MYSQL selber die IDs nach und nach Automatisch einträgt


    1. Beitrag wurde editert
    Code zum Laden des Fahrzeuges eingefügt
    Code zum Erstellen eines Fahrzeuges eingefügt
    Code zum Updaten eines Fahrzeuges eingefügt
    Ein Bild der alten MYSQL Strukur eingefügt,


    Ich hoffe das reicht :)


    mfg Dedi

  • Also ich mach das immer so :
    SELECT FahrzeugID FROM TABELLE ORDER BY FahrzeugID DESC LIMIT 1


    d.h er nimmt die FahrzeugID sortiert nach dieser.
    DESC heist absteigend somit fängt er mit der höchsten an.
    LIMIT 1 ist halt das er nur einen Wert ausgeben soll.
    Somit hast du den höchsten Wert.



    Hoffe ich konnte helfen.
    mfg Kagayushi

  • dann mach das so :

    SQL
    query = SELECT FahrzeugID FROM Tabelle
    
    
    //Dann abfrage ob die 0 ist 
    //Wenn ja dann soll er 0 einsetzen.
    
    
    //Wenn nicht dann 
    SELECT FahrzeugID FROM Tabelle ORDER BY FahrzeugID DESC LIMIT 1


    So kannst du das doch machen.
    Halt fragen ob schon was drin steht wenn nich halt 0 einsetzen wenn doch dann höchste ID nehmen die plus 1 und dann reinschreiben.


    mfg Kagayushi


    //edit
    Kommentare beim MySQL ding mit "//" vesehen ^^

  • Also folgendes
    Ich möchte mit dem Befehl /auto ein Fahrzeug erstellen
    und MYSQL erstellt in der Tabele automatisch eine ID
    Also
    1. Fahrzeug hat ID 0
    2. Fahrzeug hat ID 1
    3. Fahrzeug hat ID 2
    Die IDs soll MYSQL dem Fahrzeug selber geben doch um die zu erstellen
    brauche ich ja die ID um die Variablen nutzen zu können
    Autos[vehid][vvar]
    oder könnt ihr mir eine bessere Methode vorschlagen wie ich ein car mit /auto erstelle
    so das MYSQL automatisch eine ID dem fahrzeug zuteilt ohne das vorherige zu überschreiben

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Diese Art scheint zu funktionieren doch er will nichts in die Tabelle schreiben warum?
    das steht in der mysql log


  • public OnVehicleDataUpdate(vehicleid)
    {
    new str[128];
    new sqltemp[128];
    format (str,sizeof(str),"FahrzeugID='%d'",vehicleid);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Model='%d' WHERE %s;",Autos[vehicleid][vModel],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Eingepackt='%d' WHERE %s;",Autos[vehicleid][vEingepackt],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Art='%d' WHERE %s;",Autos[vehicleid][vArt],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET X='%f' WHERE %s;",Autos[vehicleid][vX],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Y='%f' WHERE %s;",Autos[vehicleid][vY],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Z='%f' WHERE %s;",Autos[vehicleid][vZ],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET A='%f' WHERE %s;",Autos[vehicleid][vA],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Farbe1='%d' WHERE %s;",Autos[vehicleid][vFarbe2],str);mysql_query(sqltemp);
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Farbe2='%d' WHERE %s;",Autos[vehicleid][vFarbe2],str);mysql_query(sqltemp);
    return 1;
    }

  • Und wenn du es mal so versuchst?
    format(sqltemp,sizeof(sqltemp),"UPDATE autos SET Model='%d' WHERE FahrzeugID = '%d'",Autos[vehicleid][vModel],vehicleid);mysql_query(sqltemp);
    Sry ich kann jetzt auch nur noch raten ^^

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Nein Maddin
    habe es nun so getest als ich nur das acc system gemacht habe ging alles ohne probleme
    jetzt habe ich das ganze Auto System auskommentiert und das updaten ohne probleme
    wenn ich das Auto system wieder einfüge sozusagen so geht das updaten von den Autos sowie von den Accounts nicht
    nun habe ich erst mal das Laden der Autos entfernt
    Problem besteht weiterhin
    Dann habe ich das laden wieder eingefügt
    und den /auto befehl auskommentiert
    und das ganze noch mal probiert auf den server und wieder runter nun geht das updaten auf einmal wieder also liegt der Fehler im /auto befehl drin



    if(strcmp(cmd, "/auto", true)==0)
    {
    if(Account[playerid][pAdmin] == 3)
    {
    new modelid,c1,c2,mystr[128];
    new Float:isx,Float:isy,Float:isz;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SCM(playerid, COLOR_WHITE, "Benutze: /auto [modelid] [Farbe1] [Farbe2]");
    return 1;
    }
    modelid = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SCM(playerid, COLOR_WHITE, "Benutze: /auto [modelid] [Farbe1] [Farbe2]");
    return 1;
    }
    c1 = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SCM(playerid, COLOR_WHITE, "Benutze: /auto [modelid] [Farbe1] [Farbe2]");
    return 1;
    }
    c2 = strval(tmp);
    SCM(playerid,COLOR_GREEN,"/////////////////////////////////////////////////");
    SCM(playerid,COLOR_LIGHTRED," Auto erstellt ");
    SCM(playerid,COLOR_GREEN,"/////////////////////////////////////////////////");
    GPP(playerid,Float:isx,Float:isy,Float:isz);
    new count = mysql_query("SELECT MAX(`FahrzeugID`) FROM autos");
    printf("%d count",count);
    new sqltemp[128];
    format(sqltemp,sizeof(sqltemp),"INSERT INTO autos SET FahrzeugID='%d'",count);
    mysql_query(sqltemp);
    Autos[count][vModel] = modelid;
    Autos[count][vEingepackt] = 0;
    Autos[count][vArt] = 0;
    Autos[count][vX] = isx;
    Autos[count][vY] = isy;
    Autos[count][vZ] = isz;
    Autos[count][vA] = 0;
    Autos[count][vFarbe1] = c1;
    Autos[count][vFarbe2] = c2;


    format(mystr,sizeof(mystr),"UPDATE autos SET Model='%d' WHERE FahrzeugID='%d'",Autos[count][vModel],count);mysql_query(mystr);
    CreateVehicle(modelid,isx,isy,isz,0,c1,c2,-1);
    OnVehicleDataUpdate(count);
    }
    else
    {
    SCM(playerid, COLOR_RED, "Du bist kein Admin!");
    return 1;
    }
    return 1;
    }


    aber wo?



    Einmal editiert, zuletzt von Tomi93 ()