[gelöst]jts3servermod_servergroupprotection

Started by Septron, July 11, 2015, 12:45:47 PM

Previous topic - Next topic

Septron

Hallo zusammen,

ich verwende derzeit ein UID Profilfeld auf meiner Hauptseite das dort Mitglieder diese eintragen können sehen können es nur
die zuständigen Admins (natürlich nicht öffentlich für mitglieder) nun möchte ich aber von DB Profilfeld A den eintrag zu zur jts3servermod_servergroupprotection mit eintragen lassen und deren Table (DB B variante) und bin dort doch grad an meine grenzen gestoßen
natürlich weiss ich das ich DB B abfragen und kommunizieren lassen muss so schaut die Profilfeld eingabe und abfrage aus:

if (!defined("IN_FUSION")) { die("Access Denied"); }

if ($profile_method == "input") {

// Create the input field for registration and edit profile
echo "<tr>\n";
echo "<td class='tbl'>".$locale['uf_ts3register']."</td>\n";
echo "<td class='tbl'><input type='text' name='user_ts3register' value='".(isset($user_data['user_ts3register']) ? $user_data['user_ts3register'] : "")."' maxlength='250' class='textbox' placeholder='deiKAkJedikOhEpPN1/bdtYBrM4=' style='width:200px;' /></td>\n";
echo "</tr>\n";
} elseif ($profile_method == "display") {

// Create the display for the user profile
if ($user_data['user_ts3register']) {
echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_ts3register']."</td>\n";
echo "<td align='right' class='tbl1'>".$locale['uf_ts3register001']."</td>\n";
} else {
echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_ts3register']."</td>\n";
echo "<td align='right' class='tbl1'>".$locale['uf_ts3register002']."</td>\n";
}

// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
// Get input data
if (isset($_POST['user_ts3register']) && ($_POST['user_ts3register'] != "" || $this->_isNotRequired("user_ts3register"))) {
// Set update or insert user data
$this->_setDBValue("user_ts3register", stripinput($_POST['user_ts3register']));
} else {
$this->_setError("user_ts3register", $locale['uf_ts3register_error2']);
}
} else {
$this->_setError("user_ts3register", $locale['uf_ts3register_error'], true);
}


dies ist die eingabe und zugleich die afrage/darstellung der UID
".(isset($user_data['user_ts3register']) ? $user_data['user_ts3register'] : "")."

zu meiner verständlichen frage
$data['user_ts3register']

soll nun für die Table eingetragen werden für Datenbank B
welche ServergruppenID es sein soll weiss ich schon doch finde ich den wald vor lauten abfragen in der include/functions/servergroupprotection.php nicht das ich die fehlenden abfragen so wie eintragserstellungen nicht ich hoffe das man mir da weiter helfen kann.

Wofür dies gut sein soll kann ich kurz erklähren: Da einige meinen TS Server nutzen Spieler Freunde von Ihnen etc. will ich die die Support brauchen für ein Spezifisches CMS können sie bevor sie den Teamspeak betreten oder schon drauf waren auf meiner Hauptseite in Ihrem Profilfeld ihre UID eintragen so das sie einer Gruppe direkt zugeteilt werden.

Profil edit:


nicht eingetragen:


eingetragen:


lg Septron

Stefan1200

Die MySQL Tabelle jts3servermod_servergroupprotection ist für dich interessant.
Die Spalte id ist einfach nur ein Auto Increment, das brauchst du nicht füllen.
Die Spalte instance_id ist die ID vom Bot aus der Tabelle jts3servermod_instances (Spalte id). Wenn du das immer für den selben Bot füllen willst, kannst du das hart coden, ändert sich nicht.
Die Spalte prefix ist der Prefix von der entsprechenden ServerGroupProtection Funktion. Wenn du das immer für die selbe Funktion vom selben Bot füllen willst, kannst du das hart coden, sollte sich nicht ändern, außer man verwendet die Umbenennen Funktion.
Die Spalte servergroup_id ist die ID von der Server Gruppe auf dem TS3 Server. Wird dir im TS3 Client bei den Server Gruppen Namen im Rechte Fenster angezeigt.
Die Spalte client_unique_id ist die Eindeutige ID vom Client (die mit den Zahlen und Buchstaben).
Die Spalte comment ist Freitext und kannst du mit dem Nicknamen zur Wiedererkennung füllen.

Septron

#2
hättest du evtl. einen beispiel code wie ich es in die profildatei mit einfügen kann im moment bin ich planlos

edit: im moment habe ich es so doch irgendwie fehlt noch was:

require_once BASEDIR."ts3framework/ts3profielfieldconfig.php";
$mysql = mysql_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3) or die(mysql_error());
mysql_select_db('test', $mysql) or die(mysql_error());

$instance_id = '1';
$prefix = 'servergroupprotectio';
$servergroup_id = '162';
$uid = $data['user_ts3register'];
$comment = $userdata['user_name'];

$eintrag = "INSERT INTO jts3servermod_servergroupprotection
(instance_id, prefix, servergroup_id, uid, comment)
VALUES
('$instance_id', '$prefix', '$servergroup_id', '$uid', '$comment')";

$eintragen = mysql_query($eintrag);


okay das führt zu einer weissen seite

nun teste ich dieses

$this->link = mysqli_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3);

function saveSpecialFunctionConfig($botid, $prefix, $servergroup_id, $uid, $comment)
{
$resGroupProtList = $class_db->db_query("SELECT id FROM jts3servermod_servergroupprotection WHERE instance_id = ".$botid." AND prefix = '".$class_db->getRealEscapeString($prefix)."'");
while($row = mysqli_fetch_row($resGroupProtList))
{
if (isset($_POST[$servergroup_id]) && isset($_POST[$uid]))
{
if ($_POST[$uid] == "")
{
$class_db->db_query("DELETE FROM jts3servermod_servergroupprotection WHERE id = ".$row[0]);
}
else
{
$class_db->db_query("UPDATE jts3servermod_servergroupprotection SET servergroup_id = '".$class_db->getRealEscapeString($_POST[$servergroup_id])."', client_unique_id = '".$class_db->getRealEscapeString($uid)."', comment = '".$class_db->getRealEscapeString($_POST[$comment])."' WHERE id = ".$row[0]);
}
}
}
}


aber dies bringt mich auch nicht weiter irgendie stehe ich vor einer zu grossen mauer um sie zu überwinden

Stefan1200

#3
Du weißt wie du Datenbank Abfragen & Co in PHP programmierst?

Edit: Jetzt dein Update gesehen, schaue es mir gerade an.

Edit 2: Auf keinen Fall in die servergroupprotection.php vom Web Interface einbauen. Ich dachte du sprichst von deiner eigenen Webseite!
Ansonsten sieht dein oberer Codeabschnitt nicht schlecht aus, aktiviere doch mal den Debug Modus von PHP und finde mal heraus was er nicht mag.

Septron

#4
Nein nein keine Sorge es ist nur der ausschnitt der datei ;)

ja werde ich mir später anschauen ;)

//EDIT: Habe es nun teilweise hinbekommen doch stört mich da was die wichtigsten einträge sind leer irgendwie wird das lesen der haupt DB nicht angenommen entweder liegt es am IF oder mein Ansatz ist komplett falsch

include BASEDIR."ts3framework/ts3profielfieldconfig.php";
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
//$link = mysqli_connect($db_host_ts3, $db_user_ts3, $db_pass_ts3, $db_name_ts3);
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Attempt insert query execution
$sql = "INSERT INTO jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, client_unique_id, comment) VALUES (1, 'servergroupprotectio', '162', '".$data['user_ts3register']."', '".$data['user_name']."')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);


so schaut der eintrag dann aus :(

Link zum Screen strukturdb2_03 (da es den Post etwas sprengt)

mein problem nun 2 leere felder sprich
$data['user_ts3register']
und
$data['user_name']
wird in db zwei nicht eingetragen und jeder der sein profil aufruft oder die edit aufruft macht es einen eintrag ich denke das es an diesem liegt:
$sql = "INSERT INTO jts3servermod_servergroupprotection (instance_id, prefix, servergroup_id, client_unique_id, comment) VALUES (1, 'servergroupprotectio', '162', '".$data['user_ts3register']."', '".$data['user_name']."')";

doch das soll es ja eben nicht es soll erst abgeschickt werden wenn auf Profil bearbeiten geklickt wird so langsam bin ich ratlos

das einzigste was mir noch einfallen würde wäre das standalone script in die DB der hauptseite mit einzufügen und es dann so irgendwie zu verknüpfen denke dann ändert sich im input der name und value wenn ich mich nicht irre

lg Septron

Septron

Hallo,

ich habe es nun anders gelöst als input formular und des erfolgreich ;)

lg Septron

Stefan1200