Wert mit Eingabe vergleichen

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


    da ich nicht der MySQL-Freak bin und dort alle Kenntnisse besitze habe ich die Frage, wie ich vergleichen kann ob es das Kennzeichen schon gibt?


    if(sscanf(params,"ss",text,newtext))return SendClientMessage(playerid,lila,"Benutze: /changekz [Kennscheichen] [Neues Kennzeichen]");
    new query[128],
    response[256];
    format(query, sizeof query, "SELECT `*` FROM `Cars` WHERE `Nummernschild` = %s;",newtext);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(query);
    mysql_fetch_field_row(response, newtext);
    mysql_free_result();
    if(newtext[40] == response)return SendClientMessage(playerid,rot,"Dieses Kennzeichen gibt es schon!");

    Back to the roots!

  • Du hast mehrere Möglichkeiten. Entweder lässt du dir die Reihen von MySQL zählen oder, sofern das MySQL-Plugin diese Funktionen biete, nutzt du num_rows zum zählen.


    1. Möglichkeit:

    SQL
    SELECT COUNT(*) FROM `Cars` WHERE `Nummernschild` = '%s'


    Code von oben übernehmen, dann einfach überprüfen ob result != 0 ist.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Habe es gerade so:
    Aber das klappt nciht so ganz, wo ist der Fehler?


    ocmd:changekz(playerid,params[])
    {
    new text[40],newtext[40];
    if(SqlGetInt(playerid,"Fraktion") != 4)return SendClientMessage(playerid,rot,"Du bist kein Verkehrsbeamter!");
    if(!IsPlayerInRangeOfPoint(playerid,5,-2064.8799,1432.8325,7.1007))return SendClientMessage(playerid,rot,"Du bist nicht in der Nähe vom /changekz-Point!");
    {
    if(sscanf(params,"ss",text,newtext))return SendClientMessage(playerid,lila,"Benutze: /changekz [Kennscheichen] [Neues Kennzeichen]");
    new query[128],
    response;
    format(query, sizeof query, "SELECT COUNT(*) FROM `Cars` WHERE `Nummernschild` = '%s'",newtext);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(query);
    mysql_free_result();
    if(response > 1)return SendClientMessage(playerid,rot,"Dieses Kennzeichen gibt es schon!");
    for(new l = 0; l < 2; l++)
    {
    new pID = GetNearestPlayer(playerid,3.0);
    new vehicleid = GetNearestCar(playerid,3.0);
    if(vehicleid == Spielercar[pID][l])
    {
    mysql_SetStringCar("Nummernschild",newtext,pID,l);
    SetVehicleNumberPlate(vehicleid,newtext);
    }
    }
    }
    return 1;
    }

    Back to the roots!

  • Das geht jetzt in den PAWN-Bereich, da bin ich völlig raus. Aber erstmal solltest du dein MySQL-Statement so ändern:


    SQL
    SELECT COUNT(*) AS count FROM `Cars` WHERE `Nummernschild` = '%s'


    Nun brauchst du das Feld count, wie genau du das in PAWN hinbekommst weiß ich leider nicht.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Du brauchst "COUNT(*)" nicht im Query.


    SQL
    SELECT * FROM `Cars` WHERE `Nummernschild` = '%s'


    Wenn du das als Query ausführst, kannst du das Ergebnis in PAWN speichern ( mysql_store_result ) und dann die Anzahl an Zeilen ausgeben lassen,die das Ergebnis hat ( mysql_num_rows ).
    Gibt es 0 Ergebnisse ( num_rows ) , dann ist das Nummerschild noch nicht vergeben. Gibt es 1 Ergebnis ( oder mehr,wäre aber Unlogisch ) , dann ist das Kennzeichen bereits vergeben.
    Nicht vergessen das Ergebnis wieder freizugeben ( mysql_free_result ).



    [hide]Mit dem Query von dead müsstest du zusätzlich mysql_fetch_field ( In dem Fall wäre das Feld "count" , da "AS count" in Query bzw 0 ) verwenden und das Ergebnis noch in einen Zahl umwandeln.Dann wüsstest du erst ob es bereits vergeben ist oder nicht.[/hide]

    Einmal editiert, zuletzt von Goldkiller ()