MySQL und Cronjob
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anlegen
bedingung
code
datei
datenbank
dokument
fehlermeldung
feld
funktionieren
http
jemand
kid
liste
not
null
problem
spalte
tabelle
tag
verzweifeln
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du kannst über ein geregelten Cronjob bei Phpmyadmin nichts machen. Du kannst jediglich ein PHP-DOkument anlegen, das aufgerufen wird indem sich ein SQL-Befehl befindet, der etwas in der Datenbank verändert. Zb kann das PHP-Dokument dann so aussehen:
<?php mysql_query(\"INSERT INTO lima (zeit,cronjobart) VALUES (\'\".time().\"\',\'cron-nummer-1\')\"); ?>
zum eintragen der aktuellen Zeit oder
<?php mysql_query(\"DROP TABLE lima\"); ?>
Zum löschen einer Tabelle. -
Also ich habe ein Problem. Ich muss aus einer Tabelle und dann aus einem Feld die Datensätze täglich löschen. Nur leider hab ich davon null Ahnung. Manuell ist das kein Problem aber ich kann mich auch nicht jeden Tag darum kümmern. Hat jemand vllt. einen Code dafür?
Wäre sehr nett.
Beitrag geändert: 8.6.2008 1:56:44 von shorty13 -
Da wäre der Code
<?php mysql_query(\"DELETE FROM tabelle WHERE bedingung = bedingung\"); ?>
oder wenn alles nach einem Tag gelöscht werden soll
<?php $tp = time() - 86400 mysql_query(\"DELETE FROM tabelle WHERE time < $tp\"); ?>
oder wenn alle gelöscht werden soll:
<?php $tp = time() - 86400 mysql_query(\"DELETE FROM tabelle\"); ?>
Beitrag geändert: 8.6.2008 2:04:26 von fly-europe -
Tut mir leid ich weiß nicht so genau was ich damit anfangen soll.
So wie ich das sehe ist der Code dafür da alles aus einer Tabelle zu löschen. Ich muss aber aus einer Tabelle und dann da aus einem Feld alle Datensätze löschen. -
Aus einem Feld alle Datensätze löschen? Meinst du, aus allen Datensätzen spalte XX zu leeren?
Wenn ja, dann geht das so:
<?php mysql_query(\"UPDATE tabellenname SET `spalte` = \'\':\"); ?>
Vielleicht noch mal eine kleine Veranschaulichung für dich:
spalte1 spalte2 spalte3 <--- das hier sind die sog. spalten __________________________________ wert1 wert2 wert3 <--- diese ganze zeile ist ein datensatz nocheinwert1 blub2 blub3 <--- \"blub3\" ist ein wert
Beitrag geändert: 8.6.2008 13:04:25 von pinguinfreund
Beitrag geändert: 8.6.2008 13:05:17 von pinguinfreund -
Ich meine das so wenn man eine Tabelle anlegt dann gibt es ja auch sozusagen Untertabellen. Da steht dann Feld und darunter sind die dann gelistet. Also ich hab z.B. die Tabelle User. Dann sind da Felder wie ID oder KID. Und in so einem Feld sind Indizen oder Datensätze. Und die will ich per Cronjob jeden Tag einmal löschen. Wenn MySQL wieder funktioniert und nicht so langsam ist das man 30min braucht um voran zu kommen mache ich Screenshots.
-
Es gibt keine Untertabellen.
Ich vermute du meinst eine Datenbank.
Eine Datenbank enthält mehrere Tabellen.
Wenn du die Tabelle leeren willst machst du einfach folgendes:
<?php mysql_unbuffered_query(\"DROP TABLE users\"); mysql_unbuffered_query(\"CREATE TABLE users [...]\"); ?>
[...] bedeutet hier muss deine DB-Struktur rein.
Den Code speicherst du z.B. als loeschen.php ab.
Dann registrierst du dir auf http://www.cronjob.de einen cronjob, der dieses Skript ein mal am tag aufruft
-
<php
$hostname = \"++++++\";
$Benutzername = \"++++++\";
$Datenbankname = \"++++++\";
$Kennwort = \"++++++\";
mysql_connect($hostname,$Benutzername,$Datenbankname,$Kennwort) or die(\"Nicht Verbunden\" );
mysql_unbuffered_query(\"DROP TABLE user, liste\" );
$query=\"CREATE TABLE `liste` (
`l1` int(11) NOT NULL default \'0\',
`l2` int(11) NOT NULL default \'0\',
`l3` int(11) NOT NULL default \'0\',
`l4` int(11) NOT NULL default \'0\',
`l5` int(11) NOT NULL default \'0\'
) TYPE=MyISAM;
Daten für Tabelle `liste`
INSERT INTO `liste` (`l1`, `l2`, `l3`, `l4`, `l5`) VALUES (0, 0, 0, 0, 0);
$query=CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`kid` int(11) NOT NULL default \'0\',
`liste` int(11) NOT NULL default \'1\',
`datein` int(11) NOT NULL default \'0\',
`datakt` int(11) NOT NULL default \'0\',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Daten für Tabelle `user`
mysql_query($query);
mysql_close();
?>
So jetzt läuft alles nur ein problem und zwar führt er das Script nicht aus. Es kommt keine Fehlermeldung mehr aber es passiert nichts. Woran liegt das?
Beitrag geändert: 9.6.2008 13:54:27 von shorty13 -
Wenn du sicher bist, dass das Skript so richtig ist, dann regsitrier dir einfach auf http://www.cronjob.de einen Cronjob, der dieses Skript ein mal am tag aufruft (dann widr ein mal am tag die datenbank geleert)
-
<php $hostname = \"++++++\"; $Benutzername = \"++++++\"; $Datenbankname = \"++++++\"; $Kennwort = \"++++++\"; mysql_connect($hostname,$Benutzername,$Datenbankname,$Kennwort) or die(\"Nicht Verbunden\" ); mysql_unbuffered_query(\"DROP TABLE user, liste\" ); $query = \"CREATE TABLE `liste` ( `l1` int(11) NOT NULL default \'0\', `l2` int(11) NOT NULL default \'0\', `l3` int(11) NOT NULL default \'0\', `l4` int(11) NOT NULL default \'0\', `l5` int(11) NOT NULL default \'0\' ) TYPE=MyISAM; \"; Daten für Tabelle `liste` $query .= \"INSERT INTO `liste` (`l1`, `l2`, `l3`, `l4`, `l5`) VALUES (0, 0, 0, 0, 0); \"; $query .= \"CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `kid` int(11) NOT NULL default \'0\', `liste` int(11) NOT NULL default \'1\', `datein` int(11) NOT NULL default \'0\', `datakt` int(11) NOT NULL default \'0\', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1; \"; Daten für Tabelle `user` mysql_query($query); mysql_close(); ?>
So jetzt läuft alles nur ein problem und zwar führt er das Script nicht aus. Es kommt keine Fehlermeldung mehr aber es passiert nichts. Woran liegt das?
Beitrag geändert: 9.6.2008 13:54:27 von shorty13
So müsste das funktionieren (ohne Gewähr, weil nicht getestet )
-
Sry es geht immer noch nicht. Auch ein Freund von mir hat es nicht hinbekommen. Bin wirklich am verzweifeln ob das noch was wird. Hab es bis jetzt so hingekriegt das er die Tabellen löscht. Aber erstellen tut er es nicht.
Hier der Code für die eine Tabelle:
<?
include (\"db.php\" );
mysql_query(\"CREATE TABLE user (
id int(11) NOT NULL auto_increment,
kid int(11) NOT NULL default \'0\',
liste int(11) NOT NULL default \'1\',
datein int(11) NOT NULL default \'0\',
datakt int(11) NOT NULL default \'0\',
PRIMARY KEY (`id`)
TYPE=MyISAM AUTO_INCREMENT=1;\" );
mysql_close();
echo \"Die Tabelle wurde angelegt\";
?>
Und hier der für die andere:
<?php
include (\"db.php\" );
mysql_query(\"CREATE TABLE liste (
l1 int(11) NOT NULL default \'0\',
l2 int(11) NOT NULL default \'0\',
l3 int(11) NOT NULL default \'0\',
l4 int(11) NOT NULL default \'0\',
l5 int(11) NOT NULL default \'0\'
\" );
mysql_close();
echo \"Die Tabelle wurde angelegt\";
?>
leider funktionieren beide nicht. Bekomme keine Fehlermeldung aber anlegen tut er die Tabellen nicht.
Beitrag geändert: 9.6.2008 23:37:43 von shorty13 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage