php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-10-2006, 15:16
Pepy
 Newbie
Links : Onlinestatus : Pepy ist offline
Registriert seit: Oct 2006
Beiträge: 6
Pepy ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit ID, auto_increment, Daten bearbeiten

Hallo zusammen,

ein neues Problemchen. Ich habe ein kleines Formular entwickelt, mit dem ich neue Termine in meinem Kalender eintragen kann. Das sind vier Felder, die ich wie folgt in eine Tabelle "Termine" eintrage

Code:
$eintrag = "INSERT INTO Termine (startdatum,enddatum,titel,beschreibung) VALUES
('$startdatum','$enddatum','$neutitel','$neubeschreibung')";
Das funktioniert auch prima. Nun habe ich da ein weiteres Feld ID mit auto_increment, so dass jeder neue Eintrag eben eine eigene ID bekommt. Das funktioniert auch.

Weiter habe ich eine Funktion, mit der ich Einträge aus der Tabelle entfernen kann. Das mache ich mit folgenden Code:

Code:
mysql_query("delete from Termine where ID='$delid'");
Das funktioniert auch. So weit so gut bis hierher.
Wenn ich nun z.B. 10 Einträge habe, habe ich also die ID's 1 bis 10. Nun lösche ich den Eintrag, der die ID 5 hat. Wenn ich mir nun das nächste mal die Daten anzeigen lassen, habe ich in einer Spalte die ID's stehen. Da erscheint dann ja 1,2,3,4,6,7,8,9,10. Wenn ich dann einen neuen Eintrag hinzufüge, bekommt der die ID 11.
Rein funktional ist das ja alles kein Problem. Das funktioniert ja prima, aber irgendwie finde ich das unschön. Ich würde das nun gerne so gestalten, dass wenn ich einen Eintrag lösche, die nachfolgenden Einträge quasi eine neue ID bekommen und zwar, dass die dann eben alle einen zurück rutschen, so dass ich dann nicht 1,2,3,4,6,7,8,9,10,11 habe nach einem gelöschen und dann einem neu eingefügten Eintrag, sondern dass wenn ich einen Eintrag lösche, z.B. mit der ID fünf, dass das dann so aussieht 1,2,3,4,5,6,7,8,9 anstatt 1,2,3,4,6,7,8,9,10.
Ich lese nun die Datensätze aus. Wenn ich nund auf die ID stoße, die eins größer ist, als die ID, die geläscht wurde, wird sie um einen verringert. Allerdings weiß ich nun nnicht, wie ich dann die neue ID wieder an den entsprechnden Platz eintragen soll. Um auf das Beispiel von oben zurück zukommen. Der IEntrag mit der ID 5 wurde gelöscht, der nächste Eintrag hat die ID 6, dessen ID wird um eins verringert und soll nun an die Stelle geschrieben, wo vorher die 6 stand.
Ist sicher ien wneig verwirrend geschrieben, aber ich hoffe man kann da durchblicken.
Mein bisheriger Code zum Auslesen sieht wie folgt aus.
Code:
if ($order=="") {$order="startdatum"; $dir="DESC";}
$abfrage = "SELECT * from Termine ORDER BY $order $dir";
$ergebnis = @mysql_query($abfrage); 
// Solange nicht alle Datensätze aus der Tabelle durchlaufen wurde, läuft die Schleife
while($row=@mysql_fetch_array($ergebnis))
{                                                                                     
  // Wenn nun die aktuelle ausgelesene id eins größer ist, als die id des
//Eintrags welcher gelöscht wurde, wird von dieser id
  // einer abgezogen
  if(($delid+1) == $row['id'])
  {
      $newid= $row['id']-1;
  }    
  // Diese neue id wird dann in die Datenbank eingetragen
  
}/* while($row=@mysql_fetch_array($ergebnis)) */
Also ich weiß nciht, wie ich die neue ID dann an den alten Platz schreiben kann.

Gruß
Sven
Mit Zitat antworten
  #2 (permalink)  
Alt 28-10-2006, 15:21
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

ein ID feld ist dazu da, einen datensatz auch eindeutig zuzuordnen. stelle dir vor du arbeitest mir weiteren tabellen, in denen die ID verwendet wird. willst du dann alle tabellen auch entsprechend ändern, du damit es für dich schöner aussieht?

wenn du die ID dazu verwendest um den einträgen eine nummer voranzustellen, dann lassen einen zähler in PHP bei der ausgabe mitlaufen. ansonsten ist das totaler schwachsinn.

aber damit du dann aus eigenen fehlern lernst ....

Code:
UPDATE tabelle SET id = id - 1 WHERE id > 5
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 28-10-2006, 15:52
Pepy
 Newbie
Links : Onlinestatus : Pepy ist offline
Registriert seit: Oct 2006
Beiträge: 6
Pepy ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

klar, so rein funktional macht das ja nicht wirklich einen Sinn die ID's zu ändern. Nun gut. werde mir das dann trotzdem einfach mal anschuen und ein wenig rumprobieren. Kann man sicher trotzdem noch was dabei lernen.

Vielen Dank.


Gruß
Sven
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:34 Uhr.