CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
21.12.2003, 15:28:11
|
Junior Member
|
|
Registriert seit: Jul 2002
Ort: Heiden, NRW
Alter: 38
Beiträge: 218
|
|
Überprüfen ob Daten schon in der Tabelle vorhanden?
Hallo,
ich habe heute versucht mich ein wenig mit mySQL auseinander zu setzen und bin nicht weit gekommen! Versuche momentan ein Script zu schreiben, was die Anzahl der Besucher jährlich, monatlich und täglich aufzeichnet und in einer DB speichert! Dies sollte mit einer IP-Sperre von 1 Stunde erfolgen! Da ich schon daran hängen bleibe wie man prüft ob die Daten schon vorhanden sind, wende ich mich nun an euch..
Also es gibt 1 Tabelle "staistiken" in denen folgende Felder vorhanden sind ID, Jahr, Monat, Tag, Anzahl !
Das Script soll nun prüfen ob das aktuelle Datum schon vorhanden (bekomme ich nicht hin) ist und Anzahl + 1 rechnen und wieder reinschreiben. Wenn nicht, soll es einen neuen Datensatz anlegen, wobei Anzahl auf 1 gesetzt wird (einfach)!
Wer weiss weiter?
Ich habe schon einen kleinen Code zusammen, aber irgendwie funzt der net!
PHP-Code:
include("dbconnect.php4");
$jahrnow = date("Y");
$monatnow = date("m");
$tagnow = date("d");
$abfrage = ("SELECT anzahl FROM statistiken WHERE jahr = $jahrnow AND monat = $monatnow AND tag = $tagnow");
$ergebnis = mysql_query($abfrage);
print $ergebnis;
if($ergebnis){
$array = mysql_fetch_row($ergebnis);
$array[0]++;
$eintrag = "UPDATE `statistiken` SET `anzahl` = $array[0] WHERE jahr = $jahrnow AND monat = $monatnow AND tag = $tagnow";
$eintragen = mysql_query($eintrag);
print "Erfolg";
} else
{
$eintrag = "INSERT INTO statistiken (jahr, monat, tag, anzahl) VALUES ($jahrnow,$monatnow,$tagnow,1)";
$eintragen = mysql_query($eintrag);
}
Gruß, Schröder
|
21.12.2003, 16:14:44
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
$array[0] --> {$array[0]}
oder
$array[0] --> ".$array[0]." (also ausklammern)
Tipp: $ergebnis = mysql_query($abfrage) or die(mysql_error());
|
21.12.2003, 18:49:39
|
Junior Member
|
|
Registriert seit: Jul 2002
Ort: Heiden, NRW
Alter: 38
Beiträge: 218
|
|
Ähm worauf sprichst du an?
Auf das $array wo ++ steht oder in dem mySQl-Query?
Schröder
edit: Warum sagt mir das Script die ganze Zeit "Erfolg", obwohl die Datenbank leer ist! Normal müsste doch nur Erfolg dort stehen, wenn genau der Datensatz vorhanden ist oder?!?! Was mache ich falsch???
Geändert von nivram (21.12.2003 um 18:53:30 Uhr)
|
21.12.2003, 18:52:36
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Das mit dem ++ hab ich ganz übersehen. Ich meine das im Query.
|
21.12.2003, 19:14:34
|
Junior Member
|
|
Registriert seit: Jul 2002
Ort: Heiden, NRW
Alter: 38
Beiträge: 218
|
|
Warum sagt mir das Script die ganze Zeit "Erfolg", obwohl die Datenbank leer ist! Normal müsste doch nur Erfolg dort stehen, wenn genau der Datensatz vorhanden ist oder?!?! Was mache ich falsch???
Schröder
|
21.12.2003, 19:20:18
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Ach Shit, der Thread des Überlesens....
Du hast das geshrieben: if($ergebnis){
Diese Abfrage ist immer dann erfüllt, wenn die mySQL-Abfrage erfolgreich war. Das heißt aber noch lange nicht, dass auch Datensätze gefunden wurden!
Den else-Zweig würde er nur dann betreten, wenn die Abfrage Fehler enthalten würde.
Wenn Du es so schreibst, sollte es klappen:
if (mysql_affected_rows()>0) {
mysql_affected_rows() gibt Dir die Zahl der betroffenen Datensätze der letzten Abfrage zurück.
|
21.12.2003, 19:34:25
|
Junior Member
|
|
Registriert seit: Jul 2003
Beiträge: 182
|
|
Zitat:
Original geschrieben von _c_4_
Wenn Du es so schreibst, sollte es klappen:
if (mysql_affected_rows()>0) {
mysql_affected_rows() gibt Dir die Zahl der betroffenen Datensätze der letzten Abfrage zurück.
|
Nein nur bei Insert, Update, Delete und Replace. Und da waeren wir auch schon beim Thema:
http://www.mysql.com/doc/en/REPLACE.html
Andre
|
21.12.2003, 19:37:33
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
|
21.12.2003, 19:44:08
|
Junior Member
|
|
Registriert seit: Jul 2002
Ort: Heiden, NRW
Alter: 38
Beiträge: 218
|
|
Mittlerweile hab ichs anders gelöst! Nun wird weiter fröhlich herumprobiert! Vielen Dank trotzdem an alle.. Bei weiteren Fragen werd ich mich wieder an euch wenden!
Gruß, Schröder
|
21.12.2003, 21:13:26
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
Re: Überprüfen ob Daten schon in der Tabelle vorhanden?
Zitat:
Original geschrieben von nivram
Das Script soll nun prüfen ob das aktuelle Datum schon vorhanden ist und Anzahl + 1 rechnen und wieder reinschreiben. Wenn nicht, soll es einen neuen Datensatz anlegen, wobei Anzahl auf 1 gesetzt wird (einfach)!
|
PHP-Code:
include("dbconnect.php4");
$jahrnow = date("Y");
$monatnow = date("m");
$tagnow = date("d");
$sql = "UPDATE `statistiken` SET `anzahl` = `anzahl` + 1 WHERE jahr = $jahrnow AND monat = $monatnow AND tag = $tagnow";
$res = mysql_query($sql);
if (mysql_affected_rows($res) == 0)
{
$sql = "INSERT INTO statistiken (jahr, monat, tag, anzahl) VALUES ($jahrnow,$monatnow,$tagnow,1)";
if (!mysql_query($sql)) print 'huch?';
}
EDIT:
Da MySQL bei dieser Variante Fehlermeldungen produziert, mußt Du (nach Entwicklung und Test des Scriptes) diese Fehlerausgaben mit einem @ vor den MySQL Befehlen unterdrücken.
Es wäre noch einfacher, wenn Du Dich für das Spaltenformat DATE entschließen könntest.
Geändert von meikel (†) (21.12.2003 um 21:41:06 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:59:00 Uhr.
|