Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

11

Samstag, 3. März 2012, 18:27

Überprüf die Schreibweise der Tabelle. Die Tabelle muss comments heißen -- weder coments, noch comment.
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."

12

Samstag, 3. März 2012, 19:32

Hi, ich poste mal schnell meine Admin Comment funktion, damit diese funktioniert muss lediglich bei der tabelle accounts ( Das Feld comment) hinzugefügt werden.


Dieser Code kann so 1 zu 1 übernommen werden und gehört in die CommandParser.java

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
} else if(cmd.startsWith("comment")) {
        	// Start der Funktion
        	System.out.println(" CMD");
        	if(client.isAdministrator()) {
            	// WQir splitten nun nach ":"
            	String[] parameter  = arg.split(":");
            	System.out.println("COUNT " + parameter.length);
            	if(parameter.length != 2) {
                	client.sendButlerMessage(channel.getName(), "Bitte die Funktion folgendermaßen benutzen: /comment [Nick]:[Text]");
            	} else {
                	String nickname 	= parameter[0];
                	String comment  	= parameter[1];

                	// Schritt 1: Nickname überprüfen:
                	PoolConnection pcon 	= ConnectionPool.getConnection();
                	PreparedStatement ps	= null;
                	String temp_nick    	= null;

                	try {
                    	Connection con  = pcon.connect();
                    	Statement stmt  = con.createStatement();
                    	ResultSet rs	= stmt.executeQuery("SELECT `name` FROM `accounts` WHERE `name`='" + nickname +  "' LIMIT 1");

                    	while(rs.next()) {
                        	temp_nick = rs.getString("name");
                        	break;
                    	}
                	} catch(SQLException e) {
                    	if(ps != null) {
                        	try {
                            	ps.close();
                        	} catch (SQLException ex) {
                            	/* Do Nothing */
                        	}
                    	}

                    	pcon.close();
                	}
                	
               	
                	
                	if(temp_nick == null) {
                    	client.sendButlerMessage(channel.getName(), "Der angegebene Nickname existiert nicht.");
                	} else {
                    	// Schritt 2: Comment eintragen wenn Comment-text valide
                    	// Hier könnten noch weitere überprüfungen stattfinden(?)
                    	if(comment.length() <= 5) {
                        	client.sendButlerMessage(channel.getName(), "Bitte Kommentar eingeben (Mindestens 5 Zeichen)!");
                    	} else {
                        	SimpleDateFormat date_format = new SimpleDateFormat("dd.MM.yyyy  HH:mm:ss"); // Müsstest du ggf. noch anpassen
                        	String time              	= date_format.format(new Date());
                        	pcon        	= ConnectionPool.getConnection();
                        	ps          	= null;

                        	try {
                            	Connection con = pcon.connect();
                            	// Warum nutzen wir hier "temp_nickname" anstatt "nickname"?
                            	// Da "nickname" über der DB geprüft wird und die richtige schreibweise bei "temp_nickname"
                            	// ausgegeben wird... So kann ein Nickname auch im Command nur klein geschrieben werden
                            	// Mom muss mal nach CONCAT() suchen / googeln
                            	ps          	= con.prepareStatement("UPDATE `accounts` SET `comment`=CONCAT(?, `comment`) WHERE `name`=? LIMIT 1");
                            	ps.setString(1, "#_°>" + client.getName() + "|/w "<°_: " + comment + " (" + time + ").");
                            	ps.setString(2, temp_nick);
                            	ps.executeUpdate();
                            	//ps.executeQuery();
                            	client.sendButlerMessage(channel.getName(), "Dein Kommentar wurde erfolgreich bei °>"+ temp_nick + "|/w "<° eingetragen.");
                        	} catch(SQLException e2) {
                            	e2.printStackTrace();
                        	} finally {
                            	if(ps != null) {
                                	try {
                                    	ps.close();
                                	} catch(SQLException e3) {
                                    	/* Do Nothing */
                                	}
                            	}

                            	pcon.close();
                        	}
                        	
                   	
                    	}
                	}
            	}
        	} else {
            	// Wenn keine Adminrechte, dann info an den Nutzer
            	client.sendButlerMessage(channel.getName(), "Du hast nicht genügend Rechte um diesen Befehl zu benutzen.");
            	System.out.println("Comment ERROR: Access denied");
        	}
        	// ende 




Ich möchte mich auch zugleich bei Blizzard bedanken der mir letzte Nacht dabei größtenteils geholfen hat, diese Funktion zu erstellen., ebenso ein Danke für das Beispiel von Localhost.

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

CraZE

13

Samstag, 3. März 2012, 19:49

comment

danke klappt super aber bei mir im profil wird nun null angezeigt

14

Samstag, 3. März 2012, 19:52

Man sollte schon wissen, ob es sich hier um eine Tabelle namens "comment" handelt oder um einer Spalte namens "comment"!
Localhost hatte ein beispiel genannt, wo extra hierfür eine Tabelle namens "comment" angelegt werden muss. Mein Beispiel was ich gemacht hatte nutzt eine Spalte namens "comment" in der accounts-Tabelle (Was so gewollt war, ich hatte bereits gesagt gehabt, dass eine weitere Tabelle sinnvoller wäre)!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Blizzard« (19. Februar 2013, 12:29)


Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

15

Samstag, 3. März 2012, 20:30

Wenn ich den Code sehe, den CokaColaBoy postete, kann ich nur den Kopf schütteln. *facepalm-Smiley wünsch*


1. Bevor man sowas postet, hätte man wenigstens Kommentare wie '// Mom muss mal nach CONCAT() suchen / googeln' entfernen können.

2. Ich würde mehr return;'s benutzen statt immer 'nen else. Übersichtlichkeit ftw.
3. Wozu die umständliche Überprüfung ob der Nickname existiert? Schau dir meinen Code an.
4. Wieso die unnötigen Ausgaben in der Konsole?
5. In deinem Code könnten keine weiteren Doppelpunkte in der Message gemacht werden. Dann würde nämlich der Fehler erscheinen, dass man die Funktion nicht richtig anwendet obwohl man dies tut.

6. Beim Start werden Nickname, Passwort etc. im Server zwischengespeichert und wenn man sich ausloggt entsprechend geupdated. Wozu dann das Update der Datenbankverbindung? So hätteste dir auch die Mühe/Zeit beim Ergoogeln der concat Funktion erspart. ^^

"Wieso kompliziert wenn's auch einfach geht?" Zitat Ende.

So viel meinerseits,
Localhost
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."

16

Samstag, 3. März 2012, 21:07

Zitat

1. Bevor man sowas postet, hätte man wenigstens Kommentare wie '// Mom
muss mal nach CONCAT() suchen / googeln' entfernen können.


Hätte. Hat er aber nicht. Die Kommentare & ausgaben waren ja auch geeignet, ihm dass Verständniss dafür zu geben. Wegen CONCAT: und, musst du nicht mal nach irgendetwas googeln. Brauchte nur infos der Parameterangaben.. Wo liegt da nun das Problem?

Zitat

2. Ich würde mehr return;'s benutzen statt immer 'nen else. Übersichtlichkeit ftw.


Das bleibt ja wohl jedem selbst überlassen, wie man Anweisungen handhabt.. jeder hat halt seinen eigenen Programmier-Stil.

Zitat


3. Wozu die umständliche Überprüfung ob der Nickname existiert? Schau dir meinen Code an.


Joa, hab halt ne eigene DB-Abfrage gemacht, da ich mich noch nie wirklich mit dem Emulator beschäftigt habe - Dementsprechend sind mir auch nicht alle Methoden bekannt, sollte vielleicht mal DOKUMENTIERT werden ;)

Zitat

In deinem Code könnten keine weiteren Doppelpunkte in der Message
gemacht werden. Dann würde nämlich der Fehler erscheinen, dass man die
Funktion nicht richtig anwendet obwohl man dies tut.


Das ist auch nur eine Sache der weiterbehandlung der Argumente... Und? es ging jediglich darum um ihn das Verständniss zu geben, wie derartiges gemacht werden "könnte".

Zitat

6. Beim Start werden Nickname, Passwort etc. im Server
zwischengespeichert und wenn man sich ausloggt entsprechend geupdated.
Wozu dann das Update der Datenbankverbindung? So hätteste dir auch die
Mühe/Zeit beim Ergoogeln der concat Funktion erspart. ^^


Natürlich ists Performanter, des bei save/loadstats unterzubringen.. Hatte daran ned gedacht gehabt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Blizzard« (19. Februar 2013, 12:29)


17

Samstag, 3. März 2012, 21:30

Wieso muss denn alles schlecht gemacht werden?

Wo liegt hier das Problem???.... Es fragte jemand nach der moeglichkeit, beziehungsweise es waren beispiel erwünscht, diesen wurden nun geliefert, es obliegt doch jedem selbst, an welches beispiel er sich orientiert, ich finde Blizzard hat in der kurzen zeit mal eben schnell mit diesem Code eine sinnvolle funktion geschrieben, ob nun so oder so, wichtig ist doch dass die Funktion funktioniert oder nicht?

Und was es mit else und jenem auf dich hat, und? lass ihn doch, er macht es eben so du machst es eben anders, so ist es überall, jeder Programmiert auf seine weise und hat dabei seinen eigenen Style.

Wenn mich eins stört, dann ist es dass du immer so oberflächlich und überheblich rüberkommst und versuchst perfektion zu vollbringen, hier ist sicherlich fast niemand perfekt und jeder hat seine Stärken und Schwächen... ganz ehrlich localhost? Solche Aussagen wie gerade kannst du dir nun wirklich absolut sparen, die sind nicht nur absoluter offtopic, sondern auch absolut sinnlos und provokativ, ein solches Verhalten als Supporter, menschenskind!

Da fehlen einem echt die Worte!

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Ahmeet

18

Samstag, 3. März 2012, 21:32

Gut, er hat versucht in meinem Beispiel einige "Verbesserungsvorschläge" zu machen.. Finde ich auch in ordnung. Bloß man könnte es ja auch auf die freundlichere Art machen ;-)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Blizzard« (19. Februar 2013, 12:28)


Beiträge: 141

Beruf: Verkaufstellenverwalter

  • Private Nachricht senden

19

Donnerstag, 8. März 2012, 12:22

Comments

Hallo,
hab ne Frage habe eine Tabelle namens "comments" angelegt mit den Spalten name von und comment

die Funktion habe ich reingemacht
wenn ich die funktion falsch verwende denn sagt er mir auch das ich die Funktion folgender maßen benutzen soll: .......
benutze ich sie richtig steht das das comment wurde erfolgrei bei NICK eingetragen aber in der datenbank wird nichs eingetragen
habe ich da was falsch gemacht
was vergessen oder wieso wird nichs gespeichert?

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

20

Donnerstag, 8. März 2012, 13:18

Welchen Source Code genommen? Etwas verändert? Eventuell sogar selbst geschrieben? Fehlermeldungen?
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."