Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten in DB nur speichern wenn von bestimmter Seite kommend

Einklappen

Neue Werbung 2019

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

  • Daten in DB nur speichern wenn von bestimmter Seite kommend

    Hallo zusammen,

    ich habe ein Problem mit dem folgenden Code und zwar soll ein Profil bearbeitet werden, wobei die auf der vorigen Seite eingegebene Daten in der Datenbank gespeichert werden sollen.
    Da der Befehl auf der Profilseite des Nutzers ausgeführt wird, soll dieser nur ausgeführt werden, wenn man von Profilbearbeitung kommt.

    Kann mir jemand weiterhelfen?

    Code auf Profilbearbeitung:

    PHP-Code:
                <form action="DeinProfil.php" method="post">

    <
    tr>        <tdTitel &nbsp&nbsp <input type="text" name="titel" value=" " size="30" ><br> </td>
    </
    tr>
    <
    tr>        <tdAutor &nbsp <input type="text" name="autor" value=" " size="30" ><br> </td>    
    </
    tr>    
    <
    tr>        <tdVerlag <input type="text" name="verlag" value=" " size=30" ><br> <p> </td>
    </tr>
    <tr>        <td> <b> Genre: </b> </td>
    </tr>
    <tr>        <td>
                    
                    <input type="
    radio"name="Genre" value="fantasy&sciencefiction" > Fantasy&Sciencefiction  <br> <input type="radio"name="Genre" value="roman" > Roman  <br>
                    <input type="
    radio"name="Genre" value="krimi&thriller  " > Krimi&Thriller  <br>  <input type="radio"name="Genre" value="hobbys&freizeit" > Hobbys&Freizeit&nbsp <br>
                    <input type="
    radio"name="Genre" value="sach-&fachb&uuml;cher " > Sach-&Fachb&uuml;cher <br> </td>
    </tr>
    <tr>        <td> 
    <tr>        <td> <Input type="
    Submit" value="Speichern"> <p> </td>
    </tr>
    </table>        
    </form> 


    Code auf mein Profil:

    PHP-Code:
    <?php
            
            
    if ($_POST['titel'] == "") or ($_POST['autor'] == "") or ($_POST['verlag'] == "")
                { echo 
    "<td>Bitte f&uuml;lle alle Felder aus </td>";
                    die;
                }
            
            else {
            
            
    $db mysqli_connect"localhost""...""Passwort.""Nutzername");
                    
                    
    // SQL-Statement in String speichern:
                    
    $sql "INSERT INTO buch (titel, autor,verlag) VALUES ";
                    
    $sql .= "('";
                    
    $sql .=$_POST['titel'];
                    
    $sql .= "', '";
                    
    $sql .=$_POST['autor'];
                    
    $sql .= "', '";
                    
    $sql .=$_POST['verlag'];
                    
    $sql .="')";
                    
                
    //SQL-Statement an Datenbank schicken:
                    
    $result mysqli_query($db$sql);
                    
                    
    //echo $sql;
                    //echo mysqli_error($db);
            
    }    
            
                
                
        
    ?>

    Vielen Dank schon mal!

  • #2
    Pack den INSERT Code doch auf die selbe Seite.
    http://php-de.github.io/jumpto/affenformular/

    Und du bist anfällig für Inejtion: http://php-de.github.io/jumpto/sql-injection/
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hi,

      deine Syntax ist fehlerhaft und unsauber, bspw.:

      PHP-Code:
      <tr>        <tdVerlag <input type="text" name="verlag" value=" " size=30" ><br> <p> </td> 
      Da fehlt ein " und ein öffnendes <p> ist vorhanden - warum? Warum ein <br>? Zur Positionierung verwendest du statt <br> lieber nen vernünftigen div Aufbau.

      PHP-Code:
      <input type="radio"name="Genre" value="sach-&fachb&uuml;cher " 
      arbeite mit vernünftiger Kodierung und nicht mit &uuml; usw!

      PHP-Code:
      if ($_POST['titel'] == ""
      schöner ist if(empty($_POST["titel"])){ // usw. }

      PHP-Code:
                      // SQL-Statement in String speichern:
                      
      $sql "INSERT INTO buch (titel, autor,verlag) VALUES ";
                      
      $sql .= "('";
                      
      $sql .=$_POST['titel'];
                      
      $sql .= "', '";
                      
      $sql .=$_POST['autor'];
                      
      $sql .= "', '";
                      
      $sql .=$_POST['verlag'];
                      
      $sql .="')";
                      
                  
      //SQL-Statement an Datenbank schicken:
                      
      $result mysqli_query($db$sql); 
      Bitte SQL Injection beachten!

      Zu deiner eigentlichen Frage: wenn das Formular abgeschickt wurde, prüfst du, ob der submit Button aus dem Formular abgeschickt wurde und packst da dann deine gewünschte Verarbeitung rein. Bsp.:

      PHP-Code:
      if(isset($_POST["namedeinesSubmitButtons"])){
      //weitere Verarbeitung
      //...

      Dafür musst du deinem submit Button noch einen Namen geben.

      mfg wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Ok das hat geklappt! Danke!
        Aber wenn ich jetzt Daten eingebe und auf Speichern klicke (mein submit Button) speichert er keine Daten mehr.

        PHP-Code:
        <?php
                
                
        if (isset($_POST["Speichern"]))
                    {
                    
        $db mysqli_connect"localhost""...""...""...");
                        
                        
        // SQL-Statement in String speichern:
                        
        $sql "INSERT INTO buch (titel, autor,verlag) VALUES ";
                        
        $sql .= "('";
                        
        $sql .=$_POST['titel'];
                        
        $sql .= "', '";
                        
        $sql .=$_POST['autor'];
                        
        $sql .= "', '";
                        
        $sql .=$_POST['verlag'];
                        
        $sql .="')";
                        
                        
        //SQL-Statement an Datenbank schicken:
                        
        $result mysqli_query($db$sql);
                        
                        
        //echo $sql;
                        //echo mysqli_error($db);
                    
                    
        }
                
                else {
                die;
                }    
                
                    
                    
            
        ?>

        Kommentar


        • #5
          Zitat von winfo Beitrag anzeigen
          Aber wenn ich jetzt Daten eingebe und auf Speichern klicke (mein submit Button) speichert er keine Daten mehr.
          Hast du denn einen submit-Button mit dem Namen »Speichern«? Ich sehe in deinem Formular oben keinen ...

          Und beachte bitte unbedingt die anderen Hinweise hier im Thread!

          Kommentar


          • #6
            Vielen Dank!
            Problem hat sich erledigt

            Kommentar

            Lädt...
            X