Adresse hinzufügen und bearbeiten ?

  • Hallo, (leider) nochmals ich ... :D



    Wie soll ich vorgehen, wenn ich jetzt bei den Buttons (neue Adresse und bearbeiten) anklicke damit ich eine neue Adresse hinzufüge bzw. damit ich schon bestehende Adresse/Name bearbeiten kann.



    Ich habe mir erst einen User (in diesem Fall Mustermann Hans) erstellt zum Testen per:

    PHP
    $_SESSION["user-id"] = 1;



    Ich habe per JOIN die Tabellen zusammengefügt (Ergebnis sieht man auf der Foto unten)

    PHP
    $sql = "SELECT * FROM kundenadresse
    		JOIN kunde ON kundenadresse.fk_kunde = kunde.idkunde WHERE fk_kunde = '".$_SESSION['user-id']."'";
    		$resource = mysqli_query( $conn, $sql );
    		while( $adresse = mysqli_fetch_assoc($resource) ){
    			echo $adresse['strasse'].' '.$adresse['nummer'].'<br /> '.$adresse['plz'].' '.$adresse['ort'].'<br/><br />';
    				}
    
    					echo mysqli_error($conn);


    Aber was mich schlussendlich interessiert... wie muss ich vorgehen damit der User seine Daten selber bearbeiten kann und damit er eine neue Adresse hinzufügen kann, das alles sollte natürlich in meine erstellte Datenbank wandern/sich ändern.


    Hier unten habe ich ein Foto hochgeladen wie das funktionieren sollte.


    Ich überlege mir gerade ob ich zum Daten ändern mit: update set arbeiten muss ?
    Und um eine neue Adresse hinzufügen mit: insert into values ?


    Nun leider sehe ich jetzt keinen logischen sinn, wie soll ich das verknüpfen. :whistling:



    Danke.

  • Hi,
    was du im Endeffekt moechtest, sind zwei verschiedene Befehle: einmal moechtest du einen neuen Nutzer anlegen, ein anderes mal moechtest du Daten eines Nutzers aendern.
    Fuer beides brauchst du unterschiedliche SQL Befehle.


    Hier zum neu anlegen (man kann auch spalten ueberspringen ^^):

    SQL
    INSERT INTO `tabellenname` SET `spalte1` =  'wert1', `spalte2` = 'wert2', `spalte4` = 'wert4'


    Und hier zum aendern:

    SQL
    UPDATE `tabellenname` SET `spalte1` = 'wert1' ... WHERE `spalteX` = 'wertX'

    Hier muss man also eine bestimmte Spalte auf einen Wert pruefen, sonst werden ALLE Spalten geandert!


    Werte validieren, uebergeben und Befehl ausfuehren wie gewohnt mit PHP. PDO ist dafuer am besten (schliesst SQL Injections aus), aber du kannst natuerlich auch weiter mit mysqli arbeiten, nur muss man da auf saubere Validierung und Maskierung achten. Ist aber fuer Uebung wahrscheinlich sogar besser :thumbup:


    Und fuer das Verknuepfen: Logisch gesehen hast du zwei grundverschiedene Befehle. Trenne sie doch einfach auch im Code logisch! Ein Formular mit eigener Funktion fuer das Neu erstellen, und ein anderes fuer das Aktualisieren.
    Dann brauchst du in jeder Funktion nur eine SQL Variante. Das Validieren ist dann nochmal was eigenes, dass kann wieder in eine eigene Funktion ausgelagert werden (DRY Coding).


    Natuerlich geht auch sowas (Pseudocode):

    Viel Spass!

  • Igendwie kommt mir hier was komisch vor.
    Du fragst nach insert oder update, hast aber Tabellen mit foreign keys (fk?) und joinst an Tabellen ran, was ja schon in Sachen SQL fortgeschritten ist?
    Kein Vorwurf, nur ungewöhnlich.


    Zum Thema:
    Wenn der Datensatz, also der Benutzer, schon existiert, dann UPDATE SET ... .
    Wenn er noch nicht existiert, dann INSERT INTO ... .


    Um nicht vorher prüfen zu müssen, ob der Benutzer schon existiert, kannst Du auch


    Vorraussetzung für ON DUPLICATE KEY UPDATE ist, dass die idkunde einzigartig ist. Also vom INDEX typ UNIQUE, oder PRIMARY KEY (= unique).


    ON DUPLICATE KEY UPDATE heißt:
    wenn ein Schlüssel schon existiert, dann update ...


    ... ich sehe gerade The Scout hat ja auch schon was geschrieben :D
    ... bin bissl langsam heute :p

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!