brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


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! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 04-08-2009, 22:25
activexactive
 Registrierter Benutzer
Links : Onlinestatus : activexactive ist offline
Registriert seit: Aug 2009
Beiträge: 37
activexactive befindet sich auf einem aufstrebenden Ast
Standard sql letzten 5 + limit

hey zusammen. ich möchte auf meiner präsentz "community" meinen besuchern die möglichkeit bieten die letzten 5 profilbesucher anzeigen zu lassen. das ist auch kein problem in dem ich in der abfrage einfach ein limit von 5 setze. jedoch ist das so, das die besucher in der id inkrementiert werden was die datenbank auf dauer mit überflüssigem müll überfüllt.
wie kann ich die tabelle einstellen, das auch nur 5 datensätze gespeichert werden und er automatisch immer die alten übeschreibt ?

danke schonmal im vorraus und für eure denkanstöße
Mit Zitat antworten
  #2 (permalink)  
Alt 04-08-2009, 23:01
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
das die besucher in der id inkrementiert werden was die datenbank auf dauer mit überflüssigem müll überfüllt.
Beschreibe dies mal genauer!

Ansonsten gilt ... Nutze "... ORDER BY ... DESC LIMIT 5", um die letzen 5 Einträge zu erhalten.

Das "Problem" der alten Datensätze kannst du mit einem Cron lösen, der alles, was älter als x Tage ist, entfernen kann.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 04-08-2009, 23:10
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
Slava befindet sich auf einem aufstrebenden Ast
Standard

einfügen muss so aussehen
1)delete from tabelle where id=1 or id>5;
2)update tabelle set id=id-1;
3)insert into tabelle(id,.......) values(5,.......);

jetzt kannst du bei select auf limit verzichten
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #4 (permalink)  
Alt 04-08-2009, 23:10
piratos
 Guest
piratos
Beiträge: n/a
Standard

Einfach etwas vor der Aufbereitung der Anzeige ablaufen lassen.

SELECT count( * ) AS total, max( id ) AS max
FROM tabelle

Das Ergebnis prüfen ob total > 5 ist, wenn ja

delete from tabelle where id < #wert von max -5
Mit Zitat antworten
  #5 (permalink)  
Alt 05-08-2009, 09:56
activexactive
 Registrierter Benutzer
Links : Onlinestatus : activexactive ist offline
Registriert seit: Aug 2009
Beiträge: 37
activexactive befindet sich auf einem aufstrebenden Ast
Standard

hey, danke schonmal für eure antworten.
also das von abraxas ist ja das simpelste, das hab ich so auch zuerst gemacht gehabt.
genauer beschrieben-> weiter unten
und cron.oha..hab noch nie mit cron gearbeitet. aber das ganze mit cron zu realisieren..hm..geht das auch ohne cronjob?

das von slava ist ja übrehaupt nicht anwendbar. das würde ja den quellcode sprengen und die datenbank übelst belasten wenn ich das nach diesem verfahren mache. updaten,löschen,lesen und das immer wieder :/

das von piratos kommt mir bisher am besten vor, wobei ich gerade den code nicht ganz verstehe..

SELECT count( * ) AS total, max( id ) AS max
FROM tabelle

zähle alles aus der datenbank zusammen als ein einziges ergebnis,
und was soll das mit max id ?!?!?!? zähle maximal 5 id´s oder wie?
is ja dann das gleiche wie punkt 1 so ungefähr.

die id ist doch fortlaufend da sie inkrementiert werden..

geht das nicht auf diese art und weise?

geb mir die letzten 5 id´s (also nach dem verfahren von abraxas)
und lösche alle restlichen id´s.
aber da ist das problem mit dem altersunterschied, da ja max (5 besucher) wiedergegeben werden solllen. id 5 müsste dann z.b auf id 4 runter rutschen.damit id 5 den neuen wert des neuen besuchers erhält.

oder denk ich da komplett falsch?

Geändert von activexactive (05-08-2009 um 10:01 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-08-2009, 10:37
piratos
 Guest
piratos
Beiträge: n/a
Standard

Zitat:
das von piratos kommt mir bisher am besten vor, wobei ich gerade den code nicht ganz verstehe..

SELECT count( * ) AS total, max( id ) AS max
FROM tabelle
mit count(*) AS total wird die Anzahl der vorhandenen Datensätze gezählt

Mit max(id) AS max wird der letzte Autoincrementwert der id (id kann bei dir auch ein anderer Feldname sein) ermittelt, liegt in max vor.

Wenn also total > 5 ist dann lösche ansonsten ja nicht nötig.

Legt man eine solche Routine in den Scriptteil wo das Profil aufgerufen wird, reduziert der jeweilige Besucher die Tabelle automatisch - cron job ? Wofür ?
Mit Zitat antworten
  #7 (permalink)  
Alt 05-08-2009, 18:21
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von activexactive Beitrag anzeigen
geb mir die letzten 5 id´s (also nach dem verfahren von abraxas)
und lösche alle restlichen id´s.
Man schreibt mich mit "x" am Ende.

Ich meinte nicht, dass du immer alle anderen Ids direkt löscht. Du wirst doch einen Eintrag in der Datenbank haben, der den Besuch des Users als Zeitwert speichert.

Anhand diesen Zeitwertes löschst du alles was älter als x Tage ist.

Du musst dich nicht auf exakt 5 Einträge fixieren. Was ist, wenn der User ganz neu ist, und sowieso keine 5 Einträge gezeigt werden können?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #8 (permalink)  
Alt 05-08-2009, 19:05
piratos
 Guest
piratos
Beiträge: n/a
Standard

Zitat:
Was ist, wenn der User ganz neu ist, und sowieso keine 5 Einträge gezeigt werden können?
Zitat:
mit count(*) AS total wird die Anzahl der vorhandenen Datensätze gezählt

Mit max(id) AS max wird der letzte Autoincrementwert der id (id kann bei dir auch ein anderer Feldname sein) ermittelt, liegt in max vor.

Wenn also total > 5 ist dann lösche ansonsten ja nicht nötig.
Ich selbst würde mir übrigens den Aufwand nicht machen.

Die angebliche Belastung von Mysql ist derart minimal das man normal nicht darüber reden müsste.
Mit Zitat antworten
  #9 (permalink)  
Alt 05-08-2009, 21:31
activexactive
 Registrierter Benutzer
Links : Onlinestatus : activexactive ist offline
Registriert seit: Aug 2009
Beiträge: 37
activexactive befindet sich auf einem aufstrebenden Ast
Standard

ok, danke piratos..

okay abraxax

nun ja, ich habe allerdings einen zeitstempel.
stimmt..an den zeitstempel hab ich noch garnicht gedacht. ist allerdings eine art das so umzusetzen. das problem nur daran ist. hat ein profil 5 besucher gehabt und wurde zwischenzeitlich 2 wochen lang nicht besucht dann löscht er ja praktisch den gewählten zeitraum von sagen wir mal ca 2 tage..daher..alle einträge sind dann wech...

und.. wenn der user halt noch keine besucher hatte, hatte er eben noch keine..dann wird einfach gesagt "keine besucher" oder garnix anzeigen lassen.---werbung---

ich werd mich mal an die version von piratos versuchen. mal sehen ob ich damit erfolg hab.

falls ich scheitere meld ich mich noch mal oder ich benutzt diese variante.

ich lege 5 datensätze fest ohne das diese inkrementiert werden und lass die idßs eben nach unten rutschen.. keine ahnung..ist auch nicht sehr elegant die lösung..kann doch ned so schwer sein *lach
Mit Zitat antworten
  #10 (permalink)  
Alt 06-08-2009, 13:08
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von activexactive Beitrag anzeigen
... das problem nur daran ist. hat ein profil 5 besucher gehabt und wurde zwischenzeitlich 2 wochen lang nicht besucht dann löscht er ja praktisch den gewählten zeitraum von sagen wir mal ca 2 tage..daher..alle einträge sind dann wech...
Nach wieviel Tagen Inaktivität eines Users wird dieser aus der DB entfernt/gesperrt/angeschrieben? Nimm diesen Wert auch zum Löschen.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #11 (permalink)  
Alt 06-08-2009, 16:56
activexactive
 Registrierter Benutzer
Links : Onlinestatus : activexactive ist offline
Registriert seit: Aug 2009
Beiträge: 37
activexactive befindet sich auf einem aufstrebenden Ast
Standard

wird garnicht gelöscht. ich verwende die time funktion nur um anzuzeigen wann der profilbesucher das profil zuletzt aufgerufen hat. ich will das aber auch nicht unbedingt zeitabhängig machen.

profile werden auch nicht gesperrt und angeschrieben. diese funktion habe ich mir noch nicht geschrieben.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nur in den letzten 10 Sekunden! Speedy19102000 HTML, JavaScript, AJAX und CSS 2 01-06-2007 15:39
[Funktion] Ausgabe der 3.-Letzten bis 6-Letzten Einträge dabri PHP Developer Forum 3 20-11-2005 16:40
die letzten geb.tage ermitteln s.roettger PHP Developer Forum 7 29-03-2005 18:28
select LIMIT 0,10 und trotzdem gesamt rows ohne limit anzeigen? westberlin SQL / Datenbanken 7 07-08-2003 09:39
letzten 5 Wochen Berni SQL / Datenbanken 4 04-12-2001 20:29

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:58 Uhr.