MySQL hilfe. ( Biz-System )

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
  • Abend,


    Ich bin dabei ein Business System zu Scripten und ein Autohaus System.
    Allerdings muss ich dazu wissen wie ich die Aktuellen Bizes in der MySQL Datenbank zähle ( BizzID ).
    Ich habe es bisher noch nicht geschafft.
    Auch nicht mit dem Turoial von Maddin.


    Ich hoffe sehr ihr könnt mir helfen!


    LG


    Dev

    2 Mal editiert, zuletzt von Dev ()

  • Ich bin gerade am iPhone online, daher werde ich es erst morgen ausprobieren können. Aber vielen dank schon einmal für die Antwort. Ich hoffe es klappt :)


    Edit:


    Irgendwie klappt es jetzt garnicht mehr, also es wird nicht erstellt..


    new result = mysql_query("SELECT * FROM business");
    new bizid = mysql_num_rows(result);
    bizid++;
    CreateBusiness(bizid);


    stock CreateBusiness(businessid)
    {
    new query[256];
    format(query, sizeof(query), "INSERT INTO business (BizzID) VALUES ('%d')", businessid);
    mysql_query(query);
    return 1;
    }

    Einmal editiert, zuletzt von Dev ()

  • der parameter von mysql_num_rows ist die handle id der connection, nicht wie z.b bei php die der query^^
    mysql_query("SELECT * FROM business");
    new bizid = mysql_num_rows();
    printf("ID: %d", bizid);
    bizid++;
    CreateBusiness(bizid);
    Probier das mal, und schau welche ID ausgegeben wird.

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

  • Die ID -1 wird ausgeben..


    Aber erstellt wird irgendwie in der Datenbank auch noch nichts. Vorher hat es mit dem erstellen geklappt. Allerdings dan immer mit der BizzID 1 xD


    Also es klappt leider immernoch nicht..
    Wenn ich nur wüsste worans liegt X(

  • Code
    [18:36:24] CMySQLHandler::Query(SELECT * FROM business) - Successfully executed.
    
    
    [18:36:24] >> mysql_num_rows( Connection handle: 1 )
    
    
    [18:36:24] CMySQLHandler::NumRows() - You cannot call this function now. (Reason: Dead Connection)
    
    
    [18:36:24] >> mysql_query( Connection handle: 1 )


    Das müsste es sein..

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


    Musste bei Maddins weg nur noch
    mysql_store_result();
    zwischenpacken und jetzt klappt es.
    Danke.


    So nun habe ich ein anderes Problem


    Edit²:
    Edit³: Bild eingefügt:



    Immer wenn ich ein neues Biz erstelle, werden die Variablen in die Tabellenreihe der BizzID 0 gepackt und nicht in die richtige Spalten.


    dcmd_createbusiness(playerid, params[])
    {
    #pragma unused params
    if(PlayerInfo[playerid][pAdmin] >= 2000)
    {
    mysql_query("SELECT * FROM business");
    mysql_store_result();
    bizid = mysql_num_rows();
    ShowPlayerDialog(playerid, DIALOG_CREATEBIZ, DIALOG_STYLE_INPUT,"Erstellen eines Geschäftes.","Bitte gib den Namen ein, den das Geschäft tragen soll.","Weiter","Abbrechen");
    return 1;
    }
    return 1;
    }


    case DIALOG_CREATEBIZ:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_CREATEBIZ, DIALOG_STYLE_INPUT,"Erstellen eines Geschäftes.","Bitte gib den Namen ein, den das Geschäft tragen soll.","Weiter","Abbrechen");
    return 1;
    }
    else
    {
    new Float:X, Float:Y, Float:Z;
    CreateBizz(bizid, inputtext);
    printf("ID: %d", bizid);
    GetPlayerPos(playerid, X,Y,Z);
    BizzInfo[bizid][BizzID] = bizid;
    BizzInfo[bizid][Name] = strlen(inputtext);
    BizzInfo[bizid][Einnahmen] = 0;
    BizzInfo[bizid][Owned] = 0;
    BizzInfo[bizid][Owner] = strlen("Niemand");
    BizzInfo[bizid][XKoord] = X;
    BizzInfo[bizid][YKoord] = Y;
    BizzInfo[bizid][ZKoord] = Z;
    new lolz[256];
    format(lolz, sizeof(lolz),"bizid: %d, BizzID: %d", bizid, BizzInfo[bizid][BizzID]);
    SendClientMessage(playerid, COLOR_BLUE, lolz);
    mysql_SetString("business","Owner",BizzInfo[bizid][Owner],"BizzID",BizzInfo[bizid][BizzID]);
    mysql_SetInt("business","Einnahmen",BizzInfo[bizid][Einnahmen],"BizzID",BizzInfo[bizid][BizzID]);
    mysql_SetInt("business","Owned",BizzInfo[bizid][Owned],"BizzID",BizzInfo[bizid][BizzID]);
    mysql_SetFloat("business","XKoord",BizzInfo[bizid][XKoord],"BizzID",BizzInfo[bizid][BizzID]);
    mysql_SetFloat("business","YKoord",BizzInfo[bizid][YKoord],"BizzID",BizzInfo[bizid][BizzID]);
    mysql_SetFloat("business","ZKoord",BizzInfo[bizid][ZKoord],"BizzID",BizzInfo[bizid][BizzID]);
    ShowPlayerDialog(playerid, DIALOG_CREATEBIZ2, DIALOG_STYLE_INPUT,"Erstellen eines Geschäftes.","Gib nun die Menge an Prdoukten an.","Weiter","Abbrechen");
    return 1;
    }
    }
    else
    {
    // Delete
    }
    }



    stock CreateBizz(buid,buname[])
    {
    new query[256];
    mysql_real_escape_string(buname, buname);
    format(query, sizeof(query), "INSERT INTO business (BizzID,Name) VALUES ('%d','%s')", buid,buname);
    mysql_query(query);
    return true;
    }


    Vielleicht seht ihr ja den Fehler :O

    2 Mal editiert, zuletzt von Dev ()

  • printf("ID: %d", bizid);
    gibt das denn die richtige bizid aus?
    du holst dir ja bei createbusiness die bizid per num_rows, aber gibst die bizid dann nicht weiter an den dialog. Versuch mal die bizid erst im dialog raus zu bekommen.


    Auuserdem:
    BizzInfo[bizid][Name] = strlen(inputtext);
    strlen gibt die länge des strings zurück. Du speicherst also eine Zahl im namen.
    z.b
    Der Spieler gibt "Maddin" ein.
    inputtext = "Maddin"
    strlen("Maddin") = 6 (weil Maddin 6 bustaben sind)
    BizzInfo[bizid][Name] ist in dem falle dann 6, und nicht Maddin (was du warscheinlich wolltest).

    benutz statdessen lieber
    strmid(BizzInfo[bizid][Name], inputtext, 0, sizeof(BizzInfo[bizid][Name]));
    oder format oder sowas.

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

  • Genau das ist das Problem.
    Ich habe mir eine kleine Funktion eingebaut das bei jedem neuen GUI von Createbiz angezeigt der Wert von bizid und BizzInfo[bizid][BizzID] angezeigt wird..
    und dieser wert stimmt jedes mal.
    die funktion gibt auch immer den richtigen wert in der konsole aus.



    Edit: ( PAstebin hinzugefügt )


    aber hier mal der mysql debug log.. irgendwas stimmt da glaub ich auch nicht!


    http://pastebin.com/vQDw2hGc


    Edit3: Das PRoblem Besteht weiterhin!


    Wenn es hilft könntet ihr mir auch über teamviewer oder so helfen...
    ich will nur dieses doofe system zum laufen bringen, den wenn ich das hab kann ich das autohaussystem und häusersystem fertigstellen..


    Könnte es eventuell an Navicat liegen, das ich dort irgendetwas einstellen muss?

    3 Mal editiert, zuletzt von Dev ()