Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank update und set

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank update und set

    Ich bin kurz vor dem verzweifeln.
    Zu einzelnen Ausstellungsstücken sollen die Entsprechenden Termine zu unterschiedlichen Ausstellungen eingetragen werden.
    Per Hand (phpmyadmin) eingeschriebene Daten lassen sich einwandfrei auslesen.
    Jedoch mit php neue Daten hochladen oder ändern funktioniert einfach nicht!
    Hier mein Quellcode:
    PHP-Code:
        $adwId     $_POST['suchId'];           // Id des Ausstellungsstueckes
        
    $anzahl    $_POST['Anzahl'];          // Anzahl bisheriger Ausstellungen
        
    $exhibit$_POST['thisExhibit'];         // Wurde schon ein mal ausgestellt => alter / neuer Datensatz

        
    $datum[1] = $_POST['Datum_1'];      // Anfangsdatum der Ausstellung
        
    $adrId[1] = $_POST['AdressId_1'];     // Adress-Id des Ausstellers um Adresse aus Adressdatei zu lesen
        
    $redat[1] = $_POST['reDatum_1'];     // Rueckgabe des Ausstellungsstueckes

        
    if($anzahl == 2){                                // zweiter Termin
            
    $datum[2] = $_POST['Datum_2'];
            
    $adrId[2] = $_POST['AdressId_2'];
            
    $redat[2] = $_POST['reDatum_2'];
        }else{
            
    $datum[2] = "";                             // leere Positionen ausfüllen
            
    $adrId[2] = 0;
            
    $redat[2] = "";
        }    
        if(
    $anzahl == 3){                               // dritter Termin usw.bis 5
            
    $datum[3] = $_POST['Datum_3'];
            
    $adrId[3] = $_POST['AdressId_3'];
            
    $redat[3] = $_POST['reDatum_3'];
        }else{
            
    $datum[3] = "";
            
    $adrId[3] = 0;
            
    $redat[3] = "";
        }
        if(
    $anzahl == 4){
            
    $datum[4] = $_POST['Datum_4'];
            
    $adrId[4] = $_POST['AdressId_4'];
            
    $redat[4] = $_POST['reDatum_4'];
        }else{
            
    $datum[4] = "";
            
    $adrId[4] = 0;
            
    $redat[4] = "";
        }
        if(
    $anzahl == 5){
            
    $datum[5] = $_POST['Datum_5'];
            
    $adrId[5] = $_POST['AdressId_5'];
            
    $redat[5] = $_POST['reDatum_5'];
        }else{
            
    $datum[5] = "";
            
    $adrId[5] = 0;
            
    $redat[5] = "";
        }

    include (
    "zugriff.inc.php");

        if(
    $_POST['speichern'] == "Save"){
            if((
    $adwId 0) && ($exhibit == "old")){  //Abfrage ob ein Termin eingetragen ist und geändert wird
                
    $sql "UPDATE exhibit SET
                    Anzahl        = '
    $anzahl',
                    Datum[1]    = '
    $datum[1]',
                    AdressId[1]    = '
    $adrId[1]',
                    reDatum[1]    = '
    $redat[1]',
                    Datum[2]    = '
    $datum[2]',
                    AdressId[2]    = '
    $adrId[2]',
                    reDatum[2]    = '
    $redat[2]',
                    Datum[3]    = '
    $datum[3]',
                    AdressId[3]    = '
    $adrId[3]',
                    reDatum[3]    = '
    $redat[3]',
                    Datum[4]    = '
    $datum[4]',
                    AdressId[4]    = '
    $adrId[4]',
                    reDatum[4]    = '
    $redat[4]',
                    Datum[5]    = '
    $datum[5]',
                    AdressId[5]    = '
    $adrId[5]',
                    reDatum[5]    = '
    $redat[5]'
                WHERE adwId = 
    $adwId";

                
    $result mysqli_query ($link$sql);
                
    $url ="exhibit.php?mod=m&suchId=".$adrId;
                
    header('Location: '.$url);
            }else{                            
    // bisher noch kein Termin, daher neuen Datensatz anlegen
                
    $sql "INSERT INTO address (Id, adwId,  Anzahl, Datum[1], AdressId[1], reDatum[1], Datum[2], AdressId[2], reDatum[2], Datum[3], AdressId[3], reDatum[3], Datum[4], AdressId[4], reDatum[4], Datum[5], AdressId[5], reDatum[5]
                Values ('', '
    $adwId', '$anzahl', '$datum[1]', '$adrId[1]', '$redat[1]', '$datum[2]', '$adrId[2]', '$redat[2]', '$datum[3]', '$adrId[3]', '$redat[3]', '$datum[4]', '$adrId[4]', '$redat[4]', '$datum[5]', '$adrId[5]', '$redat[5]')";

                
    $result mysqli_query ($link$sql);
                
    $url ="exhibit.php?mod=n&suchId=" $adwId;
                
    header('Location: '.$url);
                echo 
    "Der Datensdatz ist ".$exhibit
    Mit einem votübergehend eingebautem Echo ... habe ich schon ermittelt ob auch die Werte per Post übertragen wurden. So weit okay.
    Das Einzige was passiert ist das Öffnen der "index.php"

    würde mich über Hilfe freuen.

  • #2
    Eine Id sollte eine eindeutige Kennung sein, diese mit einem Leerstring zu belegen, deutet auf klare Designfehler hin.
    Du musst jetzt erstmal prüfen, was bspw. $result zurückgibt. Ist das NULL, scheitert Dein INSERT.

    Kommentar


    • #3
      Dein Datenbankdesign ist kaputt.
      Du brauchst bei mehr als einem Termin pro Datensatz eine weitere Tabelle Termine. Die Verknüpfung machst du dann mittels JOIN,

      //Abfrage ob ein Termin eingetragen ist und geändert wird
      Das ist genau der Grund warum man eine 2. Tabelle braucht. Hier musst du alle Terminspalten nacheinander abfragen ob schon was eingetragen ist, hier sind es 5. In einer ausgelagerten Tabelle ist das ein mal abgefragt und du erhältst alle Termine zum Hauptdatensatz.

      Hier sieht man ein mal mehr wie wichtig es ist von Anfang an die Datenbank richtig aufzusetzen, Probleme im Nachhinein werden bei falschem Design immer weiter zunehmen, bis man bei einem Fehler später gar nicht mehr durchblickt.

      Kommentar


      • #4
        Eine Id sollte eine eindeutige Kennung sein, diese mit einem Leerstring zu belegen, deutet auf klare Designfehler hin.
        Die Id => Autoincrement

        Kommentar

        Lädt...
        X