Fahrzeug wird nicht ausgelesen.

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,


    vorab es geht um MySQL.


    Ich möchte ein Fahrzeug aus einer Tabelle auslesen lassen, jedoch wird das irgendwie falsch geladen?

    Code
    stock LoadPlayerCars()
    {
    new vehicleid = 1;
    while(vehicleid < MAX_KNOWING_VEHICLES)
    {
    format(str, sizeof str, "%i", vehicleid);
    format(PrivCar[vehicleid][vBesitzer], MAX_PLAYER_NAME, mysql_GetString("spielerautos", "Besitzer", "ID", str));
    format(PrivCar[vehicleid][vName], 35, mysql_GetString("spielerautos", "Name", "ID", str));
    PrivCar[vehicleid][vModelid] = mysql_GetInt("spielerautos", "Modelid", "ID", str);
    format(PrivCar[vehicleid][vNummernschild], 20, mysql_GetString("spielerautos", "Nummernschild", "ID", str));
    PrivCar[vehicleid][vPoSx] = mysql_GetFloat("spielerautos", "PosX", "ID", str);
    PrivCar[vehicleid][vPoSy] = mysql_GetFloat("spielerautos", "PosY", "ID", str);
    PrivCar[vehicleid][vPoSz] = mysql_GetFloat("spielerautos", "PosZ", "ID", str);
    PrivCar[vehicleid][vPoSa] = mysql_GetFloat("spielerautos", "PosA", "ID", str);
    PrivCar[vehicleid][vAbgeschlossen] = mysql_GetInt("spielerautos", "Abgeschlossen", "ID", str);
    PrivCar[vehicleid][vFarbe1] = mysql_GetInt("spielerautos", "Farbe1", "ID", str);
    PrivCar[vehicleid][vFarbe2] = mysql_GetInt("spielerautos", "Farbe2", "ID", str);
    PrivCar[vehicleid][vPaintjob] = mysql_GetInt("spielerautos", "Paintjob", "ID", str);
    PrivCar[vehicleid][vSpoiler] = mysql_GetInt("spielerautos", "Spoiler", "ID", str);
    PrivCar[vehicleid][vHood] = mysql_GetInt("spielerautos", "Hood", "ID", str);
    PrivCar[vehicleid][vRoof] = mysql_GetInt("spielerautos", "Roof", "ID", str);
    PrivCar[vehicleid][vSideskirt] = mysql_GetInt("spielerautos", "Sideskirt", "ID", str);
    PrivCar[vehicleid][vLamps] = mysql_GetInt("spielerautos", "Lamps", "ID", str);
    PrivCar[vehicleid][vNitro] = mysql_GetInt("spielerautos", "Nitro", "ID", str);
    PrivCar[vehicleid][vExhaust] = mysql_GetInt("spielerautos", "Exhaust", "ID", str);
    PrivCar[vehicleid][vWheels] = mysql_GetInt("spielerautos", "Wheels", "ID", str);
    PrivCar[vehicleid][vStereo] = mysql_GetInt("spielerautos", "Stereo", "ID", str);
    PrivCar[vehicleid][vHydraulics] = mysql_GetInt("spielerautos", "Hydraulics", "ID", str);
    PrivCar[vehicleid][vFrontBumper] = mysql_GetInt("spielerautos", "FrontBumper", "ID", str);
    PrivCar[vehicleid][vRearBumper] = mysql_GetInt("spielerautos", "RearBumper", "ID", str);
    PrivCar[vehicleid][vVentRight] = mysql_GetInt("spielerautos", "VentRight", "ID", str);
    PrivCar[vehicleid][vVentLeft] = mysql_GetInt("spielerautos", "VentLeft", "ID", str);
    PrivCar[vehicleid][vAbgeschleppt] = mysql_GetInt("spielerautos", "Abgeschleppt", "ID", str);
    CreateVehicle(PrivCar[vehicleid][vModelid], PrivCar[vehicleid][vPoSx], PrivCar[vehicleid][vPoSy], PrivCar[vehicleid][vPoSz], PrivCar[vehicleid][vPoSa], PrivCar[vehicleid][vFarbe1], PrivCar[vehicleid][vFarbe2], -1);
    printf("%i | %i | %i | %i | %i | %i | %i", PrivCar[vehicleid][vModelid], PrivCar[vehicleid][vPoSx], PrivCar[vehicleid][vPoSy], PrivCar[vehicleid][vPoSz], PrivCar[vehicleid][vPoSa], PrivCar[vehicleid][vFarbe1], PrivCar[vehicleid][vFarbe2]);
    vehicleid ++;
    }
    return 1;
    }

    Die Konsole gab mir allerdings das wieder: "-1 | 0 | 0 | 0 | 0 | -1 | -1" obwohl die Positionen nicht "0", die Modelid nicht "-1" ist und die Farben nicht "-1" sind.


    MfG

  • stocks
    stock mysql_GetString(Table[], Field[], Where[], Is[])
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    return Get;
    }
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }
    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }

  • Wie Groß ist MAX_KNOWING_VEHICLES und ich meinte ein paar Einträge nicht die Struktur.


    new MAX_KNOWING_VEHICLES = 300;


    #e
    Es wird anscheinend nicht ausgelesen denn, wen ich
    printf("%i", mysql_GetFloat("spielerautos", "PosX", "ID", str));
    mache wird immer "0" geprintet.


    #e2
    /push

  • Wäre es nicht Besser wenn du es über den Besitzer laden würdest oder einfach nacheinander.


    Ausserdem in deinem printf test welchen wert hat str bzw die ID?


    /e
    Wenn du es nacheinander laden willst würde ich die variable von MySQL setzten lassen.
    Hier der MySQL code wo du später nur noch var = mysql_num_rows(); machen musst.

    SQL
    SELECT COUNT(*) FROM `spielerautos`;


    MFG Piet

  • Ich kann dir sagen wiso
    schau dein code an
    new vehicleid = 1;
    Du lässt den ab 1 hochgehen
    aber in der Tabelle ist die ID 0
    daher kommt nix
    Wie gesagt am ende gibst du den das:
    WHERE ID = 1
    aber du brauchst
    WHERE ID = 0


    //e
    und da es id 1 nicht gibt gibt er -1 gerne wieder

    All in all it's just another brick in the wall

  • Hab jetzt mal alle Stringtexte die ausgelesen werden sollen als letztes laden lassen, trotzdem gibt die Konsole den Wert 0 zurück.


    zu deinen Fragen:
    str = string (ist ganz oben im Script mit "new" definiert damit ich das bei "OCMD" nicht immer neuschreiben muss ^^.
    ID = Die Nummerierung in der Datenbank (der erste eintrag ist 0 der nächste 1 usw) und ist im enum mit "vID" deklariert.


    MfG


  • das schon gemacht?

    All in all it's just another brick in the wall