MySQL Problem

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,
    ich habe derzeit ein Problem mit mein Dynamischen Fraktionssystem.


    Ich möchte gerne die Koordinaten aus der Datenbank von der Tabelle "Fraktionen" auslesen, allerdings setzt er die Variablen nur die Werte "0.0..." zu sprich man Spawnt immer am 0 Punkt.


    Code:



    new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    new num_fields2,num_rows2;
    if(!num_rows2)return 1;
    for(new i=0; i<num_rows2; i++)
    {
    cache_get_data(num_rows2,num_fields2,dbhandle);
    FPosX = cache_get_field_content_float(i,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(i,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(i,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(i,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(i,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(i,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }


    ((Ich weiß leider nicht mehr wie man das als PAWN-Code einbindet))


    Ich hoffe es kann mir einer helfen. ?(



    Mfg,


    CinqYo

  • Kannst du bitte die ganze Funktion (von public an) posten, sowie das query, welches das public aufruft?


    Den pwn Tag setzt du richtig, indem du auf Quellcode drückst, das steht über der Schriftart. Dann drückst du auf den PWN Knopf, das ist der letzte in der Reihe.

  • ublic OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    LoadPrivatCars(playerid);
    SpielerLaden(playerid);
    StopAudioStreamForPlayer(playerid);
    HideLoginMenu(playerid);
    UpdateReportTD();
    switch (sInfo[playerid][SpawnType])
    {
    case 0:
    {
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], 1093.9182,-1987.8860,69.0609,226.516, 0, 0, 0, 0, 0, 0 );
    SpawnPlayer(playerid);
    }
    case 1:
    {
    new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    new num_fields2,num_rows2;
    if(!num_rows2)return 1;
    for(new i=0; i<num_rows2; i++)
    {
    cache_get_data(num_rows2,num_fields2,dbhandle);
    FPosX = cache_get_field_content_float(i,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(i,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(i,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(i,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(i,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(i,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }
    }
    case 2:
    {
    //HausSpawn
    }
    case 3:
    {
    //Letzter Standort
    }

    }
    //Hier gehts eig. weiter, hat aber nix mehr mit der Funktion zu tun.
    }

  • new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    new num_fields2,num_rows2;cache_get_data(num_rows2,num_fields2,dbhandle);
    if(!num_rows2)return 1;
    for(new i=0; i<num_rows2; i++)
    {FPosX = cache_get_field_content_float(i,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(i,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(i,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(i,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(i,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(i,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }


    Schätze mal du musst erst num_rows2 befüllen bevor du abfragen kannst ob was drin is :b also habs dir mal an die richtige Stelle gesetzt

  • Du sprichst doch garkeine Datenbank an ? Du müsstest eine neue query erstellen mit der Abfrage die du haben willst bspw: SELECT * from SPAWNS
    Aber warum hast du da überhaupt eine forschleife drin ? Du Lässt den Spieler dann an jedem Spawn spawnen und am letzen in der Datenbank bleibt er dann

  • Das dbhandle spricht die komplette Datenbank an.
    Ehm, ja die for schleife war eig. nur zu test zwecken, macht kein unterscheid ob mit oder ohne es kommt der gleiche Fehler, habe die Schleife mal rausgenommen.

  • Ja aber du willst doch von der Datenbank etwas :D num_rows2 wird bei diesem Code IMMER 1 sein da wenn es nicht 1 wäre garnicht soweit kommen würde da es ganz am anfang die Abfrage if(num_rows==1) gibt. Du frägst einfach nur 2mal ab wieviele Datensätze die Tabelle accounts oder wie auch immer du sie genannt hast hab bzw ob das eingegebene Passwort mit dem aus der datenbank übereinstimmt. also anstelle von der zweiten cache_get_data einfach eine neue Abfrage bei der du erneut die Datenbank ansprichst. Es kann sein das ich mit dem völlig falsch liege ich würde es so machen und bin mir dabei auch ziemlich sicher das es stimmt :D

  • Wie sieht es aus, wenn du es so schreibst?

    Spoiler anzeigen
    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    LoadPrivatCars(playerid);
    SpielerLaden(playerid);
    StopAudioStreamForPlayer(playerid);
    HideLoginMenu(playerid);
    UpdateReportTD();
    switch (sInfo[playerid][SpawnType])
    {
    case 0:
    {
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], 1093.9182,-1987.8860,69.0609,226.516, 0, 0, 0, 0, 0, 0 );
    SpawnPlayer(playerid);
    }
    case 1:
    {
    new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    FPosX = cache_get_field_content_float(0,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(0,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(0,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(0,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(0,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(0,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }
    case 2:
    {
    //HausSpawn
    }
    case 3:
    {
    //Letzter Standort
    }
    }
    //Hier gehts eig. weiter, hat aber nix mehr mit der Funktion zu tun.

    }


    Wenn es nicht geht, poste bitte den Code der das OnPasswordResponse aufruft.

  • Habe es mal versucht, hat allerdings nicht geklappt.


    Hier mal der MySQL Fehler den ich zufällig grad in der MySQL Log Datei gefunden habe :rolleyes:


    [12:38:30] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnX")
    [12:38:30] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnY")
    [12:38:30] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnZ")
    [12:38:30] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnRT")
    [12:38:30] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnInt")
    [12:38:30] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnVir")
    [17:30:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnX")
    [17:30:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnY")
    [17:30:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnZ")
    [17:30:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnRT")
    [17:30:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnInt")
    [17:30:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("SpawnVir")

  • Ahh, ja blöd von mir hab es wirklich vergessen zu selectieren :D:D
    Hab nur eine Tabelle slectiert^^


    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE Name='%s' AND Passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);


    Danke für den Hinweis, euch beiden :)

  • Danke, echt nett von dir :)


    stock SpielerLaden(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    sInfo[playerid][Eingeloggt] = 1;
    sInfo[playerid][SkinID] = cache_get_field_content_int(0,"SkinID",dbhandle);
    sInfo[playerid][Banned] = cache_get_field_content_int(0,"Banned",dbhandle);
    sInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"Adminlevel",dbhandle);
    sInfo[playerid][Geschlecht] = cache_get_field_content_int(0,"Geschlecht",dbhandle);
    sInfo[playerid][Geld] = cache_get_field_content_int(0,"Geld",dbhandle);
    sInfo[playerid][Perso] = cache_get_field_content_int(0,"Perso",dbhandle);
    sInfo[playerid][Prison] = cache_get_field_content_int(0,"Prison",dbhandle);
    sInfo[playerid][Fraktion] = cache_get_field_content_int(0,"Fraktion",dbhandle);
    sInfo[playerid][SpawnType] = cache_get_field_content_int(0,"SpawnType",dbhandle);
    SetPlayerSkin(playerid,sInfo[playerid][SkinID]);
    GivePlayerMoney(playerid,sInfo[playerid][Geld]);
    TextDrawShowForPlayer(playerid,Uhrzeit[0]);
    return 1;
    }

  • Teste es mal so:
    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    LoadPrivatCars(playerid);
    SpielerLaden(playerid);
    StopAudioStreamForPlayer(playerid);
    HideLoginMenu(playerid);
    UpdateReportTD();
    switch (sInfo[playerid][SpawnType])
    {
    case 0:
    {
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], 1093.9182,-1987.8860,69.0609,226.516, 0, 0, 0, 0, 0, 0 );
    SpawnPlayer(playerid);
    }
    case 1:
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM fraktionen WHERE id = %d",sInfo[playerid][Fraktion]);
    mysql_function_query(dbhandle,query,true,"OnFrakSpawn","i",playerid);
    }
    case 2:
    {
    //HausSpawn
    }
    case 3:
    {
    //Letzter Standort
    }
    }
    //Hier gehts eig. weiter, hat aber nix mehr mit der Funktion zu tun.

    }


    forward OnFrakSpawn(playerid);
    public OnFrakSpawn(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    FPosX = cache_get_field_content_float(0,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(0,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(0,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(0,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(0,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(0,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }
    return 1;
    }

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