Joomla MySQl-Fehler

Feld Typ Null Standard Kommentare MIME
user text Nein
name text Nein
family text Nein
pupil tinyint(1) Nein
subject text Nein
street text Nein
town text Nein
plz int(11) Nein
birthday date Nein
published tinyint(1) Ja NULL
who text Ja NULL
email text Nein
id int(11) Nein
year int(11) Nein

Die drei sind nicht angegeben und auf Null oder auto increment eingestellt

Hmm , jetzt haben wir fast alles durch nur den Fehler nicht ^^
 
Irgendwie kann ich nachts besser denken :)
Es kann ja nur zwei Feherquellen geben. Entweder der sql-Code oder es liegt an der if-Bedingung. Tausche dochmal beide Bedingungen sprich
PHP:
if(isset($id)){
     update ...
}
else{
     INSERT
}
bzw. (ohne die id-Strktur zu kennen)
PHP:
if(id==0){INSERT}
else {UPDATE}

Ansonstem wäre immer noch interessant, was rauskommt, sprich wenn du im if-Zweig ein
PHP:
var_dump($query)
reinknallst um zu sehen, was rauskommt.
Wie prüfst du in der DB, ob schon die ID vorhanden ist?
 
Ohh , so spät noch auf ? ^^ Das kann ich mir nicht leisten, dann hänge ich in der Schule durch. Das ganze soll früher oder später eine Nachhilfevermittlung für unsere Schülerfirma werden.

So , wenn ich vardump einbinde passiert garnichts ? Ich habe es so eingefügt :

PHP:
if(!isset($id))
		{
			//In die Datenbank schreiben
			
			$query = "INSERT INTO `#__auto` (`user`            ,`name` ,`pupil` ,`subject` ,`street` ,`town` ,`plz`,`birthday`  ,`email` ,`year` )
									   VALUES('$user->username','$name','$pupil','$subject','$street','$town','$plz','0000-00-00','$email','$year')";
									   
			

So , das mit dem vertauschen probiere ich auch gleich nochmal aus ;D
			  
			$db =& JFactory::getDBO();
			$db->setQuery($query);
			$result = $db->query();
			
			//test
			
			var_dump($query);



So das hab ich jetzt auch probiert

PHP:
if(isset($id)){
     update ...
}
else{
     INSERT
}

Ich habe es so umgesetzt:

PHP:
if(isset($id))
		{
			$query = "UPDATE `#__auto` SET 
											`user` = '$user->username', 
											`name` = '$name', 
											`family` = '$family', 
											`subject` = '$subject', 
											`street` = '$street', 
											`town` = '$town', 
											`plz` = '$plz', 
											`birthday` = '$birthday', 
											`email` = '$email', 
											`year` = '$year' 
					WHERE `id` = $id;";
			$db =& JFactory::getDBO();
			$db->setQuery($query);
			$result = $db->query();		
		}else
		{
			
			
			//In die Datenbank schreiben
			
			$query = "INSERT INTO `#__auto` (`user`            ,`name` ,`pupil` ,`subject` ,`street` ,`town` ,`plz`,`birthday`  ,`email` ,`year` )
									   VALUES('$user->username','$name','$pupil','$subject','$street','$town','$plz','0000-00-00','$email','$year')";
									   
			
			  
			$db =& JFactory::getDBO();
			$db->setQuery($query);
			$result = $db->query();
			
			//test
			
			var_dump($query);  
		}


Es funktioniert aber immer noch nicht , hmm ganzschön hartnäckig -.- Hasz du noch irgendeinen Tipp für mich ?

EDIt:

Wie prüfst du in der DB, ob schon die ID vorhanden ist?

Also vllt war es vorhin schlecht von mir erklärt. Ziel ist es für angemeldete Nutzer ein Frontend-Formular zu erstellen wo sie sich als Nachhilfeschüler melden können. Bei der erstmaligen Anmeldung sind alle Felder leer, denn es können keine Einstellungen aus der Datenbank geladen werden.
// Das ist auch im Moment das Problem die Erstanmelddung funktioniert nicht

WEnn ein Nutzer sich schon einmal angemeldet hat und seine Einstellungen ändern will. Geht er auf bearbeiten... Das Formular wird wieder aufgerufen, aber diesmal wird in der Tabelle gesucht ob sich schon ein Nutzer mit dem User angemeldet hat. -Hat er ja auch. Dann werden alle Einstelllungen in das Formular geladen. Die ID steht dann in einem versteckten Feld.

Die ID wird dann per POSt zum Modelübertragen.
 
Zuletzt bearbeitet:
Da hast du dir aber ein interessantes konstrukt ausgedacht.
Warum machst du es nicht mt 2 Button?

PHP:
if(isset($_POST['abschicken'])){INSERT INTO ....}
if(isset($_POST['bearbeiten'])){UPDATE ....}
 
Hmm. Aber , wenn ein Benutzer schon angemeldet ist, also in der Tabelle eingetragen ist und dann wieder auf Abschicken drückt, dann ist er ja dopppelt in der Tabelle oder ?
 
So , ich hab den Fehler jetzt endlich nach 2 Wochen gefunden ;D Und es hatte nichts mit der MySQL Aneinweisung zutuen.

PHP:
if(id != 0)
		{
			$query = "UPDATE `#__auto` SET 
											`user` = '$user->username', 
											`name` = '$name', 
											`family` = '$family', 
											`subject` = '$subject', 
											`street` = '$street', 
											`town` = '$town', 
											`plz` = '$plz', 
											`birthday` = '$birthday', 
											`email` = '$email', 
											`year` = '$year' 
					WHERE `id` = $id;";
			$db =& JFactory::getDBO();
			$db->setQuery($query);
			$result = $db->query();		
		}else
		{   
			$query = "INSERT INTO `#__auto` (`user`            ,`name` , `family`,`pupil` ,`subject` ,`street` ,`town` ,`plz`,`birthday`  ,`email` ,`year` )
									   VALUES('$user->username','$name','$family','$pupil','$subject','$street','$town','$plz','0000-00-00','$email','$year')";
									   
			
			  
			$db =& JFactory::getDBO();
			$db->setQuery($query);
			$result = $db->query();
			
			  
		}

Der Fehler lag oben bei der Bedingung. Wenn ein leeres Feld übermittelwird exestiert es und enthält den Wert 0. Das war mein Denkfehler. Ich habe gedacht leere Felder werden nicht mit übermittelt -.-

PHP:
if($id != 0){}


So , vielen Dank das du mir geholfen hast, du hast sicher auch zur Lösung beigetragen, auch wenn wir zusammen im Dunkeln getappt haben ;P
 
Nochmal auf Anfang.

D hast ein Formular. Dort können sich neue Schüler als Nachhilfelehrer eintragen. Gleichzeitig kann man auch seine Daten bearbeiten Wa? Ich hab es jetzt so verstanden, das du auf bearbeiben gehst, dich irgendwo suchst und dann alles angezeigt wird und du dann abschickst und die Werte sich ändern. Wenn du nicht auf bearbeiten gehst und sachen einträgst, dann wird ein neuer Eintrag erstellt. Die ID wird mittels eines hidden Feld (ist eine Sicherheitslücke) übertragen. Hab ich das richtig verstanden?

Wenn ja, dann wäre es interessant, wie du eine eine neue id generierst (Ich denke hier mittels auto increment oder?) Prüfst du nur, ob die ID existiert, wenn du auf bearbeiten gehst?
 
Ja , mit der Sicherheit hab ich es noch nicht so , das ist mein erstes größeres Projekt und das erste überhaupt mit Joomla. Außerdem bin ich auch erst 15 ^^.

Mit dem Projekt wollen wir Nachhilfe vermitteln, d.h.: Lehrer melden sich bei uns , SChüler melden sich bei uns.- wenn beide das gleiche Fach usw haben vermitteln wir die beiden gegen eine kleine Gebühr.

So , ich versuch dir das ganze mal anschaulich zu erklären ;D

So stell dir vor wir haben in unserer Schule Webung für unser Projekt gemacht und haben gesagt : "wenn du Interesse an Nachhilfe gehdoch auf "blabla.de", da kannst du dich als Nachhilfelehrer oder Schüler anmelden."

So der Schüler ruft unsere Seite auf, registriert sich über die ganz normale Joomla-Anmeldung. Nach der Anmeldung wird er zu dem Formular weitergeleitet. Da steht dann eine Beschreibung unseres Projektes und so weiter.
Das Formular soll so aussehen:

formular_leer.PNG


Wenn der Schüler das Formular absendet wird ein Eintrag in der Tabelle gemacht. Der Eintrag enthält unter anderem auch den Benutzernamen des aktuell angemeldeten Users. Das ermöglicht es die Einstellungen wieder in das Formular zu laden.(Über eine WHERE_Anweisung) .

So nun ist der Schüler bei uns als Lehrer oder als Schüler registriert. Nun können wir für den Schüler einen Lehrer bzw für den Lehrer einen Schüler finden. Wenn er aber nach einiger Zeit in einem anderen Fach unterrichten will oder Nachhilfe braucht, geht er wieder bei uns auf die Seite ruft das Formular auf. Jetzt kann er die Einstellungen ändern. Dabei wird die Update-Anweisung ausgeführt. Dann wird also der alte Eintrag aktualiersiert und kein neuer angelegt.

Die Verwaltung aller Schüler und Lehrer geschieht im Backend, das später einmal so aussehen soll:
backend_uebersicht.PNG


Das ist die Übersicht. Die Detailansicht eines Schülers/Lehrers sieht so aus:
backend_detailansicht.PNG






Wenn ja, dann wäre es interessant, wie du eine eine neue id generierst (Ich denke hier mittels auto increment oder?) Prüfst du nur, ob die ID existiert, wenn du auf bearbeiten gehst?

Neue ID generiere ich in dem das ID_Feld in der Tabelle auf auto_incement gesetzt ist. ALso wenn ein neuer Eintrag erstellt werden soll gebe ich bei ID nichts an -> ID wird automatisch generiert.

Ich habe nur einen Button Absenden, der betätigt das Formular dort wird dann überprüft ob Id= 0 ist, wenn ja wird ein neuer Eintrag erstellt , wenn nicht wird der alte aktualiersiert.

ich denke das mit der Id kann ich auch umgehen in dem ich das wieder mit dem Benutzernamen mache, also ich überprüfe erst ob der schon in der Tabelle existiert, wenn ja Update wenn nicht INsert Ino..
 
Zurück