Teamspeak 3 - PHP Framework - Problem
|
Verfasser |
Nachricht |
|
Beiträge: 46
Bewertung: 6
Registriert seit: Nov 2010
Status:
offline
|
Teamspeak 3 - PHP Framework - Problem
#Neues Problem - 13.01.2017
Hallo, nachdem ich es endlich geschafft habe, was ich wollte, habe ich nun ein neues Problem, bei der Abfrage ob eine bestimmte Servergruppe vorhanden ist, komme ich nicht weiter.
Unzwar, ich mag nämlich, dass Abgefragt wird, ob Servergruppe "6" (zum Beispiel) bereits der User hat, wenn ja, dann soll er keinen Channel mehr erstellen können, wenn nicht, dann soll er einen erstellen können...
Dabei geht es um folgende Codezeile:
if(!$ts3->clientGetByUid($clientuid)->serverGroupGetById($server_channel_group))
Er zeigt mir die ganze Zeit an, dass ich bereits einen Channel habe, obwohl ich keine habe(Hab bereits eine else function gemacht, was er machen soll, wenn er keinen Channel erstellen kann)
(Ich nutze das Teamspeak 3 PHP Framework)
Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2017 13:13 von MysteryGaming.
|
|
09.01.2017 21:48 |
|
|
Beiträge: 1.520
Bewertung: 7
Registriert seit: Oct 2010
Status:
offline
|
RE: PHP / MySQLi - Problem
Wenn das die Zeile ist:
while($daten = mysqli_fetch_array($res, MYSQL_ASSOC))
dann versuche folgendes
while($daten = $res->fetch_array(MYSQLI_ASSOC))
siehe: [Link: Registrierung erforderlich]
liebe Grüße
Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2017 21:53 von skillz.
|
|
09.01.2017 21:53 |
|
|
Beiträge: 46
Bewertung: 6
Registriert seit: Nov 2010
Status:
offline
|
RE: PHP / MySQLi - Problem
Wenn das die Zeile ist:
while($daten = mysqli_fetch_array($res, MYSQL_ASSOC))
dann versuche folgendes
while($daten = $res->fetch_array(MYSQLI_ASSOC))
siehe: [Link: Registrierung erforderlich]
liebe Grüße
Hallo,
danke für Deine schnelle Antwort.
Leider wirft er mir nun folgende Fehlermeldung:
Fatal error: Uncaught Error: Call to a member function fetch_array() on boolean in *ZENSIERT* 42 Stack trace: #0 {main} thrown in *ZENSIERT* on line 42
Und nun bin ich irgendwie komplett mit meinem Alphabet am Ende.. Das ist bestimmt irgendein einfacher simpler Fehler...
@ccoding: Das wirft dann folgenden Warning wieder:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in *ZENSIERT* on line 42
Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2017 22:01 von MysteryGaming.
|
|
09.01.2017 21:59 |
|
|
Beiträge: 1.520
Bewertung: 7
Registriert seit: Oct 2010
Status:
offline
|
RE: PHP / MySQLi - Problem
Wenn das die Zeile ist:
while($daten = mysqli_fetch_array($res, MYSQL_ASSOC))
dann versuche folgendes
while($daten = $res->fetch_array(MYSQLI_ASSOC))
siehe: [Link: Registrierung erforderlich]
liebe Grüße
Hallo,
danke für Deine schnelle Antwort.
Leider wirft er mir nun folgende Fehlermeldung:
Fatal error: Uncaught Error: Call to a member function fetch_array() on boolean in *ZENSIERT* 42 Stack trace: #0 {main} thrown in *ZENSIERT* on line 42
Und nun bin ich irgendwie komplett mit meinem Alphabet am Ende.. Das ist bestimmt irgendein einfacher simpler Fehler...
Okay, sorry. Schon lange her als ich blankes php mit MYSQL(i) genutzt habe
while($daten = mysqli_fetch_array($res, MYSQL_ASSOC))
vielleicht reicht es wenn man MYSQL_ASSOC in MYSQLI_ASSOC abändert.
Würde zumindest von der Syntax Sinn machen.
Edit: soeben gesehen, doppelt
Der Error kommt wenn du das i dran hängst? O.O
Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2017 22:03 von skillz.
|
|
09.01.2017 22:02 |
|
|
Beiträge: 46
Bewertung: 6
Registriert seit: Nov 2010
Status:
offline
|
RE: PHP / MySQLi - Problem
Edit: soeben gesehen, doppelt
Der Error kommt wenn du das i dran hängst? O.O
Ich habe nun das I hinten dran gehängt und er zeigt mir nun:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in *ZENSIERT* on line 42
an.
|
|
09.01.2017 22:04 |
|
|
Beiträge: 1.306
Bewertung: 6
Registriert seit: May 2009
Status:
offline
|
RE: PHP / MySQLi - Problem
Dann hänge dort, wo du dein Query executest mal ein or die($stmt->error) hintendran, dann kriegst du eine andere Meldung.
Ein Boolean als Result kriegst du bei einem Query nämlich nur, wenn etwas schiefläuft. Entweder sind deine Logincredentials für Mysql falsch oder deine Syntax vom SQL-Query ist falsch. Letzteres könntest du mal posten, solltest du dahin nicht weiterkommen
|
|
09.01.2017 22:27 |
|
|
Beiträge: 46
Bewertung: 6
Registriert seit: Nov 2010
Status:
offline
|
RE: PHP / MySQLi - Problem
Dann hänge dort, wo du dein Query executest mal ein or die($stmt->error) hintendran, dann kriegst du eine andere Meldung.
Ein Boolean als Result kriegst du bei einem Query nämlich nur, wenn etwas schiefläuft. Entweder sind deine Logincredentials für Mysql falsch oder deine Syntax vom SQL-Query ist falsch. Letzteres könntest du mal posten, solltest du dahin nicht weiterkommen
Ich habe mal bisschen weiter versucht und konnte weitere Fehler beheben, nun zeigt er mir an, dass die Variable "daten" nicht definiert ist, dabei ist sie doch unter "while" definiert, oder wie genau ist das mit dem Definiert gemeint? (Bin ein absoluter Anfänger), bzw. ich wüsste nicht wie ich sie definieren sollte..
Hier das aktuelle Script:
<a href="createTsChannel.php">Neuen Channel anlegen</a>
<?php
require("ts3admin.class.php");
function checkChannel($cid,$channelList)
{
if(isset($channelList[$daten['cid']]['user']) && $channelList[$daten['cid']]['user']!=0) return true;
foreach($channelList as $key => $channel)
{
if(checkChannel($key,$channelList)) return true;
}
}
$link = mysqli_connect($server, $username, $passwort);
if (!$link) die(mysqli_error());
$db = mysqli_select_db($link, $datenbank);
if(!$db) die("keine Verbindung zur Datenbank");
$tsAdmin = new ts3admin($ts3_ip, $ts3_queryport);
$tsAdmin->connect();
$tsAdmin->login($ts3_user, $ts3_pass);
$tsAdmin->selectServer($ts3_port);
$result = $tsAdmin->channelList();
if(!$result['success'])
{
echo "Ein Fehler ist aufgetreten: ".$result['errors'][0];
}
else
{
foreach($result['data'] as $channel)
{
$channelList[$channel['cid']]['cname']=$channel['channel_name'];
$channelList[$channel['cid']]['user']=$channel['total_clients'];
$channelList[$channel['cid']]['cid']=$channel['cid'];
}
}
$sql_befehl = 'SELECT * FROM Teamspeak ORDER BY cid;';
$res= mysqli_query($link, $sql_befehl);
echo '<table border=1>';
echo '<tr><td>Name</td><td>Letzter User</td><td>wird gelöscht</td></tr>';
while($daten = mysqli_fetch_array($res, MYSQLI_ASSOC))
{
if(isset($channelList[$daten['cid']]['user']) && checkChannel($daten['cid'],$channelList))
{
$sql='UPDATE Teamspeak SET zeit=NOW() WHERE cid='.$daten['cid'].';';
mysqli_query($link, $sql);
$daten['zeit']=date('Y-m-d H:i:s');
}
else if(!isset($channelList[$daten['cid']]['user']))
{
$sql='DELETE FROM Teamspeak WHERE cid='.$daten['cid'].';';
mysqli_query($link, $sql);
}
if(strtotime($ttl,strtotime($daten['zeit']))>strtotime('-1second'))
{
if(strtotime($ttl,strtotime($daten['zeit']))<strtotime('+5days')) $loeschen=date('d.m.Y H:i',strtotime($ttl,strtotime($daten['zeit'])));
else $loeschen='-';
echo '<tr><td>'.$daten['cname'].'</td><td>'.date('d.m.Y H:i',strtotime($daten['zeit'])).'</td><td>'.$loeschen.'</td></tr>';
}
else
{
$tsAdmin->channelDelete($daten['cid']);
$sql='DELETE FROM Teamspeak WHERE cid='.$daten['cid'].';';
mysqli_query($link, $sql);
}
}
echo '</table>';
mysqli_close($link);
?>
#EDIT
Ich habe in einer Richtung denke den Fehler gefunden, das Problem liegt darin:
Wenn der Channel auf dem TS wirklich existiert, den man zuvor erstellt hat, dann wird er diesen Fehler, wenn dieser Channel aber nicht existiert, aber in der Datenbank als existierend eingetragen ist, dann zeigt er die Seite ohne Fehler oder Warnings an. Woran könnte dies liegen ?
#EDIT2
Meine MySQL-Tabelle:
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Erstellungszeit: 09. Jan 2017 um 23:12
-- Server-Version: 10.1.19-MariaDB
-- PHP-Version: 5.6.28
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Datenbank: `teamspeak`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `teamspeak`
--
CREATE TABLE `teamspeak` (
`cid` int(10) UNSIGNED NOT NULL,
`cname` char(128) NOT NULL,
`zeit` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2017 23:13 von MysteryGaming.
|
|
09.01.2017 22:51 |
|
|
- # PUSH # - 10.01.2017 - 22:03 Uhr - |
|
- # PUSH # - 13.01.2017 - 13:10 Uhr - |
|