PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbank abfrage???????



jr-coolman
26.06.2007, 09:03
Also zur zeit habe ich ein problem das mit die ?????? aus dem kopf haut.

Nehmen wir mal diese zeile:


db_query("DELETE FROM ".$db_prefix."_traffic_reload WHERE reload_bis<='".time()."'");

Sinn der zeile ist es die Reloadbanner des Surfbars zu löschen sobald sie veraltet sind damit die datenbank nicht zu groß wird.

das $dbprefix vor der datenbank ersetzt vermutlich das vms.

Soweit habe ich es verstanden.
Jetzt habe ich die zeile in die index.php datei eingebaut wie in der Anleitung beschrieben. Dann sah die so aus (In zeile 11 eingefügt):


<?
$_GET['content'] = str_replace('.','',$_GET['content']);
$check = explode("../",$_GET['content']);
if (isset($check[1]) && $check[1]!='') {
echo 'Zugriff verweigert!';
exit;
}
@include_once('lib/header.php');
@include_once('content'.$_GET['content'].'.php');
@include_once('lib/footer.php');
db_query("DELETE FROM ".$db_prefix."_traffic_reload WHERE reload_bis<='".time()."'");
?>

Daraufhin habe ich folgende Fehlermeldung laufend bekommen:



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/web84/html/lib/functions.lib.php on line 40

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www/web84/html/lib/functions.lib.php on line 40

Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/web84/html/lib/functions.lib.php on line 44

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/web84/html/lib/functions.lib.php on line 44

OK diese fehlermeldung habe ich einfach nicht wegbekommen egal was ich probiert habe ich habe das vms_ noch davor eingefügt.
Ich habe das $dbprefix rausgenommen.
Ich habe die Datenbanken gelöscht und neu installiert.
Ich habe die Datenbanken überprüft also sie sind richtig eigefügt.

Ok irgendwann habe ich aufgegeben und habe sie in die header.php eigefügt.
Und zwar so:


<?
@require_once ('lib/functions.lib.php');
db_connect();
@require_once ('lib/session.lib.php');
@require_once ('lib/layout.lib.php');
###############################
db_query("DELETE FROM ".$db_prefix."_traffic_reload WHERE reload_bis<='".time()."'");
###############################

Und siehe da. Fehler weg... Im ersten moment habe ich mich ja gefreut.
Aber dann habe ich gedacht. He moment das war viel zu einfach.
Und habe die zeile mal spaßeshalber verändert so das sie so aussah:


db_query("DELETE FROM ".$db_prefix."raffic_reload WHERE reload_bis<='".time()."'");

So jetzt müsste ja wieder ein fehler kommen weil eine Datenbank die raffic heißt giebt es ja nicht.
Und siehe da es kam kein fehler.
Jetzt habe ich natürlich einige fragen:

Warum bekomme ich garkeinen fehler mehr trotz das die zeile unmöglich so funktionieren kann?

Muss das vms_ jetzt mit in die zeile und das $db_prfix raus oder funktioniert es auch so?

Und wie kann ich herausfinden ob die zeile jetzt korrekte funktion hat?

Gruß
Joachim

MasterG
26.06.2007, 13:41
Fehlermeldungen werden doch mit dem @ deaktiviert!?!?
Entferne mal in der Index überall das @. Was kommt dann?

Holstenjungs
26.06.2007, 14:47
Wenn mich nicht alles täuscht, hast du in der anderen datei vergessen eine Verbindung zur Datenbank herzustellen.

db_connect();
Ich kann mich aber auch täuschen.

Gremlin
26.06.2007, 14:56
@include_once('lib/footer.php');
db_query("DELETE FROM ".$db_prefix."_traffic_reload WHERE reload_bis<='".time()."'");

tausche die beiden Zeilen um, in der footer.php wird imho die verbindung mit db_close(); beendet, alles was danach folgt hat keine Verbindung mehr zur db.

Aus Erfahrung rate ich dir jedoch die Reloads nicht in der index.php zu löschen, sondern diesen Code in einen Cron auszulagern, welcher z.B. 1x am Tag (reicht dicke) ausgeführt wird.

Gruß
Gremlin

jr-coolman
27.06.2007, 10:59
Die Idee von Gremlin finde ich eigentlich ganz gut.

Jetzt zur Praktischen umsetzung.
Da ich ja noch Blutiger anfänger bin gebe ich mal mein bestes und ihr Korrigiert mich.
Der Cron ist ja nichts weiter wie ein kleine php File.
Folglich sollte der dann so aussehen oder:



<?php

@require_once ('../lib/functions.lib.php');

db_connect();

db_query("DELETE FROM ".$db_prefix."_traffic_reload WHERE reload_bis<='".time()."'"); ?>

?>

Jetzt kommen wir zum eintrag in die My SQl datei die verstehe ich nicht so ganz.
Ich habe mir mal einen Cron eintrag aus der SQL der VMS version rauskopiert und nur den Dateinamen eingetragen des PHP Codes der oben steht.
Aber das war ja bestimmt noch nicht alles oder?
Was haben den z.b. die zahlen in der reihe zu sagen?

Im Moment sieht der MYSQL Code so aus:



--
-- Cron einfügen in `vms_crons`
--


INSERT INTO `vms_crons` VALUES ('int_forcedbanner', 0, 1112363506, 'crons/surfbarloesch.php', 'Reumt die Surfbar Datenbank auf');

-- --------------------------------------------------------

Gremlin
27.06.2007, 16:52
Die Zahlen sind der Timestamp im Uníx Format vom letzten Aufruf

Im Cron fehlt noch ein

db_close();

jr-coolman
27.06.2007, 18:51
Also so dann:




<?php

@require_once ('../lib/functions.lib.php');

db_connect();

db_query("DELETE FROM ".$db_prefix."_traffic_reload WHERE reload_bis<='".time()."'"); ?>

db_close();

?>

Und wenn ich noch mal zum MySQl zurück kommen darf.
Also die Zahln sind Praktisch Irelevant für den eintrag in die Datenbank.
Aber was ist mit dem hier Farbig markierten bereich.
Muss der nicht auch anders heißen.



--
-- Cron einfügen in `vms_crons`
--


INSERT INTO `vms_crons` VALUES ('int_forcedbanner', 0, 1112363506, 'crons/surfbarloesch.php', 'Reumt die Surfbar Datenbank auf');

-- --------------------------------------------------------

Gremlin
27.06.2007, 20:36
Das kannst du so lassen, kannst es aber auch ext_cron nennen. Aber ist relativ egal ^^ :D

jr-coolman
27.06.2007, 23:08
Prima hat alles geklappt.

im php Code war noch ein ?> zu viel aber jetzt leuft alles danke.

Gremlin
27.06.2007, 23:34
Jup das mit dem ?> liegt an der Forensoftware !? wenn man php Tag nutzt aber kein <?php oder ?> etc. nutzt werden die irgendwie automatisch angefügt... muss ich mal iwann ändern..

Gruß
Gremlin