MYSQL Auto IDS?

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
  • Huhu,
    gibts ne query, oder ne einstellung bei ner mysql datenbank, dass sich die ids, die auto_increment haben, IMMER bei 1 anfangen, also auch, wenn welche gelöscht werden und danach IMMER in Reihenfolge bleiben?


    Wäre richtig cool, wenns sowas geben würde.


    LG

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Nein das ist nicht möglich.
    was möchtest du genau machen ?, die modelid als zusätzlicher primär schlüssel nutzen.


    @John_Hunter jedoch werden die ids nicht neu gesetzt und es kommt zu komplikationen wenn man den primärschlüssel gesetzt hat bei neuen einträgen.

  • Ich hab ne Abfrage, wo abgefragt ist, wv Datensätze es gibt. Dann wird ab 1 angefangen zu zählen und die Schleife wird durchgegangen. Wenn allerdings zwischendrin was fehlt, oder der Anfang weiter hinten anfängt, zählt er logischerweise falsch bzw lässt Datensätze aus. Das versuche ich zu vermeiden. Geht übrigens um nen Haussystem und da um dynamisches löschen und speichern. Habe dazu nur MYSQL verwendet, keine enums.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Huhu,
    gibts ne query, oder ne einstellung bei ner mysql datenbank, dass sich die ids, die auto_increment haben, IMMER bei 1 anfangen, also auch, wenn welche gelöscht werden und danach IMMER in Reihenfolge bleiben?


    Wäre richtig cool, wenns sowas geben würde.


    LG


    Google das mal dafür gibs nen extra Query der das wieder richtig sortiert: Iwie mit Alter

  • kannste mal nen Beispiel für mysql_fetch_row_format geben? Bin ziemlicher Anfänger bei MySQL.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • kannste mal nen Beispiel für mysql_fetch_row_format geben? Bin ziemlicher Anfänger bei MySQL.



    #define MAX_HOUSE 10
    enum eHouse {
    hID,
    Float:hX,
    Float:hY,
    Float:hZ,
    };
    new HouseData[MAX_HOUSE][eHouse];



    new i, result[200];
    mysql_query("SELECT * FROM `house`;");
    while(mysql_fetch_row_format(result)) { // 1 //
    sscanf(result,"p<|>e<ifff>",HouseData[i]); // 2 //
    CreatePickup(1242, 2, HouseData[i][hX], HouseData[i][hY], HouseData[i][hZ], -1);
    ++i;
    }


    // 1 // ausgelesene Daten werden als string zurück gegeben in diesem format 1|12.0|19.0|0.134
    // 2 // Der String mit den ausgelesen Daten wird aufgesplittet p<|> bedeutet es wird nach dem zeichen |
    //gesucht und dann gesplittet e<ifff> bedeutet das die umkonvertierte daten direkt dem array zugeordnet wird
    e steht hier für enum. Die abfolge der specifer zwischen e< .. > muss der abfolge deines enums entsprechen vom
    datentyp her


    i = hiD (integer)
    f = hX (float)
    ...


    Hier bitte beschreibung ist enthalten in dem code ich hoffe es war einleuchtend

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Funktioniert leider nicht. Es werden zum einen keine Häuser geladen zum anderen dauert jetzt der Login ewig, man spawnt erst, nachdem man auf Spawnen klickt (normal wirds übersprungen) und beim ersten Login kam nen Datenbankfehler... ^^


    Code
    p<|>e<iiifffiiiiiis>

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Der sollte stimmen, vorrausgesetzt man muss nicht die selben Namen wie in der MySQL Tabelle nutzen.


    edit: Habe mal nen print in die Schleife eingebaut. Sie scheint gar nicht aufgerufen zu werden..

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • new i, result[200];
    mysql_query("SELECT * FROM `houses`;");
    mysql_store_result();
    while(mysql_fetch_row_format(result))
    {
    mysql_free_result();
    sscanf(result,"p<|>e<iiifffiiiiiis>",HouseData[i]);
    CreatePickup(1242, 1, HouseData[i][hX], HouseData[i][hY], HouseData[i][hZ], -1);
    ++i;
    printf("Status %d", i);
    }


    Ergebnis:

    Code
    [22:14:23] Status 1


    Mehr nicht. Es sind 2 Datensätze.


    Gespawnt ist auch nichts.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!


  • new i, result[200];
    mysql_query("SELECT * FROM `houses`;");
    mysql_store_result();
    while(mysql_fetch_row_format(result))
    {

    sscanf(result,"p<|>e<iiifffiiiiiis>",HouseData[i]);
    CreatePickup(1242, 1, HouseData[i][hX], HouseData[i][hY], HouseData[i][hZ], -1);
    ++i;
    printf("Status %d %s %f", i,result,HouseData[i][hX]);
    }
    mysql_free_result();


    so sollte es gehen falls HouseData[i][hx] den falschen oder kein wert ausgibt liegt es an der abfolge der specifer.
    so ist sscanf nicht in der lage den string (result) richtig zu splitten und die daten zu übergeben.

  • enum eHouse {
    hID,
    hStatus,
    hOwnerID,
    Float:hX,


    p<|>e<iiif


    MySQL:

    Code
    ID
    Status
    OwnerID
    a_x


    Müsste doch richtig sein, oder nicht? Die Abfrage ist richtig, wird aber leider als Float nur 0.0000 ausgegeben.


    LOG:

    Code
    [17:08:53] Status 1 4|0|0|-1759|956.059|24.7422|0|2|0|0|0|0|- 0.000000
    [17:08:53] Status 2 6|0|0|-1767.12|951.839|24.7422|0|1|0|0|0|0|- 0.000000


    Die Koordinaten da sind schon richtig, allerdings wird hinten wie zu sehen das falsche ausgegeben.


    Sollte das schon auf HouseData geschrieben sein, oder muss man das noch schreiben?

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    2 Mal editiert, zuletzt von ElDiabolo ()

  • Ja benutze ich... Da oben ist auch nirgens nen String. ^^


    Du hast oben jedoch also specifer einen angegeben.
    (s)


    Hast du auch den sscanf code raus genommen diesen



    stock sscanf(string[], format[], {Float,_}:...) { #if defined isnull if (isnull(string))




    und poste mal dein ganzes enum ich schau morgen mal danach

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen