Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] gelöschter Datensatz - Lücke auffüllen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] gelöschter Datensatz - Lücke auffüllen

    Der Titel ist vielleicht etwas irreführend..., tut mir Leid dafür.

    Ich habe eine Rechnungstabelle mit einem INT Feld, indem fortlaufende Nummern geschrieben werden (keine automatische Nummerierung).
    Nun könnte es passieren, das die Nummern z. B. zwischen 100 und 200 belegt sind - also 100 Datensätze fortlaufend.

    Angenommen ich lösche den Datensatz mit der Nr. 150, ensteht eine Lücke die aber automatisch wieder gefüllt werden soll wenn ein neuer Datensatz angelegt wird.

    Es gibt also Datensätze fortlaufend ab 100 bis 149 und ab 151 bis 200.

    Bei der Neuanlage von Datensätzen soll nun die 150 neu geschrieben werden und dann bei 201 weitergemacht werden.

    Um die laufende Nummer mit 100 beginnend zu ermitteln benutze ich derzeit
    PHP-Code:
      $rech           mysql_query("SELECT LFDNR,MONAT,JAHR,KDNR FROM ".$rechnung." WHERE JAHR = '".$jahr."' AND MONAT = '".$monat."'
                        ORDER BY LFDNR DESC LIMIT 1"
    ) or die(mysql_error());
      
    $r_zeile_lfnr   mysql_fetch_array($rech);
      if (
    $r_zeile_lfnr['LFDNR'] < '100')
        
    $r_lfdnr_x    '100';
      else
        
    $r_lfdnr_x    $r_zeile_lfnr['LFDNR']+'1'
    jetzt würde ich sinngemäss:
    ist Zahl < 100 mache 100
    ist 100, mache 100+1
    (Schleife)
    ist 100+1 vorhanden, zähle +1 und mache 102
    wenn nicht, mache 100+1
    ist 101+1 vorhanden, zähle +1 und mache 103
    wenn nicht, mache 100+1

    Und genau diese Schleife gelingt mir nicht.
    Dieser Versuch scheitert:
    PHP-Code:
      if ($r_zeile_lfnr['LFDNR'] < '100')
        
    $r_lfdnr_x    '100';
      else if (
    $r_zeile_lfnr['LFDNR'] == '100')
        
    $r_lfdnr_x    '101';
      else if (
    $r_zeile_lfnr['LFDNR']++ != true)
        
    $r_zeile_lfnr['LFDNR']+'1';
      else
        
    $r_lfdnr_x    $r_zeile_lfnr['LFDNR']+'1'
    Wie kann ich das umsetzen?


  • #2
    Hallo,

    vermutlich ganz interessant für dich: http://www.php.de/php-tipps-2008/448...ausfinden.html.

    Gruß
    http://hallophp.de

    Kommentar


    • #3
      Danke!

      sehr interessanter Artikel.
      Die Trennung von ID und Re.-Nr. hatte ich aus den genannten Gründen schon vorher getrennt verwaltet, aber eine Temp-Tabelle ist ne akzeptable Lösung.
      Werds gleich mal angehen.

      Kommentar


      • #4
        Speichere vorm Löschen die ID doch einfach in einer Variable und wenn du einen neuen Datensatz anlegst, bestimmt die ID selbst und nimmst die vorher gespeicherte.
        Look at This!
        Digital-Duty.DE
        Für Syntax-Fehler übernehme ich keine Haftung!

        Kommentar


        • #5
          Zwischen Löschen und wieder Anlegen können u. U. Tage verstreichen, oder hab ich Dich falsch verstanden?

          Kommentar

          Lädt...
          X