Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Tabelle öffen, Zeile löschen und einfügen? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Tabelle öffen, Zeile löschen und einfügen?


 
Tpercon
02-08-2002, 20:42 
 
Wo liegt der Fehler in den paar Codezeilen?

$link = mysql_connect("adresse", "name", "passwort")
or die("Keine Verbindung möglich!");
//Verbindung erfolgreich
mysql_select_db("counter")
or die("Auswahl der Datenbank fehlgeschlagen");
//Datenbankauswahl war erfolgreich

$result=mysql_query("DELETE FROM counter WHERE id=$id and zeit=time-14400")
if (!$result) {//IP gelöscht
++$counterstand
}
mysql_query("INSERT INTO counter (ip,zeit) VALUES ('$ip','time')");

// schliessen der Verbinung
mysql_close($link);

 
hand
02-08-2002, 20:48 
 
Ist das ein Quiz?

$result=mysql_query("DELETE FROM counter WHERE id=$id and zeit=$time-14400")
mysql_query("INSERT INTO counter (ip,zeit) VALUES ('$ip','$time')");

$time anstatt time nehme ich an.

Wieviele Punkte bekomme ich dafür?

Bitte das nächste mal etwas konkreter,
Danke

 
Tpercon
02-08-2002, 20:52 
 
Sorry, bin absoluter Anfänger.

Damit will ich mir die aktuelle Zeit und das aktuelle Datum holen.

So ist das richtig?

 
hand
02-08-2002, 21:01 
 
Kommt drauf an wie Du das Datenfeld Zeit definiert hast.

now() liefert Dir Zeitwerte entweder mit oder ohne Trennzeichen

mysql> select now(), now()-0;
+---------------------+----------------+
| now() | now()-0 |
+---------------------+----------------+
| 2002-08-02 20:55:30 | 20020802205530 |
+---------------------+----------------+
1 row in set (0.00 sec)


Vielleicht klappt bei Dir

$result=mysql_query("DELETE FROM counter WHERE id=$id and zeit=now()-14400")
mysql_query("INSERT INTO counter (ip,zeit) VALUES ('$ip','now()-0')");


Wobei ich mir nicht sicher bin, ob Du nicht alle Records die älter als jetzt - 14400 sSekunden sind löschen möchtest, alao

$result=mysql_query("DELETE FROM counter WHERE id=$id and zeit<now()-14400")

Ob das mit dem now() paßt ist wie gesagt (geschrieben) abhängig davon wie das Feld zeit definiert ist.

 
Tpercon
02-08-2002, 21:06 
 
zeit ist als datetime definiert.

Ich möchte ansonsten damit die Zeile löschen wo die IP übereinstimmt und die zeit innerhalt der letzten 4 Stunden liegt.

 
hand
02-08-2002, 21:27 
 
<?php
$link = mysql_connect("adresse", "name", "passwort")
or die("Keine Verbindung möglich!");

//Verbindung erfolgreich
mysql_select_db("counter")
or die("Auswahl der Datenbank fehlgeschlagen");
//Datenbankauswahl war erfolgreich

$result=mysql_query("DELETE FROM counter WHERE ip='$ip' and zeit < now() - INTERVAL 4 HOUR");
if (!$result) {
$counterstand++;
}
mysql_query("INSERT INTO counter (ip,zeit) VALUES ('$ip',now())");

// schliessen der Verbinung
mysql_close($link);
?>

 
Tpercon
02-08-2002, 21:45 
 
Hi, hier mal der komplette Code, leider funktioniert es immer noch nicht.

<?php

$ip=getenv("REMOTE_ADDR");// Aktuelle IP Adresse von Besucher
$counterfile="counter.txt";

//counterzahl laden
if (!file_exists($counterfile)) {
$datei=fopen($counterfile,"r");
fgets($counterzahl);
fclose($datei);
}

// Verbindung aufbauen, auswählen einer Datenbank
$link = mysql_connect("adresse", "name", "passwort")
or die("Keine Verbindung möglich!");
//Verbindung erfolgreich
mysql_select_db("counter")
or die("Auswahl der Datenbank fehlgeschlagen");
//Datenbankauswahl war erfolgreich

$result=mysql_query("DELETE FROM counter WHERE ip='$ip' and zeit < now() - INTERVAL 4 HOUR");
if (!$result) {
++$counterstand;
}
mysql_query("INSERT INTO counter (ip,zeit) VALUES ('$ip',now())");

// schliessen der Verbinung
mysql_close($link);

//counterzahl speichern
if (!file_exists($counterfile)) {
$datei=fopen($counterfile,"w");
fputs($datei,$counterzahl);
fclose($datei);
}

//counter anzigen
$anzahlstellen=4;
// evtl. Auff&uuml;llen von Nullen auf anzahlstellen
$counterzahl=str_pad($counterzahl, $anzahlstellen, "0", STR_PAD_LEFT);
//$groesse=GetImageSize("0.png");//Gr&ouml;&szlig;e eines Bildes bestimmen, da alle gleich gro&szlig;
//$counter=ImageCreate(($anzahlstellen*$groesse[0]),$groesse[1]);
//Counterbild erstellen
For($i=0; $i<$anzahlstellen; $i++)
{
$src_img=ImageCreateFromPNG("$counterzahl[$i].png");
//entsprechendes Ziffernbild laden
ImageCopy($counter, $src_img, ($groesse[0] * $i), 0, 0, 0, $groesse[0], $groesse[1]);
//Bild an die entsprechende Stelle im Counterbild kopieren
ImageDestroy($src_img);}

Header("Content-type: image/png");
ImagePNG($counter);
ImageDestroy($counter);

?>

 
hand
02-08-2002, 22:13 
 
$counterstand++;
anstatt
++$counterstand;

Was funktioniert nicht? Bitte etwas konkreter. Beim Zahnarzt sagst Du ja auch welcher Zahn Dir weh tut oder sagst Du dort nur "Weh tut"?

Wenn Du es ihm nicht sagst riskierst Du damit, daß er Dir alle Zähne extrahiert. :D

Gibt es Fehlermeldungen? Wenn ja welche?

 
hand
02-08-2002, 22:16 
 
Vielleicht solltest Du beim Connect was konkretes eingeben?

$link = mysql_connect("adresse", "name", "passwort")

vielleicht

$link = mysql_connect("localhost", "root", "")

ich weiß es nicht, es kann ja adresse, name, passwort auch korrekt sein, who knows?

Da müßte doch eine Fehlermeldung kommen, aber vermutlich kommt da keine, sonst hättest Du es ja bekanntgegeben ....
:rolleyes:

 
Tpercon
03-08-2002, 14:04 
 
Auswahl der Datenbank fehlgeschlagen!

Die Tabelle counter ist natürlich erzeugt:
ip varchar(15) default=0.0.0.0 not null
zeit datetime default=0000-00-00 00:00:00 not null

 
hand
03-08-2002, 14:53 
 
Auswahl der Datenbank fehlgeschlagen?

Na dann trag da bitte die korrekten Anmeldeparameter ein - die kannst nur Du in Erfahrung bringen - vielleicht passt das aber, es sei denn esw muß mit einem anderen User connectet werden oder mit einem anderen Passwort.

Sorry ich kann Dir nicht sagen wie User/Passwort für Deine Datenbank aussehen.

$link = mysql_connect("localhost", "root", "")

 
Tpercon
03-08-2002, 15:32 
 
Die Anmeldeparameter sind aber richtig, der Fehler liegt in der Zeile:
mysql_select_db("counter")
Und die Tabelle die ich erstellt habe, heißt counter oder kommt da nicht der Tabellenname hin?

 
Tpercon
03-08-2002, 15:56 
 
Danke, ich habs! Da kommt nicht der Tabellen, sondern der Datenbankname hin.

Gruß

 
Tpercon
04-08-2002, 19:41 
 
Wenn keine Zeile mit den Bedingungen existiert, soll die Zahl von counterstand um eins erhöht werden. Wo liegt da der Fehler im Code, damit die Zahl erhöht wird?
$result=mysql_query("DELETE FROM counter WHERE ip='$ip' and zeit < now() - INTERVAL 4 HOUR");
if (!$result) {
$counterstand++;
}


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:35 Uhr.