SQL Daten Änderung läuft nicht sauber ab

toxic189

Lieutenant
Registriert
Jan. 2012
Beiträge
778
Hey Ho :)

Ich hab mal wieder ein Problem :) was SQL angeht, und zwar bin ich grad am rum testen für einen kommenden Auftrag und habe nun ein Problem bei dem ich nicht mehr weiter komme :/,
darum dachte ich, ich frage mal euch. :)

Mein Problem ist, ich habe eine Datenbank in der Datenbank sind Datensätze von Autos, sprich von der "ID" bis zur "sonderaustattung" so ich habe folgendes hinbekommen, einmal das er mir Alle Datensätze anzeigen soll, das er einzelne Datensätze anzeigen soll indem man dann die "Autonummer" die ich als ID gewählt hab eintippt und weiterklickt.
Dann hat es auch noch funktioniert Datensätze zu Löschen.

Nun komm ich zu dem was NICHT funktioniert bzw nicht sauber.
Und zwar vorhandene Datensätze ändern.
Ich habe es so gemacht das der User die "Autonummer" eintippen soll die ich wie schon gesagt als ID abspeicher in der Datenbank, und wenn man die gewünschte ID eintippt sollte der gewünschte Datensatz angeziegt werden und auch bearbeitbar sein.

Doch aus irgendeinem Grund kann man jede ID eintippen die vorhanden ist doch er zeigt immer nur die erste ID.
Bzw er zeigt nur den ersten Datensatz an. Und wenn man etwas verändert hat und Speichern will speichert er es nicht ab er sagt zwar erfolgreich geändert doch stimmt leider nicht.
Im Anhang findet ihr die 3 HTML bzw. PHP Dateien.


Ich danke schon im voraus.

MFG
Jelsch
 

Anhänge

Ich glaube dein Updatequery ist nicht ganz richtig.
Du sagst zwar dass er eine Änderung machen soll, aber nicht für welchen Datensatz.

Code:
UPDATE auto SET ID='$id$', bild='$bild$', ...
ist ja soweit ok, wobei ich vorschlagen würde die id nicht zu ändern, weils anscheinend der Primärschlüssel ist. Aber das ist was anderes.
hinter der letzten Zuweisung müsstest du wohl noch en WHERE anfügen.

Code:
UPDATE AUTO SET .... WHERE id='$id'
Dann ändert er die richtige Zeile.

Das gleiche gilt wohl sinngemäß bei
Code:
SELECT * FROM auto

Dort müsste auch mit WHERE die Einschränkung auf die passende ID stattfinden, denke ich.
Es sei denn du zeigst auch eine Liste aller Datesätze an.
 
Zuletzt bearbeitet:
Das irgendwas mit dem Update Query nicht stimmt war mir fast klar ;D
doch ich wusste nicht was ;)
Da dein code mich bissel verwirrt da du meintest das ich auf keinen bestimmten Datensatz mich beschränke könntest du es vlt noch ein wenig ausbauen ?! zum Verständnis? ;) wäre dir dankbar :P
 
Hi toxic189,
gemeint hatte McGyver
das du bei einem UPDATE Befehl genau angeben musst welcher Datensatz verändert wird.

In deinem Fall gibt der Nutzer ja die ID ein und du hast sie dann in der Variable $id somit wird auch nur dieser Datensatz verändert, bei dem die ID auch der ID in $id entspricht.
Übersetzt in SQL wäre das:

PHP:
$query = "UPDATE auto 
		    SET 	
			bild='$bild',
			hersteller='$hersteller',
			fahrleistung='$fahrlesitung',
			tagespauschale='$tagespauschale',
			kmpauschale='$kmpauschale',
			hubraum='$hubraum',
			kwps='$kwps',
			motorart='$motorart',
			emmisionen='$emmisionen',
			typ='$typ',
			sonderaustatuutng='$sonderaustatuutng',
                   WHERE
                        id='$id' ";
somit werden alle Werte des datensatzes mit der zuvor eingegebenen ID verändert
 
Danke @unXtremo

Ich habe durch meinen Bruder nun noch folgendes bekommen.... und zwar meinte er das man alles in schräge einfache anführungszeichen stellen soll/muss ...sprich so


PHP:
$query = "UPDATE `auto` SET 
`id`='$id', 
`bild`='$bild',
`hersteller`='$hersteller',
`fahrleistung`='$fahrlesitung',
`tagespauschale`='$tagespauschale',
`kmpauschale`='$kmpauschale',
`hubraum`='$hubraum',
`kwps`='$kwps',
`motorart`='$motorart',
`emmisionen`='$emmisionen',
`typ`='$typ',
`sonderaustatuutng`='$sonderaustatuutng';";

und dazu noch wie du auch gesagt hattest das WHERE `id`='$id'

was sagt ihr dazu ?? ich habe noch nie darauf geachtet....
 
@unXtremo

Alles klar ;) Mein bruder hat es mir nun richtig gut und einfach erklärt sowie sehr verständlich :) damit du/ihr auch was davon habt poste ich es hier mal...


Ja, bei Tabellen- und Spaltennamen solltest du die schrägen Anführungszeichen setzen, das zeugt von guten Programmierstil und führt zu keinem Fehler wenn du eine Spalte hast die z.B. `group` oder `select` oder sonst wie heißt.

Zum merken:
Tabellen oder Spaltennamen immer mit `bla`
Zeichenketten und andere Werte immer mit 'bla'
Zahlen kannst du einfach so hinschreiben: `alter` = 18

Nein, den WHERE Block brauchst du nicht über jede Spalte zu machen, das liegt immer daran was du ändern möchtest. Angenommen du hast eine Tabelle `users` mit drei Spalten:

id | vorname | nachname

Wenn du alle Benutzer updaten möchtest, die mit Nachname 'Müller' heißen, dann machst du WHERE `nachname`='Müller';
Wenn du alle Benutzer updaten möchtest, die mit Vorname 'Hans' und mit Nachname 'Müller' heißen: WHERE `vorname`='Hans' AND `nachname`='Müller';
Möchtest du alle Müller oder Schmidt in deiner Datenbank updaten, dann WHERE `nachname`='Müller' OR `nachname`='Schmidt' usw

Wenn du mehr wissen willst: http://de.wikipedia.org/wiki/SQL#Abfrage_mit_Filter



Und Nochmals danke an alle :)
 
Zurück
Oben