PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

30-03-2005, 00:09
|
nobody08
Newbie
|
|
Registriert seit: Nov 2004
Ort: Schweiz :D
Beiträge: 14
|
|
User-log-script
Hallo zusammen,
ich melde mich wiedereinmal... weil ich ein recht langes script geschrieben habe... Es ging eine Zeit lang, da habe ich es für mich schon fast abgeschlossen, dann wollte ich noch eine Funktion mehr einbauen und es ging nicht mehr...
Könnt ihr da einmal "kurz" reinschauen, falls ihr grad lust & Zeit habt..?
Es ist wohl irgendeine Abfrage nich richtig, denn mysql_fetch_object() verursacht einen Fehler... Aber ich bin langsam am verzweifeln, weil ich den Fehler nicht finde!
Die URL:
http://web136m.dynamic-kunden.ch/nob.../userloger.php
Die Fehler die es meldet:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/www/web136/html/nobody08/TESTS/userloger.php on line 41
Das Script:
PHP-Code:
<?php
/* NOCH ZU TUN:
- evt. parameter zur function anstatt [include('db_connect.php');] (z. 13)
*/
/*
* Userloger by nobody08
* Mar 05
*/
function userstats($db_table='userstats',$max_time='50'){
// connecting :)
include('db_connect.php');
$create_table=mysql_query("CREATE TABLE IF NOT EXISTS `$db_table`
(`id` int(5) unsigned NOT NULL AUTO_INCREMENT,
`page` varchar(50) NOT NULL,
`ip` varchar(20) NOT NULL, `provider` varchar(100) NOT NULL,
`timestamp` varchar(200) NOT NULL, `counter` int(3) NOT NULL
default '0', PRIMARY KEY (`id`) , KEY `id` (`id`) ) TYPE = MYISAM ;");
// abfrage
$query="SELECT * FROM '$db_table'";
$result=mysql_query($query);
// settings
$new_ip=$_SERVER['REMOTE_ADDR'];
$new_provider=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$new_timestamp=time();
$new_page=$_SERVER['PHP_SELF'];
// alte löschen
$max_length=time()-60*60*24*$max_time; // = time() von vor $max_time Tagen
echo '$max_time >> '.$max_time;
echo '<br>$max_length >> '.$max_length;
echo '<br>'.date("[d.m.Y H:i]",$max_length);
$DELETE="DELETE FROM $db_table WHERE timestamp<'$max_length' AND page='$new_page'";
$delete=mysql_query($DELETE);
mysql_error();
// Alle-lösch-funktion (NUR VON DIESER SEITE)
$_GET['reset'];
global $reset;
if($reset){
$DELETE="DELETE FROM $db_table WHERE page = '$new_page'";
$delete=mysql_query($DELETE) or die("<br>Fehler bei der 'Alles-löschen-Funktion'");
}
// user hinzufügen
while($row=mysql_fetch_object($result)){
if($row->ip==$new_ip){
$new_timestamp=$row->timestamp.' '.$new_timestamp;
$new_counter=$row->counter;
$new_counter=$new_counter+1;
$query="UPDATE $db_table SET counter='$new_counter', timestamp='$new_timestamp' WHERE ip='$new_ip'";
$vorhanden='1';
}
}
if(!$vorhanden){$query="INSERT INTO $db_table (page,ip,provider,timestamp) VALUES
('$new_page','$new_ip','$new_provider','$new_timestamp')";}
$enter=mysql_query($query);
mysql_error();
// abfrage aktualisieren
$query="SELECT * FROM '$db_table'";
$result=mysql_query($query);
// vorhandene auslesen & ausgeben
echo "<body><br><b>Einträge</b><br>\n
<table style=\"padding: 20px 2px 20px 2px; border: 1px solid #000000;\">\n<tr>\n
<td>Datum/Zeit</td>\n <td>IP</td>\n <td>Provider</td>\n <td>h.o.</td>\n</tr>";
while($row=mysql_fetch_object($result)){
$page=$row->page;
$counter=$row->counter;
$timestamp=$row->timestamp;
if($page==$new_page){ // Dass es nur Zugriffe der aktuellen Seite anzeigt
if($counter!=='0'){
$tmp_timestamp=explode(' ',$timestamp);
for($i='0';$i<=$counter;$i++){
$timestamp=date("[d.m.Y H:i]",$tmp_timestamp[$i]);
if($i=='0'){echo "\n<tr style=\"height: 50px; border: 1px dashed black;\">\n
<td><div style=\"overflow: auto; width: 150px; height: 50px; border: #222222;\">$timestamp";}
else {echo '<br>'.$timestamp;}
}
$counter=$counter++;
echo "</div></td>\n <td>$row->ip</td>\n <td>$row->provider</td>\n <td>$counter</td>\n</tr>";
}
else {
$timestamp=date("[d.m.Y H:i]",$row->timestamp);
echo "\n<tr style=\" height: 50px; border: 1px dashed black;\">\n
<td>$timestamp</td>\n <td>$row->ip</td>\n <td>$row->provider</td>\n</tr>";
}
}
}
echo "\n</table>\n";
echo '<br><a href="'.$_SERVER['PHP_SELF'].'?reset=1">Alle Daten dieser Seite löschen!</a></body>';
} // ENDE function userstats
// AUSFÜHRUNG
userstats();
?>
Gruss & Danke im voraus für JEDE Hilfe... 
nobody08
Ach ja: In der Datei db_connect.php sollte kein Fehler sein, ich verbinde da mit dem mySQL-Server und habe hinten "die()" angehängt, wenn es dort einen Fehler hätte, ginge es also gar nicht weiter...
__________________
Nobody's perfect...!!
|

30-03-2005, 00:16
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
PHP-Code:
$query="SELECT * FROM '$db_table'";
was sollen die hochkommata dort?
|

30-03-2005, 09:24
|
loci
Junior Member
|
|
Registriert seit: Feb 2003
Ort: Saarland
Beiträge: 82
|
|
selbst backticks sind bei einer sinnvollen benennung von tabellen und spalten (ohne keywords) unsinnig.
|

30-03-2005, 11:45
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
statt hier unmengen von unumgebrochenem Quelltext zu posten, würde es wohl mehr sinn machen, mal vernünftiges Debugging zu betreiben! mysql_error hilft! (Siehe auch Forumregeln!)
|

30-03-2005, 13:41
|
nobody08
Newbie
|
|
Registriert seit: Nov 2004
Ort: Schweiz :D
Beiträge: 14
|
|
also, danke euch, es war das mit den hochkommatas...
Die hatte ich erst dort reingetan, als es schon dauernd einen Fehler meldete, da dachte ich es liege an dem. Aber komischerweise geht es jetzt ohne die, aber ich mag mich nicht erinnern, dass ich seither etwas gemacht habe... (seit ich die gesetzt habe)
und @TobiaZ
Ich hatte sicher über 5 min. lang die Zeilen umgebrochen und fragte mich am schluss wirklich, warum nicht einfach die Vorschau so breit sein kann wie es dann nacher rauskommt, und warum es nicht einfach scrollbars gibt beim codefenster... bei langen Codes kann man ja das fenster unten auch begrenzen, dann ist das Problem auch weg, dass man immer zuerst runter scrollen muss um die vertikal-scrollbar zu bewegen...
Und das mit dem mysql_error() hatte nicht viel mehr geliefert (sogar gar nichts, hab ich in erinnerung) und das error_report(E_ALL) oder wie das heisst hatte ich auch schon ausprobiert (sogar als ich noch nicht daran dachte, hier zu posten kam ich hierher um diese Zeile zu hohlen, weil ich sie nicht mehr wusste ^^) aber das hat nur gemeldet, dass POST-checkbox-namen(/variablen) nicht definiert sind, also brachte es mir auch nix...
__________________
Nobody's perfect...!!
|

30-03-2005, 18:16
|
p_rehm
Junior Member
|
|
Registriert seit: Jul 2004
Beiträge: 220
|
|
mysql_error hätte sicher eine ausgabe gebracht wenn du es richtig verwendet hättest.
|

30-03-2005, 21:57
|
nobody08
Newbie
|
|
Registriert seit: Nov 2004
Ort: Schweiz :D
Beiträge: 14
|
|
Ich hatte es zuerst direkt nach der Fehlerlinie, also nach der while-schleife, wo ich auch das fetch_object drin hatte, das den Fehler gab weil $result glaub nicht gültig war. Weil aber ja die while-schlaufe gar nie durchlaufen wurde, weil die Bedingung false war kam es gar nie zum mysql_error.
ABER ich hatte dann auch $row=mysql_fetch_object($result) in eine eigene Zeile getan und danach mysql_error gehabt, aber dann kam auch nix genaueres.
UND, wenn ich mich richtig erinnere habe ich nach jeder query mysql_error gesetzt, also auch dort wo $result definiert wurde.
Gruss
Edit: ne stimmt nich ganz... habe nachgeschaut und überall ausser bei der Problem-Zeile ein mysql_error() gefunden...
__________________
Nobody's perfect...!!
Geändert von nobody08 (30-03-2005 um 21:59 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|