Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Fehlermeldung bei einem doppeltem Eintrag in MSSQL mit PHP

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

01.09.2011 um 21:11 Uhr, 3389 Aufrufe, 5 Kommentare

Hallo,

Ich habe ein Formular wo ich Daten in eine MSSQL DB schreibe.
Jetzt hätte ich gern das wenn ich in dem Feld Auftragsnummer schon eine Nummer
vergeben wurde oder schon existiert. Dann sollte ein Fenster kommen mit Auftragsnummer schon
vergeben.

Wie macht man das am besten? Oder
nach welchen funktionen sucht man da im Internet?
Mitglied: Biber
01.09.2011 um 21:56 Uhr
Moin helmuthelmut2000,

das ist wie im richtigen Leben eher eine Frage der Strategie und der persönlichen Vorlieben.

Grundsätzlich gibt es für dein Problem je nach Charakter des zusammenschroters die Varianten:

a) "der kleine Postbeamte" -> das Feld "Auftragsnummer" bei Eingabe eines neuen Satzes einzeln vorab eingeben lassen, sofort danach in der DB-Tabelle danach suchen und ggf eine "Diese Nummer gibt es schon!" -Meldung bringen - und das Eingeben in einer Endlosschleife, bis eine gültige nummer eingegeben wurde

b) "Versuch macht klug" -> den kompletten neuen Satz erfassen lassen und zur Datenbank schicken --> wenn von der eine Primary-Key-Constraintverletzung (also eine abprüfbare Fehlernummer) kommt --> dann halt eine Meldung "Doppelte Nummer"

c) "Bitte eine Nummer ziehen" -> Du (bzw dein Programm) ermittelt die nächste "freie" Nummer (höchste vorhandene plus 1 oder so) und zeigt sie als "nur-Lese-Feld" an.


Zu welcher Strategie würdest du denn am Ehesten neigen?

Grüße
Biber
Bitte warten ..
Mitglied: helmuthelmut2000
02.09.2011 um 12:11 Uhr
Hallo,

Ich würde Strategie b nehmen.
Denn Normalerweise wird keine Doppelte Nummer vergeben.
Nur bei einem Tippfehler.

Gruß
Helmut
Bitte warten ..
Mitglied: Guenni
03.09.2011 um 18:35 Uhr
@helmuthelmut2000,

Jetzt hätte ich gern das wenn ich in dem Feld Auftragsnummer schon eine Nummer
vergeben wurde oder schon existiert. Dann sollte ein Fenster kommen mit Auftragsnummer schon
vergeben.

Hi,

Also ich hätte gerne eine Anwendung, mit der man effizient arbeitet, und nicht eine, die Rate mal mit Rosenthal mit mir spielt.


Mal im Ernst. Ich würde die manuelle Eingabe einer Nummer durch Anwender nicht zulassen, sondern entweder die AutoWert-Funktion einer DB verwenden,

oder eine eigene Funktion schreiben, die Auftragsnummern generiert.

Siehe => https://www.administrator.de/Tabellen_IDs_validieren_und_generieren_mit_ ...

Das Script holt die letzte(höchste) Nummer einer Tabelle, schneidet die Prüfziffer (letzte Ziffer) ab, generiert eine neue Nummer, berechnet die

Prüfziffer und hängt diese an die neue Nummer dran. Das Textfeld, das die neue Nummer anzeigt, wird beim Laden disabled, so dass die

Nummer nicht verändert werden kann. Zusätzlich ist eine Testfunktion eingebaut: Man gibt eine Nummer ein und das Script berechnet die erwartete

Prüfziffer. Ist diese falsch, so bräuchte z.B. eine DB-Abfrage gar nicht erst gestartet werden, weil die Nummer ungültig ist.



Mehr über Prüfziffern und deren Berechnung => http://www.bundesbank.de/download/zahlungsverkehr/zv_pz200909.pdf


Viel Erfolg
Gruß
Günni
Bitte warten ..
Mitglied: helmuthelmut2000
03.09.2011 um 19:14 Uhr
Hallo,

Nein, das geht nicht so.
Ich habe schon eine Nummer die eine Auftragsnummer ist.
Die ist auch nicht Fortlaufend.

Das ist einfach eine Zahl z.B. 0815 und die wird in ein Textfeld eingegeben.
Dann wird das Formular abgeschickt, und wenn es die zahl 0815 schon in der
Spalte Auftragsnummer gibt, dann sollte eine Meldung kommen: Nummer 0815 schon
vergeben.
Das nächste Mal ist das vielleicht die Nummer 4711.

Geht so was oder nicht?
Bitte warten ..
Mitglied: Guenni
05.09.2011 um 23:01 Uhr
@helmuthelmut2000,

Geht so was oder nicht?

Na klar. Du sorgst dafür, dass in der entspr. Spalte nur eindeutige Werte vorkommen dürfen.

Bei MySQL z.B. "Alter table 'tabellenname' add unique 'keyname' ('spaltenname')". Für MSSQL

such also mal nach der Syntax.

Gibt die DB dann einen Fehler zurück, so kannst du eine entspr. Meldung ausgeben. Z.B. so:

01.
<?php 
02.
/* 
03.
* Die Funktion legt einen neuen Datensatz an. 
04.
* Bei Mißerfolg wird eine Exeption "geworfen" und false zurückgegeben. 
05.
*/ 
06.
function neuer_wert($param) { 
07.
    $query="insert into test2 values('$param')"
08.
		$result=@mysql_query($query); 
09.
		if (!$result) { 
10.
       throw new Exception("Auftragsnummer $param konnte nicht angelegt werden."); 
11.
			 return false; 
12.
13.
		return true; 
14.
15.
/* 
16.
* Versuche (try) neuen Datensatz anzulegen 
17.
*/ 
18.
$neu=817; 
19.
try { 
20.
    if(neuer_wert($neu)){ 
21.
		 echo "Auftragsnummer $neu wurde angelegt"
22.
23.
}  
24.
/* 
25.
* Bei Mißerfolg wird die in der Funktion erzeugte Exception ausgegeben. 
26.
*/ 
27.
catch (Exception $fehler) { 
28.
    echo $fehler->getMessage(); 
29.
30.
?>
Viel Erfolg
Gruß
Günni
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Doppelte Einträge mit Batch entfernen

gelöst Frage von Kugelschreiber15Batch & Shell8 Kommentare

Hallo Leute, bin grad dabei ein kleines Tool zu basteln und habe nun eine Frage! Ich suche mit Hilfe ...

PHP

Probleme mit PHP und mssql

Frage von InvisanPHP2 Kommentare

Hi zusammen, ich versuche derzeit auf eine mssql Datenbank mittels PHP zuzugreifen und eine Oberfläche zu schreiben. Generell klappt ...

Windows Userverwaltung

Mit Powershell doppelte Einträge aussortieren

gelöst Frage von arduinoWindows Userverwaltung2 Kommentare

Hallo Folgendes Szenario (via Powershell): Das Ziel ist es, dem ADUser (Spalte 1) das entsprechende Datum zu setzen. Das ...

Windows Netzwerk

Doppelte DNS-Einträge

Frage von malikaWindows Netzwerk6 Kommentare

Hallo, ich habe heute im DNS-Manager doppelten Einträge in den Reverse-Lookupzonen entdeckt: 192.168.2.108 Zeiger (PTR) pc-001.firma.local 27.10.2014 07:00:00 192.168.2.109 ...

Neue Wissensbeiträge
E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 8 StundenE-Mail3 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 9 StundenHyper-V

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 12 StundenSicherheits-Tools

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 1 TagServer-Hardware3 Kommentare

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Heiß diskutierte Inhalte
Windows Server
Mit der alten Domäneprofil anmelden ohne Server
gelöst Frage von SyosseWindows Server37 Kommentare

Hallo Jungs Folgendes Szenario: Ich habe bei einem sehr kleinen Unternehmen (2Personen) den Server migriert, soweit hat alles geklappt. ...

Sicherheits-Tools
Virenprogramm lässt Programme nicht starten
Frage von SurferGirlSicherheits-Tools23 Kommentare

Hallo, ich bin neu hier, ich hoffe ich habe die richtige Rubrik gewählt. Falls nicht, tut es mir leid. ...

Windows Server
Kann DNS-Einträge nicht finden
gelöst Frage von BPeterWindows Server19 Kommentare

Hallo, wenn ich folgenden Befehl absetze, bekomme ich eine Liste zurück mit allen Einträgen der DNS-Zone. Wenn ich aber ...

Windows Server
SQL Server Instanz (Eplan) auf WIN 2008 RC2 Server frisst RAM ohne Limit
Frage von derinderinderinWindows Server17 Kommentare

Hallo Zusammen, Wir haben hier einen Windows 2008 RC2 Server. Darauf läuft ein SQL Server Express 2014 Version 12.0.4232.0. ...