Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: An welcher stelle eines SELECT befinde ich mich?

  1. #1
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90

    An welcher stelle eines SELECT befinde ich mich?

    Hallo,

    wie finde ich heraus an welcher Stelle eines SELECT Befehls ich mich befinde?

    Ich habe eine SELECT Befehl ausgeführt und erhalte 50 von 100 Einträgen, diese
    50 stelle ich in einer Tabelle da (Schleife). Und jetzt klicke ich auf die Nr. 5 und möchte
    zu späteren Blätterfunktion wissen an welcher Stelle diese Nr. 5 sich befindet.

    Ich weiß, ich könnte immer +1 hochzählen und dann diese Nr. übergeben, aber
    kann ich nicht über ein SELECT herausfinden an welcher stelle IDX bei ORDER BY Name ASC liegt?
    So könnte ich dann über Limit die nach vorne oder nach hinten Blätterfunktion realisieren.

    Danke schon mal im Voraus.

    Gruß - Rafael

  2. #2
    TP-Senior
    Registriert seit
    Sep 2003
    Beiträge
    254
    hm... irgendwie ist mir schon klar was du machen möchtest...

    aber wie meinst du das mit "an welcher stelle"?

    ich antworte jetz einfach so drauf wie ich es mal so verstanden habe.

    du könntest einfach deine datensätze automatisch durchnummerieren lassen und dann halt jedesmal noch die nummer mit abfragen

    greetz VoltFreeze
    Vertraue niemals einem PC, den du nicht aus dem Fenster schmeißen kannst.

  3. #3
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90
    Wenn ich z.B. 100 Datensätze habe und durch ein SELECT ORDER BY ASC nur
    50 aufgelistet bekomme da diese ein Kriterium haben was ich bei select
    eingegeben haben, dann kann es sein das der Datenbanksatz 6 die Nr. 1
    und Datenbanksatz 9 die Nr.2 usw. ist. Damit ich zum nächsten Blättern kann
    muss ich wissen bei welcher Nr. innerhalb dieser Sortierung (nicht Datenbanksatz "ID")
    ich mich befinde, denn dann kann ich mit Limit den nächsten aufrufen eine Art Blättern.

    Was meinst du mit "automatisch" durchnummerieren lassen?

    Meinst du einfach in der Schleife wo die Tabelle erstellt wird? Wäre auch eine
    Möglichkeit. Hätte aber gedacht das es eine Möglichkeit gibt zu erfahren
    an welcher Stelle man sich befindet bei einer bestimmten Auswahl und Sortierung
    wenn man den z.B. Datenbanksatz 9 aufruft. Hier wäre es die Nr. 2.

    Danke im Voraus.

    Gruß - Rafael

  4. #4
    TP-Veteran Avatar von MatthiasG
    Registriert seit
    Jan 2003
    Ort
    Hallenberg/Würzburg
    Beiträge
    1.328
    verwende dieses um die gesamtzahl der datensätze deiner abfrage festzustellen
    $ergebnis steht für den resultSet

    $anzahl = mysql_num_rows($ergebnis);

    na und wenn du nun die gesamtanzahl hast, dann kannst ja einen zähler mitlaufen lassen und dann entscheiden wann du blätterst.

  5. #5
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90
    na und wenn du nun die gesamt Anzahl hast, dann kannst ja einen Zähler mitlaufen lassen und dann entscheiden wann du blätterst.
    ja aber wo ist der Anfang?

    Ich habe einmal meine erste Tabelle:
    zu sehen nur Namen (sortiert aber nach einem anderen Kriterium,
    sprich Daniel ist nicht dbID1 und Rafael nicht dbID2):

    Daniel
    Rafael
    Sascha
    Jens
    usw.

    Und wenn ich auf Sascha klicke dann möchte ich zu Sascha
    alle Details erhalten (über dbID nicht das Prob.) aber ich möchte
    nach vorne in den (innerhalb der) Details zu Rafael (innerhalb der vorher bestimmten
    Sortierung) blättern, da muss ich wissen an welcher stelle innerhalb
    der vorher erstellten Sortierung sich Sascha dbIDx befindet.

    Kann ja wirklich sein das es nur die eine Möglichkeit gibt diese sortiere
    Ausgabe mit fortlaufender Zahl zu bestücken:

    Nr1. Daniel, ID3
    Nr2. Rafael, ID1
    Nr3. Sascha, ID4
    Nr4. Jens, ID2
    usw.

    Die Nr. kann ich dann übergeben und dann über Limit die Blätterfunktion
    in den Details realisieren.

    Ich dachte nur das es möglicherweise einen Befehlt gibt der mir ausgibt
    an welcher Stelle dbIDx sich bei einer Sortierung befindet Ich wollte es
    mir einfach machen. Aber so weiß ich dass ich nicht unnötig etwas schreibe
    da es dafür einen Befehl gibt.


    Vielleicht fällt ja doch noch jemanden etwas ein

    Gruß - Rafael

  6. #6
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Du nimmst immer den gleichen SELECT-Befehl und hängst einfach ein LIMIT $offset,$anzahl_pro_seite an.
    Dann liefert Dir MySQL genau den Ausschnitt der Ergebnisdatenmenge, die Du haben möchtest.

    Wenn sich das Sortierkriterium ändert, ändert sich auch die Ergebnisdatenmenge.
    Es gibt keine feste Positionsnummer eines Datensatzes - es gibt nur die eindeutige ID.
    Ich verstehe vom Sinnzusammenhang her auch nicht, was Du wirklich vor hast.

    Wieso solte ich zunächst meinetwegen nach Vornamen sortieren, dann einen Eintrag auswählen, um ihn dann in
    einem anderen Sortierzusammenhang erneut in einer LIste zu finden?
    Wozu soll das gut sein?

    Wenn ich einen Eintrag suche, dann bin ich doch froh, wenn ich ihn gefunden habe.
    Dann will ich ihn entweder in der Detailansicht sehen, editieren oder löschen, aber doch nicht in einer
    neuen Liste finden? Sag mal ein praktisches Beispiel - vielleicht fällt uns dann noch was ein.

    Du kannst Dir natürlich die ID des Datensatzes merken und die neue Ergebnismenge danach durchsuchen.
    Das wäre dann eine Lösung innerhalb von PHP.
    Geändert von DSB (13.07.2006 um 09:57 Uhr)
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  7. #7
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90
    Ich habe eine Page gefunden die genau das macht was ich versuche zu erklären.

    Möchte aber jetzt hier keine direkte Werbung machen... es ist eine schon sehr bekannte
    Automobil Page endet mit 24 und .de

    Dort kann ich mir eine Liste nach z.B. km Stand sortieren lassen und wenn ich
    dann in die Details eines Autos gehe dann kann ich oben rechts nach vorne
    oder nach hinten weiter blättern aber immer noch bleibt die Sortierung bestehen also
    ich blätter weiter km Stand aufsteigend oder absteigend.

  8. #8
    TP-Senior
    Registriert seit
    Sep 2003
    Beiträge
    254
    tus doch einfach nach der id sortieren lassen... sort by id asc oder so
    Vertraue niemals einem PC, den du nicht aus dem Fenster schmeißen kannst.

  9. #9
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90
    Hallo,

    ich habe jetzt mit Excel etwas gebastelt.

    Die erste Tabelle ist die komplette Datenbank.
    Die zweite Tabelle die Tabellarische Ausgabe auf einer Page.
    Die dritte "Tabelle" eine Detailansicht auf einer Page.

    Und am ende möchte ich in der Detailansicht vor und zurück blättern
    wie es auf dem Bild beschrieben ist.
    (Nach ORDER BY habe ich ASC oder DESC vergessen...)



    Gruß - Rafael

  10. #10
    TP-Veteran Avatar von MatthiasG
    Registriert seit
    Jan 2003
    Ort
    Hallenberg/Würzburg
    Beiträge
    1.328
    schon mal was von assoziative arrays gehört ?
    verwende doch die.

    der schlüssel ist hierbei die lfd_nr vom datensatz und dieses verweist auf die id_deines_datensatzes.

    sollest du nun blättern z.b. vorwärts, addierst du eines zum zaehler und greifst du auf das array zu, dort findest du die id des datensatzes.

  11. #11
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Übergib beim Aufruf der Detailansicht den Offset.
    In der Detailansicht schickst Du dann den gleichen Query, wie bei der Listenansicht, aber mit LIMIT $offset-1,3

    Dann hast Du 3 Elemente in der Ergebnismenge.
    Element 0 ist der Vorgänger, Element 1 der aktuelle Datensatz zur Detailansicht und Element 2 der Nachfolger.
    Setze wieder den Offset hinter jeden Blätternlink und schon klappt es.
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  12. #12
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90
    @mg_666
    Leider habe ich noch nie was von assoziative arrays gehört aber soweit ich dich
    verstehe ist es genau das was ich brauche (dann brauche ich wie du schon sagst addieren
    oder subtrahieren und schon habe ich die blätterfunktion realisiert). Werde mich mal
    schlau um die assoziative arrays machen (hört sich nur nach den ersten googeln etwas kompliziert an).


    @DSB
    Das wäre jetzt die einfachste Lösung für mich, nur wie finde ich den $offset heraus um den zu senden?
    Ist der immer automatisch vorhanden?

    Gruß - Rafael

  13. #13
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Der Offset ist natürlich nicht automatisch vorhanden.
    Den baust Du mit in den Link ein.

    Bei der Ausgabe der Liste zählst Du meinetwegen $i von 0 hoch und hängst an den Link zur Detailansicht '&offset='.$i an.
    Schon hast Du Deinen Offset.

    In der Detailansicht nimmst Du den Offset dann mit z.b: intval($_GET['offset']) entgegen.
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  14. #14
    TP-Member
    Registriert seit
    May 2002
    Ort
    NRW
    Beiträge
    90
    Mit dem Offset habe ich es nun endlich hinbekommen

    Jetzt ist das zurück und vorblättern innerhalbt einer vorher festgelegten Spalte möglich. Jupi

    Danke nochmal.

    Gruß - Rafael

  15. #15
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Prima.

    Glückwunsch.

    Macht Spaß wenn es dann so klappt wie man will, gell?
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

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

Aktive Benutzer

Aktive Benutzer

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

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51