Ergebnis 1 bis 10 von 10

Thema: Nummerieren der Datensätze

  1. #1
    Unregistriert
    Gast

    Standard Nummerieren der Datensätze

    Hallo zusammen,

    ich habe ein kleines Problem. Um es einfacher zu machen nur die wichtigsten Spalten der Tabelle: Position (Int) und Text (Text).

    Man kann über eine Eingabemaske die Position und den Text frei eingeben.

    Jetzt mein Problem:
    Wenn man bei Position z.B. die Nummer 2 eingibt, möchte ich, dass diese nur einmal vorhanden sein sollte. Also das die Position der anderen Datensätze entsprechen um 1 erhöht werden, z.B.
    Datensatz 1 -> Position 1
    Datensatz 2 -> Position 2
    Datensatz 3 -> Position 3

    Wenn jetzt bei Datensatz 4 -> Position 2 eingegeben wird sollte es dann so aussehen:
    Datensatz 1 -> Position 1
    Datensatz 4 -> Position 2
    Datensatz 2 -> Position 3
    Datensatz 3 -> Position 4

    Ich denke schon eine geraume Zeit über das Problem nach und habe auch schon die große Suchmaschine befragt, aber irgendwie nicht ein passende Lösung gefunden.

    Für eine Tipp wäre ich echt dankbar.

    Gruß Uwe
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    König(in) Avatar von crAzywuLf
    Registriert seit
    03.02.2009
    Beiträge
    1.175
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    Du legst eine neue Spalte an z.B. "order_id" und sortierst die Datensätze danach.
    Wenn du einen neuen Datensatz anlegst holste dir einfach den höchsten Wert aus order_id mit MAX(`order_id`)
    und beim ändern der Position tauscht du die Werte aus.

    EDIT:
    wenn du dafür schon eine Spalte hast, dann kannst du die natürlich auch nehmen
    Gruß crAzywuLf

  3. #3
    Meister(in)
    Registriert seit
    27.03.2009
    Ort
    Berlin
    Beiträge
    278
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    Zitat Zitat von Unregistriert Beitrag anzeigen
    Jetzt mein Problem:
    Wenn man bei Position z.B. die Nummer 2 eingibt, möchte ich, dass diese nur einmal vorhanden sein sollte. Also das die Position der anderen Datensätze entsprechen um 1 erhöht werden
    Das beschreibt doch sehr schön die ID mit einem Auto_Increment.

  4. #4
    Forum Guru
    Registriert seit
    13.01.2005
    Ort
    Schweiz
    Beiträge
    5.240
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    Nicht wirklich, er will einfach, dass die Position nur einmal vorkommt und er will sie austauschen können. Dafür ist eine Positionsspalte angebracht, eine unique/auto_increment Spalte eignet sich hierfür nicht - man tauscht keine ID's. Er sollte eine seperate ID Spalte haben.
    Geändert von phore (19.05.2009 um 10:53 Uhr)

  5. #5
    Unregistriert
    Gast

    Standard AW: Nummerieren der Datensätze

    Hallo,

    in der Tabelle gibt es ein Feld AutoID mit Auto_Increment, die ich natürlich nicht ändern möchte. Vielleicht zur Erklärung, ich möchte mit dem Feld Position die Sortierung der Ausgabe erreichen. Also wenn der Anwender der Meinung ist, dass der Inhalt von Datensatz 15 mit der Position Nummer 15 nicht mehr an 15. Stelle auftauchen soll, sondern an Stelle 3. Stelle sollten die Datensätze mit der Position 3 bis 14 entsprechend um 1 weiter nummeriert werden.

    Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.
    (Ein Schwabe kann alles außer Hochdeutsch, und in meinem Fall kommt dieses Problem noch dazu

    Gruß Uwe

  6. #6
    Forum Guru Avatar von driver
    Registriert seit
    10.04.2006
    Alter
    34
    Beiträge
    20.729
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    dann is schon die lösung von wulf die beste. neues db-feld einfügen und
    dort dann die jeweilige position eintragen. über ne sql-abfrage musst dann
    halt rausfinden welche datensätze größer als die eingabe sind und die dann
    um 1 hochzählen.

    des id feld is ungeeignet da es a) automatisch und b) fortlaufend befüllt wird.
    >> die icq-schreiberlinge bitte dies hier beachten



    1679 entdeckte Gottfried Wilhelm Leibniz das Binärsystem, bei einem Gespräch mit seiner Mutter: "Ja..., Nein..., Nein..., Nein..., Ja..., Ja..., Nein..."

  7. #7
    Meister(in) Avatar von Afrael
    Registriert seit
    26.04.2009
    Ort
    NRW
    Alter
    26
    Beiträge
    313
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    Ich verstehe den Sinn der ganzen Konstruktion nicht wirklich, aber okay. Auf dein erstes Beispiel bezogen
    Du machst ein
    UPDATE tabelle SET order_id=order_id+1 WHERE order_id >= 2
    Das verschiebt alle Datensätze von 2 bis zum Ende der Tabelle quasi um eins nach hinten. Dann setzt du Datensatz 4 mit der order_id 2 ein.
    Hoffe, ich habe die Frage richtig verstanden.
    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.

  8. #8
    Forum Guru
    Registriert seit
    13.01.2005
    Ort
    Schweiz
    Beiträge
    5.240
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    Am einfachsten sind Positions-Sortierungen wenn du auf das ganze neu-"berechnen" verzichtest und einfach einen direkten Tausch machst, also die Position von einem Element mit der eines anderen Elements austauschst (die Lösung von Crazywulf).

  9. #9
    König(in) Avatar von crAzywuLf
    Registriert seit
    03.02.2009
    Beiträge
    1.175
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Nummerieren der Datensätze

    Zitat Zitat von phore Beitrag anzeigen
    Am einfachsten sind Positions-Sortierungen wenn du auf das ganze neu-"berechnen" verzichtest und einfach einen direkten Tausch machst, also die Position von einem Element mit der eines anderen Elements austauschst (die Lösung von Crazywulf).
    jipp
    PHP-Code:
    <?php
    $oid_eins 
    5;
    $oid_zwei 3;
    mysql_query("UPDATE `tabelle` SET `order_id` = '$oid_zwei' WHERE `order_id` = '$oid_eins'");
    mysql_query("UPDATE `tabelle` SET `order_id` = '$oid_eins' WHERE `oder_id` = '$oid_zwei'");
    ?>
    oder:

    PHP-Code:
    <?php

    $eintrag_id 
    35;
    $eintrag_oid 5;
    $neue_oid 3;
    if(
    $eintrag_oid != $neue_oid)
    {
        if(
    $eintrag_oid $neue_oid)
        {
            
    mysql_query("UPDATE `tabelle` SET `order_id` = `order_id` + 1 WHERE `order_id` >= '$neue_oid'");
            
    mysql_query("UPDATE `tabelle` SET `order_id` = '$neue_oid' WHERE `id` = '$eintrag_id'");
        }
        else
        {
            
    mysql_query("UPDATE `tabelle` SET `order_id` = `order_id` - 1 WHERE `order_id` <= '$neue_oid'");
            
    mysql_query("UPDATE `tabelle` SET `order_id` = '$neue_oid' WHERE `id` = '$eintrag_id'");
        }
    }

    ?>
    Geändert von crAzywuLf (19.05.2009 um 11:45 Uhr)
    Gruß crAzywuLf

  10. #10
    Unregistriert
    Gast

    Standard AW: Nummerieren der Datensätze

    Hallo,

    danke für die schnellen und hilfreichen Anregungen. Ich habe das jetzt so gelöst:

    $sql = "UPDATE $tabelle SET Position = Position + 1 WHERE Position >= $Position";

    wobei $Position aus meinem Formular übergeben wird (gewünschte Position).

    Einziger Schönheitsfehler ist, dass keine fehlenden Nummern erkannt werden und es entsprechend aufgefüllt wird, aber damit kann ich leben, da die Tabelle vielleicht max. 30 Datensätze enthält die nur sehr selten und auch nur bei Bedarf aktualisiert werden.

    Danach kommt das INSERT INTO bzw. UPDATE eines vorhandenen Datensatzes.

    Danke und Gruß
    Uwe

Ähnliche Themen

  1. Datensätze halbieren
    Von Ludger Müller im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 04.01.2008, 21:25
  2. Datensätze in ein Array
    Von Redfish im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 23.02.2007, 14:40
  3. datensätze drucken
    Von gelöschter User im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 26.03.2006, 17:15
  4. MySQL Datensätze aktualisieren, unbekannte anzahl Datensätze
    Von Blubber im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 10.08.2005, 15:19
  5. SQL-Abfrage mit Count der Datensätze
    Von tsaenger im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 18.10.2004, 09:15

Stichworte

Berechtigungen

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