SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.03.2003, 16:04:46
crowl crowl ist offline
Anfänger
 
Registriert seit: Mar 2003
Beiträge: 81
Abfrage von logdaten aus Datenbank

Aus einer Datenbank (beeinhaltet Logdaten) werden Daten abgefragt (was sonst ;) und mit PHP auf einer Webseite angezeigt.

Die abgefragte Tabelle beinhaltet Spalte wie Datum, IP, Event, Msg, ...

Das Datum ist dabei das wichtigste Filterkriterium. Ich möchte mir z.B. alle Logdaten von heute Anzeigen lassen.

"Select * from tabelle where datum > '2003-03-06 00:00' order by Datum desc"

Auf der ersten Seite sollen die letzten 50 erzeugten Logeinträge angezeigt werden. Ok, das bekomme ich noch hin, und zwar so:

while(db_fetch_row($res) and $counter < 50)
{
$Datum=mysql_result("Datum", $res);
$IP=mysql_result("IP", $res);
$Msg=mysql_result("Msg", $res);

echo "<tr bgcolor="#ffffcc"><td>$Datum</td>";
echo "<td>$IP</td>";
echo "<td>$Msg</td>";

$counter++;

}

Aber wie bekomme ich jetzt eine Navigationsleiste, in der man bequem auf z.B. Seite 33 springen kann, und dann die entsprechenden Daten angezeigt bekommt?

Welche Methoden sind effizient, da es sich hier ja um eine recht große Datenbank handelt?
Mit Zitat antworten
  #2  
Alt 06.03.2003, 16:40:53
Ben20
Guest
 
Beiträge: n/a
Das dürfte helfen!

http://www.f078.net/php/tutorial/php/blaettern.php
Mit Zitat antworten
  #3  
Alt 06.03.2003, 17:03:15
MiH MiH ist offline
Member
 
Registriert seit: Aug 2002
Beiträge: 775
für deine 50 einträge solltest du wahrscheinlich einfach mal limit verwenden.
"Select * from tabelle where datum > '2003-03-06 00:00' order by Datum desc limit 50"

da brauchst du keine komsichen schleifen zu bauen ;)
und dann bitte ne ordentlich schleife und nicht so ein scheiss.

Code:
while($row = mysql_fetch_array($res)){ 
echo "<tr bgcolor="#ffffcc"><td>".$row['datum']."</td><td>".$row['ip']."</td><td>".$row['msg']."</td></tr>"; 
}
ist schon etwas kürzer oder?

Geändert von MiH (06.03.2003 um 17:07:08 Uhr)
Mit Zitat antworten
  #4  
Alt 06.03.2003, 17:14:08
crowl crowl ist offline
Anfänger
 
Registriert seit: Mar 2003
Beiträge: 81
Danke Ben20, dass werde ich mir mal noch genauer anschauen.

@ MiH

Dann werden aber auch nur wirklich 50 Datensätze abgefragt, oder? Wie soll ich dann die Links zu den restlichen Seiten (mit jeweils weiteren 50 Ergebnissen) realisieren?
Mit Zitat antworten
  #5  
Alt 06.03.2003, 17:18:03
Ben20
Guest
 
Beiträge: n/a
Zitat:
Dann werden aber auch nur wirklich 50 Datensätze abgefragt, oder? Wie soll ich dann die Links zu den restlichen Seiten (mit jeweils weiteren 50 Ergebnissen) realisieren?
Das wird auch im dem Link erschlagen! Nur Kurz: Das Script gibt abhänig davon auf welcher Seite der User sich befindet einen dynamischen Wert für Limit raus

$limt = "LIMIT " . $seite * 50 . ", 50";

(den baut man dann in den SQL Query ein)


Die Links zu den Seite werden erstellt, indem Du zählst wieviele Einträge es gibt und die durch 50 teilst ( = Anzahl der Seiten)

Dann gibt man mit Hilfe einer Schleife für jede Seite einen Link in der Form aus:

<a href="bla.php4?seite=x">Zur Seite x</a>
Mit Zitat antworten
  #6  
Alt 10.03.2003, 11:58:18
crowl crowl ist offline
Anfänger
 
Registriert seit: Mar 2003
Beiträge: 81
Es funktioniert jetzt. :-)

Allerdings habe ich noch ein Problem, mit MySql funktioniert es zwar, aber nicht wenn der Zugriff per ODBC erfolgt.

Funktioniert: mysql_query("Select * from tabelle where datum > '2003-03-06 00:00' order by Datum desc limit 0,15", $db);

Funktioniert nicht: odbc_exec ($db, "Select * from tabelle where datum > '2003-03-06 00:00' order by Datum desc limit 0,15");

odbc kennt scheinbar kein limit. Als alternative habe ich bisher nur den befehl "Top" gefunden. Aber wie soll man damit "limit" abbilden können?

Ideen, Lösungsvorschläge?
Mit Zitat antworten
  #7  
Alt 25.03.2003, 12:48:49
crowl crowl ist offline
Anfänger
 
Registriert seit: Mar 2003
Beiträge: 81
für das ODBC Problem hab ich leider nichts gefunden. Hat keiner einen Rat?
Mit Zitat antworten
  #8  
Alt 25.03.2003, 15:07:46
Ben20
Guest
 
Beiträge: n/a
Du könntest das Limit weglassen und eben nur dann ausgaben machen, wenn ein entsprechend eingerichteter Counter im richtigen Bereich ist!

$anfang = 0;
$ende = 15;

while($row = mysql_fetch_row($result)) {

if($i >= $anfang && $i <= $ende) {

echo "vfjkl";

}

}

Nicht die beste Lösung, aber vielleicht hilfts!
Mit Zitat antworten
  #9  
Alt 26.03.2003, 09:21:43
crowl crowl ist offline
Anfänger
 
Registriert seit: Mar 2003
Beiträge: 81
ja, danke für dein Lösungsvorschlag. Was besseres hab ich auch nicht gefunden. Aus Performance sicht, zwar nicht das ideale, aber wenns nicht anders geht.

Für die erste Seite, hab ich noch "Select TOP 15 ..."

Das ist wesentlich schneller. Für die nächsten Seiten werde ich dann aber wohl deinen Ratschlag befolgen (müssen).
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt