Tabelle leeren sql befehl

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Dler
Mitglied
Beiträge: 183
Registriert: 28.10.2018 10:49

Tabelle leeren sql befehl

Beitrag von Dler »

Hi,

Ich würde gerne per ACP die möglichkeit haben daß ich eine Tabelle leeren kann.

Wie müsste bitte der befehl sein in meiner module.php Datei um die Tabelle phpbb_ra_gamestat_periods zu leeren?

Ich hatte es so getestet

Im acp template

Code: Alles auswählen

<dl>
				<dt><label for="ra_periods">{L_PERIODS}</label><br /><span>{L_PERIODS_EXPLAIN}</span></dt>
				<dd>
					<label><input type="radio" class="radio" name="ra_periods" value="1" /> {L_YES}</label>
					<label><input type="radio" class="radio" name="ra_periods" value="0" checked="checked" /> {L_NO}</label>
				</dd>
			</dl>
			
module.php

Code: Alles auswählen

if ($request->variable('ra_periods', 0) === 1)
				{
					$sql = 'TRUNCATE ' . RA_GAMESTAT_PERIODS_TABLE;
					$db->sql_query($sql);					
				}
				
Aber dann bekomme ich einen fehler das die Tabelle nicht existiert.

[ externes Bild ]
Benutzeravatar
Dref
Mitglied
Beiträge: 106
Registriert: 13.01.2022 15:36

Re: Tabelle leeren sql befehl

Beitrag von Dref »

Verwenden Sie diese SQL-Abfrage

Code: Alles auswählen

TRUNCATE TABLE `RA_GAMESTAT_PERIODS`
Sobald die Abfrage ausgeführt wird, enthält die Tabelle keine Datensätze mehr.
Bitte erstellen Sie eine Sicherungskopie der Tabelle, bevor Sie sie leeren.
Benutzeravatar
3Di
Mitglied
Beiträge: 106
Registriert: 12.03.2010 14:33
Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
Kontaktdaten:

Re: Tabelle leeren sql befehl

Beitrag von 3Di »

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . RA_GAMESTAT_PERIODS_TABLE);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . RA_GAMESTAT_PERIODS_TABLE);
		break;
	}
}
:ugeek: phpBB Studio 🎁 Spende - Ich bin für die Ukraine! 🇺🇦

Private Nachricht nur für bezahlte Arbeiten.
Dler
Mitglied
Beiträge: 183
Registriert: 28.10.2018 10:49

Re: Tabelle leeren sql befehl

Beitrag von Dler »

@3DI

Leider bekomme ich immer noch eine fehlermeldung.

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/ext/xxxxx/xxxx/acp/acp_module.php on line 842: Use of undefined constant RA_GAMESTAT_PERIODS_TABLE - assumed 'RA_GAMESTAT_PERIODS_TABLE' (this will throw an Error in a future version of PHP)

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table 'xxxxxx.RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

SQL

TRUNCATE TABLE RA_GAMESTAT_PERIODS_TABLE

[ externes Bild ]
Benutzeravatar
chris1278
Mitglied
Beiträge: 3536
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Tabelle leeren sql befehl

Beitrag von chris1278 »

Versuch das malö so:

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . ra_gamestat_periods_table);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . ra_gamestat_periods_table);
		break;
	}
}
oder so

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . _ra_gamestat_periods_table);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' .  _ra_gamestat_periods_table);
		break;
	}
}
eventuell iegt es daran das du den tabellen namen nur grossbichstaben hast. Auf dem bild ist der aber in kleinbuchstaben. Da ich aber nicht so viel ahnung von sql habe ist das auch nur ne vermutung.
Dler
Mitglied
Beiträge: 183
Registriert: 28.10.2018 10:49

Re: Tabelle leeren sql befehl

Beitrag von Dler »

Nein leider keine änderung chris.
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: Tabelle leeren sql befehl

Beitrag von Mahony »

Hallo
Ich würde es ja mal so versuchen

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . RA_GAMESTAT_PERIODS);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . RA_GAMESTAT_PERIODS);
		break;
	}
}

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3536
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Tabelle leeren sql befehl

Beitrag von chris1278 »

Ok das problem ist wahrscheinlich das der tabellenbn präfix nicht geladen wird.

Daher findet der die tabelle nicht.

Also wenn ich von dem Standard ausgehe das der phpbb ist dann versuch den code mal so zu gestallten:

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . PHPBB_RA_GAMESTAT_PERIODS_TABLE);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . PHPBB_RA_GAMESTAT_PERIODS_TABLE);
		break;
	}
}
Ansonsten ersetze phpbb durch den präfix den du in deinem forum nutzt.

@mahony

bei seiner fehlermeldung hier:
Dler hat geschrieben: 17.03.2022 18:38

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table 'xxxxxx.RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

SQL

TRUNCATE TABLE RA_GAMESTAT_PERIODS_TABLE

müsste eigentlich dass hier stehen:

Table 'xxxxxx.phpbb_RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

Daher vermute ich das der die tabelle wegen des präfixes schon nicht findet. Da dieser anscheinend nicht mit integriert wird.
Dler
Mitglied
Beiträge: 183
Registriert: 28.10.2018 10:49

Re: Tabelle leeren sql befehl

Beitrag von Dler »

Nein geht auch beides leider nicht.

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table 'xxxxxx.PHPBB_RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

SQL

TRUNCATE TABLE PHPBB_RA_GAMESTAT_PERIODS_TABLE

BACKTRACE
Benutzeravatar
chris1278
Mitglied
Beiträge: 3536
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Tabelle leeren sql befehl

Beitrag von chris1278 »

Was steht den in deiner config.php drin als präfix:

so sieht die eigentlich original aus

Code: Alles auswählen

<?php
// phpBB 3.3.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'phpbb\\db\\driver\\mysqli';
$dbhost = '';
$dbport = '';
$dbname = 'test';
$dbuser = 'root';
$dbpasswd = '';
$table_prefix = 'phpbb_';
$phpbb_adm_relative_path = 'adm/';
$acm_type = 'phpbb\\cache\\driver\\file';

@define('PHPBB_INSTALLED', true);
@define('PHPBB_ENVIRONMENT', 'production');
// @define('DEBUG_CONTAINER', true);

und unter

$table_prefix =

das was dort angegeben ist musst du auch benutzen. das phpbb von mir war nur der standard. wenn du einen anderen nutzt musst du dies natürlich anpassen.
Antworten

Zurück zu „Extension Bastelstube“