![]() |
HTML-Pläne aufteilen auf mehrere Seiten
Hallo!
Folgendes: zur Anzeige verschiedener Pläne auf einem Monitor ist es notwendig, dass man einstellen kann, wie viele Zeilen (DB-Ergebnisse) auf eine HTML-Seite gepackt werden. ![]() Je nach Auflösung passt natürlich nur eine gewisse Anzahl an Daten drauf, die auch angezeigt werden können. Nun: die max. Zahl Datensätze (z.B. 10) wird aus einer INI abgerufen und wenn nun diese Anzahl überschritten wird, soll die Datei geschlossen und eine neue angefangen werden. Doch mit den bisherigen Methoden hatte ich von mir aus immer nur Probleme (z.B. dass plötzlich Leerdateien erzeugt wurden). Die Dateien sollen dann noch im Namen durchnummeriert werden (z.B. vplan_heute_1.htm). counter: Datensätze mps: Maximum pro Seite l_count: aktuelle Seitenzahl Prüfen, ob Anzahl erreicht wurde:
Delphi-Quellcode:
if NOT (counter/mps<=1) then begin
CloseFile(Datei); l_count:=l_count+1; (...) |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Äähh, was denn für Dateien? Willst Du die Anzahl der Datensätze einschränken?
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Also: es werden beim Klick auf n Menüeintrag die oben erwähnten HTML-Pläne erzeugt.
Und wenn nun als max. 10 eingestellt ist, soll nach dem 10. Eintrag ein Schnitt gemacht werden, die Datei 'vplan_heute_1.htm' geschlossen und das Ganze in der 'vplan_heute_2.htm' fortgeführt werden. Solange, bis alle Einträge abgearbeitet und geschrieben worden sind. |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Keiner ne Idee? :(
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Ich verstehe nicht ganz, was da jetzt so schwer sein soll.
Pseudo-Code:
Delphi-Quellcode:
So in der Art könnte das gehen.
var max = 10, Zähler = 1;
begin Ergebnismenge.First; erste_Seite; while not Ergebnismenge.EOF do begin if (Zähler mod 10) = 0 then begin Seite_schließen; neue_Seite; end; Ausgabe; inc(Zähler); Ergebnismenge.Next; end; Seite_schließen; end; |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Warum klopfst Du die DB nicht ins Internet (in eine MySQL-DB) und liest das Zeugs mit PHP aus? :gruebel:
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Das hab ich mich auch schon gefragt, ist doch eine prädestinierte Anwendung für dynamische Webseiten.
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Zitat:
Es wird leider alles in eine Datei geschrieben. |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Zeig doch mal das, was Du gemacht hast. Dann können wir Dir helfen, Deinen Fehler zu finden. Der Rohbau von Detlef ist schon richtig.
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Dann zeig doch mal, wie Du es versucht hast, ist bestimmt nur ein Schusselfehler. Im Übrigen fände ich die PHP (oder Perl, ASP oder was weiß ich)-Lösung sinnvoller.
[edit] Ich ziehe mich gleich schmollend in die Ecke zurück :evil: [/edit] |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Delphi-Quellcode:
Query1.First;
[...] end else begin while not Query1.EOF do begin if ((rcount mod max_p_seite) = 0) then begin //Seite abschließen PageProducer.HTMLDoc.LoadFromFile(ExtractFilePath(ParamStr(0))+'\templates\vplan_tableend.tpl'); vplan_heute.Lines.Add(PageProducer.Content); PageProducer.HTMLDoc.LoadFromFile(ExtractFilePath(ParamStr(0))+'\templates\vplan_ende.tpl'); vplan_heute.Lines.Add(PageProducer.Content); vplan_heute.Lines.SaveToFile(dsb_exp_path+'\vplan_heute_'+IntToStr(seite)+'.htm'); seite:=seite+1; rcount:=1; //neue Seite öffnen vplan_heute.Lines.Clear; PageProducer.HTMLDoc.LoadFromFile(ExtractFilePath(ParamStr(0))+'\templates\vplan_start.tpl'); vplan_heute.Lines.Add(PageProducer.Content); Params.Values['seite'] := IntToStr(seite+1); PageProducer.HTMLDoc.LoadFromFile(ExtractFilePath(ParamStr(0))+'\templates\vplan_tabledesc.tpl'); vplan_heute.Lines.Add(PageProducer.Content); end; PageProducer.HTMLDoc.LoadFromFile(ExtractFilePath(ParamStr(0))+'\templates\vplan_vbit.tpl'); [...Bestimmen der Vertretungsvariablen...] Params.Values['klasse'] := klasse+' - #'+inttostr(rcount); Params.Values['stunde'] := stunde; Params.Values['fehlt'] := fehlt1; Params.Values['vertritt'] := vertritt1; Params.Values['fach'] := fach1; Params.Values['raum'] := raum1; Params.Values['bemerkung'] := bemerkung_leh; vplan_heute.Lines.Add(PageProducer.Content); Query1.Next; Inc(rcount); end; end; end; /edit: @ Teddy: Leider ist dies hier nicht angebracht. Das sind Monitorpläne und die Rechner, auf denen das Programm läuft, haben nicht zwangsweise Internetzugang! |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Auf den ersten Blick sind mir 2 Dinge aufgefallen:
1. müsste rcount auf 0 gesetzt werden, nicht auf 1 2. wird die letzte Seite nicht abgeschlossen. |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Wie groß ist den max_p_seite?
Ich les mir den Code schon zum dritten Mal durch und wüsste jetzt nicht, wo da was sein könnte (bis auf das, was der liebe Detlef schon sagte). Bist Du mal mit dem Debugger drübergesteppt und hast Dir die Variablen ausgeben lassen? |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Mal was anderes: wo wird der Datensatz eigentlich ausgewertet?
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Ich denk mal da, wo
Zitat:
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Keine Ahnung, ich kenne mich mit dem PageProducer nicht aus.
|
Re: HTML-Pläne aufteilen auf mehrere Seiten
Wird sowieso ein Eigengewurschtel von ihm sein.
Btw., wenn Du das ExtractFilePath(ParamStr(0)) in einer Variable abspeicherst, sparst Du Dir die Haufen Aufrufe. Obendrein wird der Code übersichtlicher. ;-) |
Re: HTML-Pläne aufteilen auf mehrere Seiten
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz