Schrift
[thread]3693[/thread]

Durch Datensätze blättern...: wie setzte ich das am besten um.



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
zipster
 2006-06-07 14:21
#34443 #34443
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

ich habe in meinem Programm 2 Buttons die zum Blättern durch Datensätze dienen sollen und ich will diese Funktion jetzt umsetzten.
Im Moment habe ich das Problem das ich nicht weiß wie ich das mit der ID lösen soll. Da ich für die ID "AUTO_INCREMENT PRIMARY KEY" nutze heißt es ja nicht gleich das wenn ich im Moment die ID 2 habe das die nächste 3 ist sondern kann unter umständen auch 5 oder 26 sein.

Deswegen meine Frage. Wie setzte ich das am besten um?

By the way: Ich hätte auch gern das wenn der letzte Datensatz erreicht ist das automatisch der erste genommen wird.


Schon mal vielen Dank für eure Hilfe.

Gruß
Seri aka Zipster
renee
 2006-06-07 14:50
#34444 #34444
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Speicher die aktuelle Nummer und dann machst Du:

[sql]SELECT * FROM table WHERE primary_key > $aktuelle_nummer LIMIT 1[/sql]
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2006-06-07 15:14
#34445 #34445
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich weiß nicht genau, was du mit blättern meinst bzw. was die ID damit zu tun hat.
blättern kannst du unter MySQL z.B. mit LIMIT, also die ersten 20 ergebnisse mit
LIMIT 0,20, die nächsten 20 mit LIMIT 20,20 usw.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
zipster
 2006-06-07 19:22
#34446 #34446
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
@renee
Funktioniert Prima. ;)


Gibt es auch ne Möglichkeit den ersten und den letzten Datensatz auszulesen?

/EDIT
Habs gefunden.
Letzter mit
Code: (dl )
SELECT * FROM kontakte ORDER BY id  DESC LIMIT 1

Erster mit
Code: (dl )
SELECT * FROM kontakte ORDER BY id LIMIT 1



Danke noch mals\n\n

<!--EDIT|zipster|1149694027-->
esskar
 2006-06-07 20:24
#34447 #34447
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
geschickterweise könntest du CPAN:DBIx::Class. Dort findest du im CPAN:DBIx::Class::ResultSet, die methoden pager und page. Damit kannst du dir die sachen extrem vereinfachen.

außerdem kommst du mit CPAN:DBIx::Class weg von den SQL-Statements im Code <- was ganz toll ist, sobald sich das Datenbank-System ändert.
ptk
 2006-06-07 22:13
#34448 #34448
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man könnte auch zuerst die Anzahl der Datensätze mit SELECT Count(*) ... feststellen (schnell!) und daraus ein SQL-Statement mit LIMIT konstruieren. Das wird bei großen Tabellen sehr langsam, jedenfalls bei MySQL 3.x
pq
 2006-06-07 23:17
#34449 #34449
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
für MySQL >=4 gibt es auch SQL_CALC_FOUND_ROWS, dann
kann man gleich beim ersten select zählen. dann spart man sich das
count(*) vorher.

@ptk: count(*) ist nur schnell, wenn man kein WHERE benutzt. und ansonsten sind statements mit LIMIT nicht
generell langsam. kommt aber drauf an, was du mit großen tabellen
meinst und wie das statement sonst so aussieht.\n\n

<!--EDIT|pq|1149707998-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2006-06-08 00:04
#34450 #34450
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Das ist schon lange her... die Idee war, Apache-Accesslogs in eine DB zu packen und per Web-Interface blätterbar zu machen. Es kann sein, dass die Probleme erst dort anfingen, wenn ich ein WHERE einsetzen musste (z.B. weil nach host oder so gefiltert wurde).

Aber generell bemerke ich, dass ein LIMIT $grosse_zahl, ... sich langsam anfühlt.
pq
 2006-06-08 01:37
#34451 #34451
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ach die geschichte mit dem accesslog. hattest du es mal mit SQLite probiert?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2006-06-08 10:20
#34452 #34452
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Nö. Ich bin auf tac, grep und less umgestiegen :-)
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-06-07 14:21.