Es gibt btw auch einen MySQL-BBCode, damit werden die entsprechenden Keywords auch richtig gehighlighted.
Guter Einwand, habe es direkt verbessert.
Es gibt btw auch einen MySQL-BBCode, damit werden die entsprechenden Keywords auch richtig gehighlighted.
Guter Einwand, habe es direkt verbessert.
Jetzt könnte man noch daran appelieren, dass du jeweils das Semikolon vergessen hast bei den einzelnen Beispielen , welche auch seine ordnung hat und zwar signalisiert dies MySQL das das Query
fertig ist und nachfolgende Befehl werden nicht mehr ausgeführt.
Gute Anmerkung! Habe extra eine Passage zum Semikolon hinzugefügt und die Queries um je ein Semikolon erweitert.
Da mir in letzter Zeit oftmals aufgefallen ist, dass den meisten Mitgliedern hier im Forum dir richtige Schreibweise für MySQL Queries entweder nicht bekannt ist oder egal ist, möchte ich im Folgenden die richtige Schreibweise und ihre Gründe dafür aufzeigen. Diese Schreibweise gilt nicht nur für Pawno, sondern für jeden Anwendungszweck von MySQL, denn MySQL ist MySQL und ändert sich von Sprache zu Sprache nicht. Die falsche Schreibweise von MySQL Queries führt oftmals Probleme herbei und öffnet auch gelegentlich Sicherheitslücken für potentielle Angreifer. Daher ist bei der Schreibweise von MySQL Queries besonders Acht zu geben. In diesem Tutorial wird davon ausgegangen, dass MySQL bereits ein Begriff ist und der Verwendungszweck und die grundlegende Schreibweise von solchen Queries bekannt ist. Für Neueinsteiger in das Thema MySQL ist dieses Tutorial nicht geeignet und es wird empfohlen, dieses Thema nachzuschlagen, da es in der heutigen Welt der Programmierung ein großes Thema stellt, einen weites Anwendungsfeld hat und vor allem für ein Einstieg in das Thema Database Management System (DBMS) sehr gut geeignet ist. Schießen wir los ...
Inhaltsverzeichnis
Backticks
Backticks sind zwar umstritten, sind aber im Endeffekt eine Absicherung. Ein Backtick (`) wird verwendet, um von MySQL-Keywords zu unterscheiden. Es kann demnach sein, dass wenn man bekannte Keywords aus MySQL Queries als zum Beispiel Tabellennamen, Feldnamen usw. verwendet, dass es bei der Ausführung des Queries zu einem Syntaxfehler kommt. Kurzes Beispiel:
Es würde ein Syntaxfehler generiert werden, da 'show', 'alter' und evt. 'table' Keywords von MySQL sind und demnach falsch interpretiert werden würden. Abhilfe leisten Backticks, womit man den Tabellen- bzw. Feldnamen einschließt und eine Absicherung erhält. Ein richtiges Beispiel wäre:
String-Begrenzer
Zwar ist mir aufgefallen, dass viele bereits String-Begrenzer (') verwenden, jedoch meist falsch. String-Begrenzer begrenzen, wie der Name bereits sagt, Strings. Als oftmaliger Fehler ist mir aufgefallen, dass Leute Integer, Floats, ... mit String-Begrenzern verpacken. Strings werden mit String-Begrenzern eingeschlossen, um eine Zeichenkette als Element darzustellen. Dabei werden die Rahmenbedingungen für das erfolgreiche Einfügen von Strings in einen Query hergestellt. Dies hat nichts mit dem vorigen Escapen des Strings zur weiteren Vorbeugung gegen SQL Injections zu tun. Auf dieses Thema wird in diesem Tutorial nicht weiter eigegangen, es wird aber tunlichst empfohlen, dieses Thema zu bearbeiten um weitere Sicherheitslücken zu schließen. Ein Beispiel, welches zu einem Syntaxfehler führt:
Ein Beispiel, das String-Begrenzer falsch anwendet:
Ein Beispiel, das String-Begrenzer konsequent und richtig anwendet:
Semikolon
Zwar spielt das Semikolon am Ende eines Querys meist eine optionale Rolle, doch prägt es guten coding Stil. In den meisten Sprachen wie Pawno, PHP usw. ist das Semikolon optional, da der auszuführende Query bereits durch bspw. Hochkommata begrenzt ist. Trotzdem ist eine optionale Maßnahme oftmals hilfreich. Als weiteres Beispiel sind MySQL Queries anzusprechen, die auf DOS Ebene ausgeführt werden. Diese benötigen ein Semikolon explizit, dass das Ende des Querys erkannt und der Query selbst ausgeführt werden kann. Wieder ein Negativ- und Positivbeispiel:
Groß-/Kleinschreibung
Die Verwendung der richtigen Zeichen an richtigen Orten zum richtigen Zweck sei demnach geklärt. Treten wir über zur Formatierung des kompletten Queries. Hierbei fällt mir oftmals auf, dass die Groß- und Kleinschreibung oftmals nicht eingehalten wird und zu Problemen führen kann. Die Groß- und Kleinschreibung spielt bei Windows und Mac keine Rolle, jedoch bei UNIX Systemen. Es wird also empfohlen, 'case sensitivity' zu beachten und zu befolgen, denn vor allem hier bei SA:MP ist ein Distributionswechsel nach zum Beispiel Linux nicht undenkbar. Man beachte also schon von Beginn an die Groß- und Kleinschreibung der Queries, um späteren Problemen vorzubeugen. Weiterhin fördert die Groß- und Kleinschreibung die Leserlichkeit der Queries. Es ist anzumerken, dass bei Tabellen- und Feldnamen die Groß- und Kleinschreibung keine Rolle spielt, aber bei UNIX Systemen die Groß- und Kleinschreibung von Keywords und bei allen Distributionen die Groß- und Kleinschreibung bei Suchvorgängen (Ausnahmen bei bestimmten Tabelleneinstellungen). Ein Negativbeispiel mit anschließendem Positivbeispiel folgt:
Mehrzeilige Schreibweise
Die mehrzeilige Schreibweise von Queries ist vor allem bei langen Queries zur Förderung der Leserlichkeit zu empfehlen, jedoch macht es beim Syntax keinen Unterschied und ist daher lediglich empfohlen. Bei der mehrzeiligen Schreibweise in Pawno ist die Verwendung von Backslashes vorteilhaft, um das wiederholende Aufrufen einer Funktion zu verhindern. Ein Beispiel:
SELECT `field1`, `field2`, `field3`\
FROM `table`\
WHERE `field1` = 1 AND `field2` = 3\
LIMIT 20;
Fazit
Abschließend lässt sich also feststellen, dass eine ordentliche Schreibweise von Queries nicht nur die Leserlichkeit verbessert, sondern auch Syntaxfehlern und möglichen Sicherheitslücken vorbeugt. Es wird also empfohlen, auch für die spätere Weiterverwendung des Programmierten, die richtige Schreibweise von Queries anzuwenden und tunlichst zu befolgen. Anmerkungen und Anregungen zur Verbesserung des Tutorials sind willkommen, aber auch Feedbacks und Fragen über dieses Thema.
Oftmals wird vorgeschlagen, ein Backup von der Datenbank in C:/xampp/mysql/data zu machen und den Ordner anschließend zu löschen. Es sind aber auch andere Ursachen möglich, die nicht mit der Entfernung dieses Ordners gelöst werden.
Unter der Annahme, dass du einen eigenen Gamemode erstellst, müsstest du unter OnGameModeInit() einen Query zum Erstellen der Tabelle senden aka. 'CREATE TABLE IF NOT EXISTS'.
http://dev.mysql.com/doc/refman/5.1/de/create-table.html
Du kannst dir per phpMyAdmin einfach die Queries der Tabellen ausgeben lassen.
Ribbon.
Verändere doch lieber jene Stellen, an denen bereits SetPlayerWantedLevel() verwendet wird.
Die tausende Opfer des Taifuns kannten wir nicht. Natürlich ist das eine Katastrophe und wir denken daran. Paul Walker kannten wir aber als lustige, charmante und wohltätige Person. Menschen fühlen sich eben hingezogen zu Personen, die sie kennen.
Ich füge mal hinzu, dass ich das UCP nur verkaufe, wenn mich das Angebot interessiert. Angebote von 1€, 10€ etc. sind daher nicht interessant. Ich muss das UCP nicht verkaufen, ich habe lediglich das Interesse, damit etwas Geld für etwas anderes zu verdienen. Hinter dem Design und der anschließenden Umsetzung stehen mehrere Stunden Arbeit. Also bitte seriös im Sinne von Arbeitsstunden denken.
Da sich meine Community Stück für Stück auflöste, möchte ich nun mein User Control Panel verkaufen, welches ich begonnen hatte. Dabei verkaufe ich das Design (Photoshop Datei) sammt Code für das Design (Javascript + CSS). Es sind bereits ein paar Unterseiten enthalten, aber es sind auch Absprachen möglich. Damit will ich sagen, dass ich gerne für euch unter Bezahlung das User Control Panel weiterentwickel und fertigstelle.
Ein Link als Preview: http://ucp.insomnia-roleplay.com
Angebote bitte per PN an mich. Der Höchstbietende erhält den Quellcode + Design und das Angebot von mir, das User Control Panel gegen Bezahlung weiterzuentwickeln. Bisher möchte ich das User Control Panel als Gesamtpaket verkaufen, also nicht mehrere Versionen davon verkaufen.
______
Unverbindlicher Hinweis: Die Sicherheit einer Transaktion kann am besten durch die Einschaltung eines Mittelsmannes gewährleistet werden. Weitere Informationen dazu gibt es hier.
MD5 zu verwenden ist Quatsch - es ist veraltet, beinhaltet bekannte Collisions, für Rainbow Tables kein Problem und ist in vielen Datenbanken im Netz ausführlich aufgeführt.
Angebot steht weiterhin - habe nun wieder einen Win-PC und kann daher nun das Script vorführen. Derzeitiges Gebot: 300€.
Du machst 2 mal "new i". Das funktioniert so nicht. Du kannst nicht 2 mal die gleiche Variable erstellen.
Alte Browserversionen zu verwenden ist schlecht, da dann die Gefahr besteht, dass Webseiten nicht richtig angezeigt werden können.
Bisher sind 300€ geboten, ich werde weiterhin Leuten das Script zeigen.
Warum verwendest du playerid im Tore Array als ersten Index?
Beispiel:
Tore[playerid][TorID]
Wie diese Animation nun tatsächlich heißt, weiß ich nicht. Wissen tue ich aber, dass es keine SpecialAction ist. Du musst ApplyAnimation verwenden. Beginne hier (http://wiki.sa-mp.com/wiki/Animations) zu suchen.
Wenn du beim "pingen" eine Zeitüberschreitung als Rückgabe erhälst, dann kannst du den Server nicht erreichen. Dann hat dies etwas mit deinem Netzwerk, deinem PC oder dem Server und dessen Netzwerk zu tun, aber nichts mit SA:MP.
I.d.R. ist jeder Server in der Lage, ein Datenbankmanagementsystem laufen zu lassen. Warum sollte es da etwas spezielles geben? Was ist dein Ziel?
Hi
Reden wir auch über C++ basierende Plugins ? Habe momentan eben nicht die Zeit dazu und würde mich evt. mal bei dir melden.
Gruss Simon
C++ ist möglich, einfach Vorhaben per PN senden.
Update: Angebot weiterhin aktuell.