MYSQL ganze Tabellen kopieren/ersetzen

Hallo zusammen, ich wette es gibt eine einfache Lösung, aber meine mageren Kenntnisse reichen dazu einfach nicht aus.

Vorhanden ist:
Eine Art Terminplaner in MySQL Tabellen, jede Woche ist eine Tabelle. Interessant sind nur letzte, aktuelle und nächste. Es gibt eine weitere als Vorlage (blanko). Es wird nicht weiter vorausgeplant und älteres ist auch uninteressant.

Es soll:
Zu einem bestimmten Zeitpunkt (Nacht von Sonntag auf Montag) über ein php-script die Tabelle „letzte Woche“ weggeschmissen werden, die „Aktuelle“ wird auf die „Letzte“ kopiert und die „nächste“ wird die „aktuelle“ und eine „blankovorlage“ wird neue „nächste“.

Funktionieren tut bisher lediglich das Auslösen eines Scriptes zu dem Zeitpunkt wo es soll, sowie die Verbindung der Datenbank an sich. Mir fehlen aber die Kenntnisse über die korrekten Befehle nach der Art:
Lösche Tabelle „letzte“
kopiere Tabelle „aktuelle“ nach „letzte“
lösche Tabelle „aktuelle“
kopiere Tabelle „nächste“ nach „aktuelle“
lösche Tabelle „nächste“
kopiere Tabelle „Vorlage“ nach „nächste“

Glaub löschen wäre mit drop_table, aber wie kriege ich ganze Tabellen kopiert? Im Optimalfall wäre die Antwort gleich ein php-code.

Wäre echt klasse, wenn da jemand eine unkomplizierte Lösung für mich weiß.

Hallo Tronde,

keine Loesung, nur ein Kommentar:

Das was du vor hast ist eine _verdammt haessliche_ Loesung!

Hier ein Vorschlag fuer eine bessere Loesung:

Eine Tabelle fuer alle Wochen, darin gibt es eine Spalte fuer’s Jahr und eine Spalte fuer die Zahl der aktuellen Woche des Jahres.

Wenn du selektierst benutzt du einfach diese 2 Angaben, beim Einfuegen musst du dies natuerlich korrekt setzen, was aber auch kein Problem sein sollte.

Alternativ kann man zur Wochendarstellung auch ein einzelnes Datumsfeld verwenden, welches ausgewertet wird.

Gruesse
Stefan

Hallo Stefan,

wäre sicherlich eine Lösung, jedoch war die Planung ursprünglich nur für die aktuelle Woche, wurde dann um letzte und nächste Woche erweitert mittels Kopie der einen Woche in separate Tabellen. Mehr als das muß wirklich nicht geplant werden, also nicht fürs ganze Jahr oder so.

Hintergrund: Es ist die Sendeplanung eines kleinen Webradios, also welcher Moderator wann sendet. Dazu gehören weitere Tabellen mit Infos zu den Moderatoren, also nicht wundern, in den Termintabellen stehen nur IDs (Zahlen).

Aber gute Nachricht, hab mich durch Bücher gewühlt, die installationsroutine von dem ursprünglichen Plan zerpflückt und gebastelt bis ichs hinbekommen habe.

Für den Fall, daß jemand das gleiche Problem hat hier einmal den Code:

$dbconnect = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if ($dbconnect)
echo 'DB-Verbindung ok
';
else
echo 'DB-Verbindungsfehler: ’ . mysql_errno() . ": " . mysql_error() . ’
';

if (mysql_select_db($mysql_base, $dbconnect))
echo 'DB-Auswahl ok
';
else
echo 'DB-Auswahlfehler: ’ . mysql_errno() . ": " . mysql_error() . ’
';

$sql = ‚DROP TABLE IF EXISTS Tabellenname_letzte_Woche‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';
$sql = ‚CREATE TABLE Tabellenname_letzte_Woche (stunde int(11) NOT NULL,tag int(11) NOT NULL,moderator int(11) NOT NULL,sendung int(11) NOT NULL) TYPE=MyISAM;‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';
$sql = ‚INSERT INTO Tabellenname_letzte_Woche SELECT * FROM Tabellenname_aktuelle_Woche‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';

$sql = ‚DROP TABLE IF EXISTS Tabellenname_aktuelle_Woche‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';
$sql = ‚CREATE TABLE Tabellenname_aktuelle_Woche (stunde int(11) NOT NULL,tag int(11) NOT NULL,moderator int(11) NOT NULL,sendung int(11) NOT NULL) TYPE=MyISAM;‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';
$sql = ‚INSERT INTO Tabellenname_aktuelle_Woche SELECT * FROM Tabellenname_nächste_Woche‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';

$sql = ‚DROP TABLE IF EXISTS Tabellenname_nächste_Woche‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';
$sql = ‚CREATE TABLE Tabellenname_nächste_Woche (stunde int(11) NOT NULL,tag int(11) NOT NULL,moderator int(11) NOT NULL,sendung int(11) NOT NULL) TYPE=MyISAM;‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';
$sql = ‚INSERT INTO Tabellenname_nächste_Woche SELECT * FROM Tabellenname_Kopiervorlage‘;
echo $sql . ’
';
if (mysql_query($sql, $dbconnect))
echo 'OK!
';
else
echo 'Fehler ’ . mysql_errno() . ": " . mysql_error() . ’
';