Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Einfügen in Datenbank

Frage Entwicklung Datenbanken

Mitglied: Sapzero

Sapzero (Level 1) - Jetzt verbinden

19.02.2009, aktualisiert 19:52 Uhr, 3514 Aufrufe, 4 Kommentare

Hi,
ich hab ein neues Problem und zwar fügt er in die datenbank immer nach dem aktualisieren neue Datensätze obwohl er das net soll.
Im Quellcode hab ich alles nähere beschrieben und auch den fehler erklärt hoffentlich kann mir einer Helfen.


01.
        // User Tabelle anlegen  
02.
        mysql_query("CREATE TABLE IF NOT EXISTS tbluser ( 
03.
	UserID INT(1) NOT NULL auto_increment, 
04.
	Nname varchar(30) character set latin1 collate latin1_general_ci NOT NULL, 
05.
	Vname varchar(20) character set latin1 collate latin1_general_ci NOT NULL, 
06.
        Passwort char(32), 
07.
        Username char(7), 
08.
	PRIMARY KEY (UserID))"); 
09.
	 
10.
	//Erfolg Tabelle anlegen in der gespeichert werden soll, wenn die User Tabelle GEUPDATED wurde 
11.
	mysql_query("CREATE TABLE IF NOT EXISTS tblerfolg ( 
12.
	ErfolgID INT(1) NOT NULL, 
13.
	Erfolg INT(1), 
14.
	PRIMARY KEY (ErfolgID))"); 
15.
	 
16.
       // Hier wird in die Tabelle Erfolg bei der Spalte Erfolg 0 eingetragen, weil amanfang noch nichts GEUPDATED wurde und somit kein ERFOLG stattfand 
17.
       mysql_query("INSERT INTO tblerfolg VALUES(1,0)"); 
18.
	 
19.
	// Hier  wird geguckt, ob in der Tabelle erfolg eine 0 für nicht GEUPDATED steht oder eine 1 für GEUPDATED und anschließend der Wert in die Variable test gespeichert. 
20.
        $test = 0; 
21.
	$erfolggucken = mysql_query ("SELECT * FROM tblerfolg"); 
22.
	//$test = mysql_fetch_object($erfolggucken); 
23.
	while($test = mysql_fetch_object($erfolggucken)) 
24.
25.
	echo $test->Erfolg."<br />"; 
26.
27.
	 
28.
	//Hier wird geguckt, ob die variable test auf 0 steht für noch nicht GEUPDATED. Wenn sie auf 1 ist soll sie es nicht machen und wenn es auf 0 steht sol es das nachführende code ausführen. 
29.
       // --->Hier ist auch der Fehler ich weis net wie ich das beheben kann. Obohl in der test variable 1 steht nach dem ersten ausführen wir trotzdem das nachfolgende ausgeführt.WIESO????  
30.
	if($test->Erfolg == 0 ) 
31.
32.
	//Hier wird ein user in die Tabelle user aufgenommen 
33.
        mysql_query("INSERT INTO tbluser (Nname, Vname) VALUES('Hans', 'Mustermann')"); 
34.
	 
35.
	//Hier wird nachdem in die Tabelle user etwas eingefügt wurde, die tabelle erfolg GEUPDATED damit sie beim nächsten mal nicht hier wieder rein kommt, weil der INSERT befehl schon ausgeführt wurde. 
36.
	mysql_query("UPDATE tblerfolg SET Erfolg = 1"); 
37.
38.
 
39.
 
40.
        //Hier wird der Username für den User festgelegt, der aus den ersten  3 Buchstaben des Vor und -Nachnamens besteht 
41.
       //Funktioniert ohne Probleme jetzt. 
42.
	$sql = "SELECT UserID, concat(left(Nname,3),left(Vname,3)) AS Username FROM tbluser WHERE Username is NULL;"; 
43.
	$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
44.
	 
45.
	while($row = mysql_fetch_object($result)) 
46.
47.
		$updateSQL = "UPDATE tbluser SET Username='$row->Username', Passwort = 1234 WHERE UserID = $row->UserID"; 
48.
		if(mysql_query($updateSQL)) 
49.
		echo " Success: UserID: $row->UserID | Username: $row->Username <br />"; 
50.
		else 
51.
		echo "Fehler bei UserID: $row->UserID | Username: $row->Username <br />";	 
52.
	}
MfG
Sapzero
Mitglied: Sapzero
19.02.2009 um 20:39 Uhr
Nach langem Probieren hab ich den Fehler gefunden aber schaff es einfach net zu beheben.
Der Fehler liegt am $test. In der while schleife enthält die variable $test ein Wert, jedoch wenn ich diesen ausserhalb der schleife ausgebe ist sie aufeinmal leer.

01.
       $erfolggucken = mysql_query ("SELECT * FROM tblerfolg"); 
02.
	while($test = mysql_fetch_object($erfolggucken)) 
03.
04.
	echo $test->Erfolg."<br />";        // <--------- enthält ein Wert (1) 
05.
        $test = $test->Erfolg;                 // <--------- enthält ein Wert (1) 
06.
07.
  
08.
       echo $test->Erfolg;                // <--------- enthält kein Wertmehr ist leer 
09.
       echo $test;                              // <--------- enthält kein Wertmehr ist leer
Kann mir einer sagen wie ich den Wert, den ich noch in der schleife habe weiter ausserhalb der Schleife nenutzen kann??
Bitte warten ..
Mitglied: Gruentee
19.02.2009 um 21:08 Uhr
Hallo!

In Java ist es so, dass Variablen, die innerhalb eines Blockes (z.B. einer while-Schleife) definiert wurden auch nur dort gelten.
Die Lösung ist einfach:
Die Variable test einfach außerhalb der Schleife definieren und ihr dann in der Schleife einen Wert zuweisen.
Zumindest in Java ist die Variable, und damit hier vielleicht ihr Wert, zugänglich.

Vielleicht hilfts.
Bitte warten ..
Mitglied: Biber
19.02.2009 um 21:35 Uhr
Moin Sapzero,

Euch Entwicklern kann man/frau es aber auch nicht Recht machen - der Schnipsel macht doch genau, was Du ihm gesagt hast....

Du hast gesagt:
"Hey, solange mysql_fetch_object() tatsächlich ein Objekt zurückliefert (nämlich einen Datensatz),
solange mach irgendwelche Dönekens mit dem Datensatz inner while-Schleife.
Wenn mysql_fetch_object() KEINEN Datensatz (und somit kein Objekt) zurückliefert, sondern ein flapsiges FALSE,
dann brauchst Du ohne Objekt in der Schleife gar nicht erst was versuchen.
Kann ja eh nix werden."

Wenn aber $test gar kein Objekt ist (sondern nur ein 0815-FALSE-Billichwert),...
-----> was bitteschön soll denn "echo $test->Erfolg;" anzeigen, um Deinen Erwartungen gerecht zu werden?

Also ich als Code hätte genauso reagiert wie von Dir beschrieben....

P.S.
Kann mir einer sagen wie ich den Wert, den ich noch in der schleife habe weiter ausserhalb der Schleife nenutzen kann??
Jepp, klar.
Speichere/kopiere den Wert "$test->Erfolg" des Datensatzes, den Du hinterher noch brauchst, in einer Variablen (vom "richtigen" Typ),
solange das Objekt $test noch existiert. Also eine Zeile unter der Zeile, in der Du jetzt den Wert "$test->Erfolg" raus-echoest.

Grüße
Biber
Bitte warten ..
Mitglied: Sapzero
20.02.2009 um 00:41 Uhr
Hi,
es lag wirklich an der Variable ich hab ne andere genommen die ich zuvor ausserhalb gesetz habe und dann $test->erfolg in die neue variable gespeichert.
Danke für eure Hilfe.

MfG
Sapzero
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Wie kann man die Standard-Schriftart bei einfügen von Text in Word 2013 festlegen? (3)

Frage von Rene1976 zum Thema Microsoft Office ...

Exchange Server
Exchange 2007 Datenbank restore ohne Exchange zu verändern - SBS2008

Frage von pitamerica zum Thema Exchange Server ...

Datenbanken
Datenbank API Automation

Link von Frank zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...