mysql lädt falsch?!

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 hab ein kleines Problem. Ich hab das neuste mysqlplugin von strickenkid.


    Nun hab ich in einer mysql tabelle 15 datensätze drin, wobei der 15. datensatz nicht ausgelesen wird und dann der server crasht (bzw. nicht lädt, gamemode: unknown).


    hier der code


    stock LoadTankstellen()
    {
    MySQLCheck();
    printf(" ");
    printf("____________Tankstellen Anfang____________");
    printf(" ");
    new idx;new data[256];
    mysql_query("SELECT * FROM gasstation");
    mysql_store_result();
    while(mysql_fetch_row_data())
    {
    TankstellenInfo[idx][tID] = idx;
    mysql_fetch_field("tBenzin",data);TankstellenInfo[idx][tBenzin] = strval(data);
    mysql_fetch_field("tPosX",data);TankstellenInfo[idx][tPosX] = floatstr(data);
    mysql_fetch_field("tPosY",data);TankstellenInfo[idx][tPosY] = floatstr(data);
    mysql_fetch_field("tPosZ",data);TankstellenInfo[idx][tPosZ] = floatstr(data);
    printf("ID: %d, Benzin: %d, PosX: %f, PosY: %f, PosZ: %f",TankstellenInfo[idx][tID],TankstellenInfo[idx][tBenzin],TankstellenInfo[idx][tPosX],TankstellenInfo[idx][tPosY],TankstellenInfo[idx][tPosZ]);
    idx++;
    }
    mysql_free_result();
    printf(" ");
    printf("____________Tankstellen Ende____________");
    printf(" ");
    return 1;
    }


    Allerdings ist es das selbe prinzip wie bei jeder anderen tabelle, die ich aus dieser datenbank lese.


    Jemand ne Ahnung?


    MFG selEcT

  • das wäre nice :D es ist wirklich ein blödes problem, es passiert nur bei dem.. das ist sehr ärgerlich.. hat jemand ne andere variante, wie er die sachen rausliest?


    //edit:


    ich habs jetzt mal so versucht.


    stock LoadTankstellen()
    {
    MySQLCheck();
    new idx;new data[256];
    mysql_query("SELECT * FROM gasstation");
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    while(mysql_fetch_row(data))
    {
    TankstellenInfo[idx][tID] = idx;
    mysql_fetch_field("tBenzin",data);TankstellenInfo[idx][tBenzin] = strval(data);
    mysql_fetch_field("tPosX",data);TankstellenInfo[idx][tPosX] = floatstr(data);
    mysql_fetch_field("tPosY",data);TankstellenInfo[idx][tPosY] = floatstr(data);
    mysql_fetch_field("tPosZ",data);TankstellensInfo[idx][tPosZ] = floatstr(data);
    printf("ID: %d, Benzin: %d, PosX: %f, PosY: %f, PosZ: %f",TankstellenInfo[idx][tID],TankstellenInfo[idx][tGas],TankstellenInfo[idx][tPosX],TankstellenInfo[idx][tPosY],TankstellenInfo[idx][tPosZ]);
    idx++;
    }
    }
    mysql_free_result();
    return 1;
    }


    funzt aber trotzdem nicht. Hab die Tabelle auch schon neu gemacht, kein Erfolg.

  • Hauptsache du machst eine while schleife, aber zählst da eine variable hoch..
    Es gibt Dinge, die werd ich nie verstehen :P


    for ftw


    die variable ist ja unabhängig von der while schleife o_O die ist nur dazu da, um die Arrays zu füllen..


    Hi


    Why machst du das eig net mit einer for-schleife? oO Geht doch genauso gut wie mit while^^
    Probiers ma ;)


    MFG, Robdeflop®


    hmm und wie soll ich das machen? X( kann ich in der for schleife mysql_fetch_row(data) mitnehmen?


    Also


    for(new i=0;i<sizeof(mysql_fetch_row(data));i++)


    oder


    for(new i=0;i<sizeof(mysql_num_rows());i++)


    oder wie sonst?



    edit: Es funktioniert nun mit dem while. Ich hab vergessen die Variable heraufzuzählen, also von TanktellenInfo[14] auf TankstellenInfo[15].. blöder fehler.. xD lustig ist aber das mir das im schlaf eingefallen ist X( Aber es wäre schon noch gut zu wissen, wie das mit der forschleife geht.


    aber noch was..


    stock SaveTankstellen()
    {
    MySQLCheck();
    new query[MAX_STRING];new idx;
    while(idx < 15) //mit anzahl in mysqltabelle verändern
    {
    format(query, MAX_STRING, "UPDATE gasstation SET tBenzin=%d,tPosX=%f,tPosY=%f,tPosZ=%f WHERE ID=%d",TankstellenInfo[idx][tBenzin],TankstellenInfo[idx][tPosX],TankstellenInfo[idx][tPosY],TankstellenInfo[idx][tPosZ],idx+1);
    mysql_query(query);
    idx++;
    }
    return 1;
    }


    wie kann ich das besser machen? Also das statt idx < 15 etwas eindeutiges steht..


    MFG