MySQL- Email Eingabe, brauche kurz Hilfe ^^

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
  • Hallu ._.


    Ich will machen, das der Spieler seine email eingeben muss! Wie kann ich machen das die Email länger als 5 Zeichen ist, ein @ enthält und .de / .com / .net /. ?
    Habs versucht aber naja ^^


    case DG_EMAIL:
    {
    if(strlen(inputtext) < 5)
    {


    new string[130];
    format(string, sizeof(string), "Deine angegebene Email Adresse lautet: "COLB"%s",strval(inputtext));
    SendClientMessage(playerid, Weiß, string);
    SpielerInfo[playerid][pEmail] = strval(inputtext);
    mysql_SetInt("accounts", "Email", strval(inputtext), "Name", GetName(playerid));
    ShowPlayerDialog(playerid, DG_TUTORIAL, DG_MSGBOX,""ServerName" Tutorial","Hier steht der Tutorial Text 1","Weiter","Zurück");
    }
    else
    {
    ShowPlayerDialog(playerid, DG_EMAIL, DG_INPUT, ServerName,""COLR"Du musst deine richtige Email angeben!\nAnsonsten kannst du dich nicht registrieren!","Weiter","");
    }
    }


    Hoffe ihr könnt mir helfen :3

  • case DG_EMAIL:
    {
    if(strlen(inputtext) > 5 && strfind(inputtext,"@",true) !=-1)
    {
    if(strfind(inputtext,".de",true)!=-1||strfind(inputtext,".net",true)!=-1|| strfind(inputtext,".com",true)!=-1)
    {
    new string[80];
    format(SpielerInfo[playerid][pEmail],sizeof(SpielerInfo[playerid][pEmail]),inputtext);
    mysql_SetInt("accounts", "Email", SpielerInfo[playerid][pEmail], "Name", GetName(playerid));
    format(string, sizeof(string), "Deine angegebene Email Adresse lautet: "COLB"%s",SpielerInfo[playerid][pEmail]);
    SendClientMessage(playerid, Weiß, string);
    ShowPlayerDialog(playerid, DG_TUTORIAL, DG_MSGBOX,""ServerName" Tutorial","Hier steht der Tutorial Text 1","Weiter","Zurück");
    }
    }
    else
    {
    ShowPlayerDialog(playerid, DG_EMAIL, DG_INPUT, ServerName,""COLR"Du musst deine richtige Email angeben!\nAnsonsten kannst du dich nicht registrieren!","Weiter","");
    }
    }


    //edit: Bearbeitet.


    strval ist dafür da, um einen string in einen integer umzuwandeln...^^

  • :rolleyes:


    Danke erstmal ;)


    Eine Frage, wozu ist des?
    format(SpielerInfo[playerid][pEmail],sizeof(SpielerInfo[playerid][pEmail]),inputtext);
    In der Zeile sind 4 Errors...




    MfG

  • Schau dir diese zeile noch mal genauer an:


    format(SpielerInfo[playerid][pEmail],sizeof(SpielerInfo[playerid][pEmail]),inputtext); mysql_SetInt("accounts", "Email", SpielerInfo[playerid][pEmail], "Name",

    Gehen wir mal davon aus, dass er es richtig eingerückt hat.


    Zeig mal dein Enum von SpielerInfo.

  • Gehen wir mal davon aus, dass er es richtig eingerückt hat.


    Zeig mal dein Enum von SpielerInfo.


    :pinch: dort steht pEmail, da ist kein Fehler! Der Fehler liegt in dem Code, aber hier wenn es dir hilft, mir weiter zu helfen :rolleyes:


    //Spieler Enum
    enum SpielerDaten
    {
    pPasswort[128],
    pAdmin,
    pLevel,
    pRegistriert,
    pAdminlevel,
    pPremium,
    pKills,
    pTode,
    pSkin,
    pGeld,
    pEmail
    };

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • das sizeof(...) macht den fehler mit dem 2 Dimensionalem array. schreib statt sizeof(...) die maximale länge von pEmail manuell hin, also 50 in deinem Beispiel.


    Oder auch mit einem define
    #define MAX_EMAIL 50
    enum ... {
    ...
    pEmail[MAX_EMAIL],
    ...
    }

    und die format zeile

    format(SpielerInfo[playerid][pEmail],MAX_EMAIL,inputtext);

  • Ja, haben den Fehler anders behoben ^^, funktioniert auch, nur in der Datenbank wird anstatt der Email, -1 gespeichert, warum? o.o


    case DG_EMAIL:
    {
    if(strlen(inputtext) > 5 && strfind(inputtext,"@",true) !=-1)
    {
    if(strfind(inputtext,".de",true) !=-1||strfind(inputtext,".com",true) !=-1|| strfind(inputtext,".",true) !=-1)
    {
    new string[80],email[50];
    format(email,sizeof(email),inputtext);
    mysql_SetString("accounts", "Email", email, "Name", GetName(playerid));
    format(string, sizeof(string), "Deine angegebene Email Adresse lautet: "COLB"%s",email);
    SendClientMessage(playerid, Weiß, string);
    ShowPlayerDialog(playerid, DG_TUTORIAL, DG_MSGBOX,""ServerName" Tutorial","Hier steht der Tutorial Text 1","Weiter","Zurück");
    }
    else ShowPlayerDialog(playerid, DG_EMAIL, DG_INPUT, ServerName,""COLR"Du musst deine richtige Email angeben!\nAnsonsten kannst du dich nicht registrieren!","Weiter","");
    }
    else ShowPlayerDialog(playerid, DG_EMAIL, DG_INPUT, ServerName,""COLR"Du musst deine richtige Email angeben!\nAnsonsten kannst du dich nicht registrieren!","Weiter","");
    }

  • schau dir mein Beitrag an wie du den Fehler "richtig" behebst, in dem Beispiel da wird die e-mail nur kurz in "email" gespeichert und dann wieder verworfen wenn der code fertig abgelaufen ist



    Zum -1 in der Tabelle:
    Ist die Spalte auch eine Zeichenkette/string =?