Aktueller Datensatz nach Query

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Aktueller Datensatz nach Query

    Hallo Zusammen,

    ich benötige dringend Eure Hlfe. Nach einem Select benötige ich die aktuelle Datensatznummer des gefundenen Datensatzes um ab dieser Position weiterblättern zu können ( sowohl Vor- wie auch Rückwärts )
    Das Blättern klappt generell mit MySql_Data_Seek, aber eben nicht wenn
    ich vorher die Tabelle durchsuche.

    Eine Spalte mitzuführen, die mit autoincrement hochgezählt wird ist für diese Anwendung nicht möglich, da alphabetisch korrekt geblättert werden soll.

    Bin ratlos und für jeden Hinweis dankbar
    Spider315
    Wenn ich den See seh, brauch ich kein Meer mehr.

  • #2
    ich weiss ja nicht, wie du abfragst, aber ich würde das mit LIMIT machen.

    SELECT bla FROM blubb WHERE spalte='wert' ORDER BY spalte ASC LIMIT $startwert, 1

    - für den ersten datensatz legst du einen defaultwert fest
    - für jeden neuen datensatz übergibst du einen startwert, ids brauchst du
    dazu nicht
    Kissolino.com

    Kommentar


    • #3
      Hi,
      danke für die schnelle Response - meine Abfrage geht so -

      $result=mysql_quera("Select * from Tabelle where Displayname like 'Suchbegriff%' order by DisplayName");

      Den Parameter Limit musst Du mir einwenig erklären....

      Bin seit heute im Forum - und total begeistert und hoffe das ich mich auch revanchieren kann!

      cu
      Spider315
      Wenn ich den See seh, brauch ich kein Meer mehr.

      Kommentar


      • #4
        das erklären überlass ich mal dem manual
        Die LIMIT-Klausel wird benutzt, um die Anzahl von Zeilen, die vom SELECT-Statement zurückgegeben werden, zu beschränken. LIMIT erwartet ein oder zwei numerische Argumente. Wenn zwei Argumente angegeben sind, legt das erste den Offset der ersten Zeile fest, die zurückgegeben wird, und das zweite gibt die maximale Anzahl von Zeilen an, die zurückgegeben werden. Der Offset der anfänglichen Zeile ist 0 (nicht 1):
        mysql> select * from tabelle LIMIT 5,10; # Zeilen 6 bis 15 zurückgeben
        Wenn ein Argument angegeben wird, stellt es die maximale Anzahl von Zeilen dar, die zurückgegeben werden:
        mysql> select * from tabelle LIMIT 5; # Die ersten 5 Zeilen zurückgeben
        Mit anderen Worten ist LIMIT n äquivalent zu LIMIT 0,n.
        http://www.mysql.com/doc/de/SELECT.html
        Kissolino.com

        Kommentar


        • #5
          [MySQL 4.1]

          Hi,

          den Parameter Limit habe ich jetzt so verstanden, das ich in der Ergebnissmenge weiterblättern kann, richtig?

          Konkret soll aber der Benutzer auch ab dem gefundenen Satz auch
          zurückblättern können ( das wird auch intensiv genutzt) d.h im konkreten Fall, das mit Select der erste Name mit dem Anfangsfuchstaben 'M' gefunden und angezeigt wird. Der User soll nun mit 'Zurück' der Eintrag mit dem Buchstaben 'L' erhalten.

          Was ich benötige ist also der interne Satzpointer - gibt es so etwas in Mysql? In Oracle-Sql geht das mit Select rowid where Displayname .. usw...

          cu
          Moro
          Wenn ich den See seh, brauch ich kein Meer mehr.

          Kommentar


          • #6
            Re: [MySQL 4.1]

            den Parameter Limit habe ich jetzt so verstanden, das ich in der Ergebnissmenge weiterblättern kann, richtig?
            jepp

            Konkret soll aber der Benutzer auch ab dem gefundenen Satz auch zurückblättern können ( das wird auch intensiv genutzt) d.h im konkreten Fall, das mit Select der erste Name mit dem Anfangsfuchstaben 'M' gefunden und angezeigt wird. Der User soll nun mit 'Zurück' der Eintrag mit dem Buchstaben 'L' erhalten.
            das wäre aber ne neue Abfrage, die solltest du dann einbauen

            alternativ kannst du alle datensätze abfragen, in ein array packen
            und über die indizes des arrays blättern
            Kissolino.com

            Kommentar


            • #7
              Hi,

              bin jetzt folgenden Weg gegangen.

              1) ID-Splate in die Datenbanktabelle eingefügt (ohne autoincremnet, da
              alphabetische Reihenfolge notwendig !!).

              2) Nach dem Änderungsdienst ( eigener Admin-Bereich ) wird
              das ID-Feld neu numeriert und zwar mit :

              $result = mysql_query("SELECT * From Version_2 order by AliasName");
              $satzanzahl = mysql_affected_rows();
              $satz = 0;

              while ( $satz != ($satzanzahl ))
              {
              mysql_data_seek($result, $satz);
              $daten = mysql_fetch_array($result);
              $F_Such = $daten[AliasName];
              mysql_query("UPDATE Version_2 SET ID = '$satz' WHERE Aliasname = '$F_Such' limit=1");
              $satz++;
              }

              $datenbank = MYSQL_CLOSE($db);

              Das läuft recht gut - Frage am Rande - sollte das nicht auch mit einem
              SQL-Statement ( d.h. ohne Schleife ) funken?

              cu
              Spider315

              ------------------------------

              Wenn ich den See seh brauch ich kein Meer mehr.
              Wenn ich den See seh, brauch ich kein Meer mehr.

              Kommentar

              Lädt...
              X