Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte werden in der falschen Datenbank gespeichert.

Einklappen

Neue Werbung 2019

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

  • Werte werden in der falschen Datenbank gespeichert.

    Hallo PHP Gurus,

    Ich schreibe aktuell ein Backend in dem ich die Beiträge auf meinem Frontend editieren kann.

    Das ganze realisiere ich so:

    Alle Beiträge sind in der Datenbank gespeichert unter dem Menupunkt und dem entsprechend Textblock.

    zB: home_titel (Home für den Menupunkt, Titel für den entsprechenden Part auf der Seite.)

    Das Backend lädt die einzelnen Einträge der Datenbank und stellt sie im Backend mit dem betreffenden Titel und einer Textarea zum bearbeiten dar.

    Bei der Generierung verwende ich $id die später aufgerufen wird wenn der Speicher Button gedrückt wird.

    Mein aktuelles Problem ist dieses:

    Ich lade alle Datenbank Einträge nacheinander und vergebe die &id - die Punkte sind mit jquery tabs getrennt.

    Wenn ich nun den Über Titel bearbeite, wird ebenfalls der Home Titel geändert, was mich verwundert.

    durch testen habe ich gesehen das die IDs nicht fortlaufend generiert werden sondern nur für die aktuelle Anzahl der Beiträge.

    Beispiel: Home hat 3 Beiträge - Über ebenfalls 3 Beiträge.

    erwartet hatte ich das die IDs so generiert werden: 1-6 leider werden die IDs so generiert: (home 1-3) und (über 1-3).

    Das denke ich ist der Fehler?!

    könnt ihr mir weiter helfen? CODE:

    PHP-Code:
      <div id="tabs-1">
          <div class="spacer_30"></div>
                    <div class="contentBoxHead">Home</div>
                    <div class="contentBox">
        <?php
    require_once "db_daten_aktuell.php";
    $stmt $mysqli->prepare("SELECT id, titel, text FROM home"); 
      
    $stmt->execute();
      
    $stmt->bind_result($id$titel$text);
      while(
    $stmt->fetch()) {
    echo 
    "<div class='generiert'>";     
    echo 
    "<form method='post' action='home.php'>";
    echo 
    "<strong>$titel editieren:</strong> <br />";
    echo 
    "<div style='clear:both'></div>";
    echo 
    "<br />";
    echo 
    "<textarea name='text' rows='10' cols='80'>$text</textarea><br />";
    echo 
    "<input type='hidden' name='id' value='$id' />";
    echo 
    "<br />";
    echo 
    "<div class='speichern'>";
    echo 
    "<input type='submit' value='speichern' name='speichern' />";
    echo 
    "</div>";
    echo 
    "<div class='loeschen'>";
    echo 
    "<input type='submit' value='l&ouml;schen' name='loeschen' />";
    echo 
    "</div>";
    echo 
    "<br />";
    echo 
    "</form>";    
    echo 
    "<br />";
    echo 
    "</div>";
      }

      
    ?>
      
       <!----neuer artikel button--->
      
    <?php  
    echo "<div class='generiert'>";     
    echo 
    "<form method='post' action='home.php'>";
    echo 
    "<strong>Neuen Artikel anlegen:</strong> <br />";
    echo 
    "<input type='hidden' name='id' value='$id' />";
    echo 
    "<input type='submit'value='anlegen' name='anlegen' />";
    echo 
    "</form>";    
    echo 
    "<br />";
    echo 
    "</div>";
      
      
    ?>
      
      <!----speichern--->
      
     <?php
     
    require_once "db_daten_aktuell.php";
     if (isset(
    $_POST['speichern']))
    {
     
    $id = (int)$_POST["id"]; 
      
    $stmt $mysqli->prepare("UPDATE home 
            SET text=? WHERE id=?"
    ); 
        
    $text $_POST["text"];
        
    $stmt->bind_param("si"$text$id);
        
    $stmt->execute();

      }


     
    ?> 

        </div>
      </div>
      
     <div id="tabs-2">
          <div class="spacer_30"></div>
                    <div class="contentBoxHead">Ueber</div>
                    <div class="contentBox">
        <?php
    require_once "db_daten_aktuell.php";
    $stmt $mysqli->prepare("SELECT id, titel, text FROM ueber"); 
      
    $stmt->execute();
      
    $stmt->bind_result($id$titel$text);
      while(
    $stmt->fetch()) {
    echo 
    "<div class='generiert'>";     
    echo 
    "<form method='post' action='home.php'>";
    echo 
    "<strong>$titel editieren:</strong> <br />";
    echo 
    "<div style='clear:both'></div>";
    echo 
    "<br />";
    echo 
    "<textarea name='text' rows='10' cols='80'>$text</textarea><br />";
    echo 
    "<input type='hidden' name='id' value='$id' />";
    echo 
    "<input type='submit'value='speichern' name='speichern' />";
    echo 
    "</form>";    
    echo 
    "<br />";
    echo 
    "</div>";
      }

      
    ?>
      
     <!----neuer artikel button--->
      
    <?php  
    echo "<div class='generiert'>";     
    echo 
    "<form method='post' action='home.php'>";
    echo 
    "<strong>Neuen Artikel anlegen:</strong> <br />";
    echo 
    "<input type='hidden' name='id' value='$id' />";
    echo 
    "<input type='submit'value='anlegen' name='anlegen' />";
    echo 
    "</form>";    
    echo 
    "<br />";
    echo 
    "</div>";
      
      
    ?>
      
       <!----speichern--->
      
     <?php
     
    require_once "db_daten_aktuell.php";
     if (isset(
    $_POST['speichern']))
    {
     
    $id = (int)$_POST["id"]; 
      
    $stmt $mysqli->prepare("UPDATE ueber 
            SET text=? WHERE id=?"
    ); 
        
    $text $_POST["text"];
        
    $stmt->bind_param("si"$text$id);
        
    $stmt->execute();

      }


     
    ?> 

        </div>
      </div>

  • #2
    Zitat von chim Beitrag anzeigen
    Wenn ich nun den Über Titel bearbeite, wird ebenfalls der Home Titel geändert, was mich verwundert.
    Wieso wundert dich das? Woher soll das Script wissen welchen Eintrag du ändern möchtest? Du fragst beim Speichern nur ab ob $_POST['speichern'] gesetzt ist - und die Bedingung ist immer erfüllt, egal welchen Titel du bearbeitest. Aber warum sind die Einträge für »home« und für »über« überhaupt in verschiedenen Tabellen? Die gehören in eine Tabelle!

    Kommentar


    • #3
      Zitat von tk1234 Beitrag anzeigen
      Wieso wundert dich das? Woher soll das Script wissen welchen Eintrag du ändern möchtest? Du fragst beim Speichern nur ab ob $_POST['speichern'] gesetzt ist - und die Bedingung ist immer erfüllt, egal welchen Titel du bearbeitest. Aber warum sind die Einträge für »home« und für »über« überhaupt in verschiedenen Tabellen? Die gehören in eine Tabelle!
      Es wundert mich weil ich doch oben immer angebe welche Tabelle es sein soll,

      PHP-Code:
       $id = (int)$_POST["id"];  
        
      $stmt $mysqli->prepare("UPDATE home  
              SET text=? WHERE id=?"
      ); 
      auslesen klappt auch aus der richtigen Tabelle, wissen warum er neu anfängt zu zählen weiß ich leider jetzt immer noch nicht.

      Ich bin Anfänger...Mein Lösungsansatz wäre jetzt diesen Bereich, ebenfalls mit einer IF Schleife abzufragen. Geht das in die richtige Richtung?

      PHP-Code:
       $id = (int)$_POST["id"]; 
      Kann mir bitte jemand noch sagen warum er von vorne anfängt zu zählen und nicht die richtige Tabelle nutzt wobei ich diese angebe? - Ich steh auf dem Schlauch.

      Danke!

      Kommentar


      • #4
        Mach doch mal bitte ein
        PHP-Code:
        var_dump($_POST['id']); 
        vor das aktualisieren.

        Kommentar


        • #5
          Zitat von TessaKavanagh Beitrag anzeigen
          Mach doch mal bitte ein
          PHP-Code:
          var_dump($_POST['id']); 
          vor das aktualisieren.
          Durch das var_dump bekomme ich bei beiden dann auch "int(1)" als Ausgabe.

          mit einer weiteren If Verzweigung wie ich es oben sagte, passiert nur dasselbe - Ich weiß echt nicht warum das so passiert

          Kommentar


          • #6
            Zitat von chim Beitrag anzeigen
            Es wundert mich weil ich doch oben immer angebe welche Tabelle es sein soll,

            PHP-Code:
             $id = (int)$_POST["id"];  
              
            $stmt $mysqli->prepare("UPDATE home  
                    SET text=? WHERE id=?"
            ); 
            Wenn ich nochmal aus deinem ersten Posting zitieren darf:
            Zitat von chim Beitrag anzeigen
            PHP-Code:
            if (isset($_POST['speichern']))
            {
             
            $id = (int)$_POST["id"]; 
              
            $stmt $mysqli->prepare("UPDATE home 
                    SET text=? WHERE id=?"
            ); 
                
            $text $_POST["text"];
                
            $stmt->bind_param("si"$text$id);
                
            $stmt->execute();

              }
            # […]
             
            if (isset($_POST['speichern']))
            {
             
            $id = (int)$_POST["id"]; 
              
            $stmt $mysqli->prepare("UPDATE ueber 
                    SET text=? WHERE id=?"
            ); 
                
            $text $_POST["text"];
                
            $stmt->bind_param("si"$text$id);
                
            $stmt->execute();

              } 
            Du hast zwei Stellen an denen ein UPDATE ausgeführt wird, einmal für die Tabelle home und einmal für die Tabelle ueber - die Bedingungen wann der Code in den if-Blöcken ausgeführt wird sind aber identisch womit immer beide Blöcke ausgeführt werden wenn was geändert werden soll.

            auslesen klappt auch aus der richtigen Tabelle, wissen warum er neu anfängt zu zählen weiß ich leider jetzt immer noch nicht.
            Du hast zwei Tabellen deren IDs unabhängig voneinander hochgezählt werden - ich schrieb in #2 schon dass zwei Tabellen falsch sind, schreibe alles in eine Tabelle!

            Kommentar

            Lädt...
            X