• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

PHP - Script welches für jeden Tag eine neue Tabelle anlegt

byron1778

Hacker
Hallo Forum,

ich möchte mir mittels einem PHP - Script für einen jeden Tag eine Tabelle anlegen (Schaltjahre und 31 - 30 - 31 Tage werden nicht berücksichtigt)

Folgendes konnte ich produzieren:

Code:
#!/usr/bin/php

<?php

$user = "root";
$pass = "";
$db = "testdb";

$link = @mysql_connect("localhost", $user, $pass);

if( ! $link) {
die ("Cannot connect: ".mysql_error());}

@mysql_select_db($db, $link);

for($day = 1;$day<=31;++$day) {
for($month = 1;$month<=12;++$month) {
for($year = 2005;$year<=2006;++$year) {

mysql_query("create table testdb_$year$month$day"."(testspalte varchar(10))");

}}}

mysql_close($link);

?>

Jetzt habe ich aber folgendes Problem.

Die Tabellen haben folgendes Format:

200511
200512
200513

Es sollte aber für jedes Monat und jeden Tag folgendes Format sein:

20050101
20050102
20050103

Kann mir jemand da vielleicht helfen, wie ich das realisieren kann?

Habe leider nichts im mysql - cookbook gefunden!

Dane vielmals im vorhinein.

Mfg
Byron
 

Frankie777

Advanced Hacker
Hi,
nimm date() um das Datum so auszugeben wie Du es haben möchtest.
Als Bezug nimmst Du mktime()

Dann gibt es auch nur Tabellennamen zu Tagen die es auch wirklich gibt.
 

Morlon

Member
Hallo,

mal ne kleine Frage nebenbei.
Wäre es nicht sinnvoller nur eine Tabelle zu erstellen mit dem Datum als extra Spalte? Die Verwaltung dieser Tabelle ist danach auf alle Fälle deutlich einfacher?
Möchte dir dabei nicht reinreden, soll nur ein kleiner Hinweis sein. :)

MfG
 
OP
B

byron1778

Hacker
Hallo an beide Postings.

Danke einmal vielmals ans erste Posting :)
Dein Hinweis hat tol funktioniert.

Veröffentliche hier einmal das Script, falls jemand es irgendwie einmal gebrauchen könnte oder Verbesserungsvorschläge hat.

Code:
#!/usr/bin/php

<?php

$user = "root";

$pass = "";

$db = "nvrec_data";

$link = @mysql_connect("localhost", $user, $pass);

if( ! $link) {

die("Cannot connect: ".mysql_error());

}

@mysql_select_db($db, $link) or die("Cannot open Database: ".mysql_error());

for ($d = 1; $d <= 31; ++$d) { /* Legt die Tage fest */

for ($m = 1; $m <= 12; ++$m) { /* Legt die Monate fest */

$date = date("Ymd", mktime(0,0,0,$m,$d,2006));/* bestimmt das genaue Datum */

echo "$date" ."\n";

/* Bei einer MySQL - Version unterhalb von 4.1 muss select * from ... angewendet werden
bei einer Version darüber muss/kann like ... angewendet werden */

mysql_query("create table nvrec_data.recording_$date select * from nv_data.recording where 1=2");// like nv_data.recording");

mysql_query("insert into nvrec_data.recording_$date select * from nv_data.recording where call_time >= UNIX_TIMESTAMP($date".'000000'.") and call_time <= UNIX_TIMESTAMP($date".'235959'.")");

mysql_query("alter table nvrec_data.recording_$date drop modify");

}

}

mysql_close($link);

?>

ad 2tes Posting:

Da hast Du vollkommen recht, folgendes ist damals eingetreten.

Wir haben eine Datenbank, die im Moment ca. 25 Millionen Einträge hat.
Bei der Websuche dauert es Minuten bis ein bestimmter Eintrag gefunden wird.
Deswegen wurde vom Entwickler vorgeschlagen die Datenbank aufzuteilen nach dem Schema, ein Tag = eine Tabelle.
Die Entwickler passen die Oberfläche an, ich muss die Tabelle und Script dazu schreiben.

Der Entwickler gibt aber hierbei "leider" das Format vor :)

Ich muss die Tabelle anpassen an die Begebenheit.

Danke für Eure Hilfe!

Mfg
Byron
 
Oben