ID mit Datensatz auslesen

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

  • ID mit Datensatz auslesen

    Guten Abend

    Ich habe eine Datei settings.php, welche immer den Datensatz mit der ID = 0 zum aktualisieren einlesen soll.

    Es funktioniert alles, ausser dass er die ID irgendwie nicht finden oder zuordnen kann (No id specified!)

    Ausser ich helfe manuell nach und ergänze nach dem Aufruf die URL indem ich ?id=0 anhänge (dann wird Formular aufgerufen, ich kann mutieren und abspeichern).

    Nachdem einiges Suchen und Ausprobieren nichts genützt hat, erlaube ich mir hier die Frage zu stellen, wie ich den Code ergänzen/ändern muss.

    PHP-Code:
    <?php
    include_once 'main.php';

    if (!
    $_SESSION['role'] == 'Admin') {
        
    header("Location: home.php");
         exit;
    }

    $messages_false =[];
    $messages_true = [];

    // Variable an die URL angehängt (bei form action = ...)?
    if (isset($_GET['id'])) {

        if (!empty(
    $_POST)) {    
            
    // POST-Variablen vorhanden? - sonst nimm leeren Wert 
        
    $id                     = isset($_POST['id']) ? $_POST['id'] : '';   // NULL;
            
    $db_charset           = isset($_POST['db_charset']) ? $_POST['db_charset'] : '';
        
    $mail_from               = isset($_POST['mail_from']) ? $_POST['mail_from'] : '';
        
    $mail_address            = isset($_POST['mail_address']) ? $_POST['mail_address'] : '';
        
    $account_activation    = isset($_POST['account_activation']) ? $_POST['account_activation'] : '';
        
    $activation_url         = isset($_POST['activation_url']) ? $_POST['activation_url'    ] : '';
        
          if (empty(
    $messages_false)) {
              
    // Aendere den Datensatz (record)
                
    $stmt $pdo->prepare('UPDATE settings SET id = ?, db_charset = ?, mail_from = ?, mail_address = ?, account_activation = ?, activation_url = ? WHERE id = ?');        
                
    $stmt->execute([$id$db_charset$mail_from$mail_address$account_activation$activation_url$_GET['id']]);         
                
    $messages_true[] = 'Datensatz ist gespeichert';     
            }
        }
        
    // Get the account from the settings table
        
    $stmt $pdo->prepare('SELECT * FROM settings WHERE id = ?'); 
        
    $stmt->execute([$_GET['id']]);
        
    $account $stmt->fetch(PDO::FETCH_ASSOC);
        
            if (!
    $account) {
                exit(
    'Kein Kontakt mit dieser id');
            }  
    }  
     else {
           exit(
    'No id specified!');
    }

    ?>

    <?=template_header('Update')?>

    <div class="content update">
        <h2>Einstellung ändern</h2>    
        <form action="settings.php?id=<?=$account['id']?>" method="post">
        <div class="tabelle">    
        <div class="fl">
                <label for="db_charset">Charset</label><br>                    
            <input type="text" name="db_charset" value="<?php echo isset($account['db_charset']) ? htmlspecialchars($account['db_charset']) : ''?>" />
        </div>
        <div class="fl">
                    <label for="mail_from">Email von</label><br>                    
                    <input type="text" name="mail_from" value="<?php echo isset($account['mail_from']) ? htmlspecialchars($account['mail_from']) : ''?>" />
        </div>
        <div class="fl">
                    <label for="mail_address">Email-Adresse</label><br>                    
                    <input type="text" name="mail_address" value="<?php echo isset($account['mail_address']) ? htmlspecialchars($account['mail_address']) : ''?>" />
        </div>    
        <div class="fl">
                <label for="account_activation">Account Aktivierung</label><br>     
                <input type="text" name="account_activation" value="<?php echo isset($account['account_activation']) ? htmlspecialchars($account['account_activation']) : ''?>" />            
        </div>
        <div class="fl">
               <label for="activation_url">Aktivierungs-Internetadresse</label><br>     
                <input type="text" name="activation_url"  value="<?php echo isset($account['activation_url']) ? htmlspecialchars($account['activation_url']) : ''?>" />                
        </div>    
            <div class="fl">
            <input type="submit" value="Sichern">
            <?php 
                      
    // Fehlermeldungen ausgeben:
                    
    echo '<div class="false">';
                    foreach(
    $messages_false as $message) {
                         echo 
    '<p>'.htmlspecialchars($message).'</p>';
                    }
                    echo 
    '</div>'?>
                           
                    <?php
                     
    // Erfolgsmeldungen ausgeben:
                    
    echo '<div class="true">';
                        foreach(
    $messages_true as $message
                        {
                         echo 
    '<p>'.htmlspecialchars($message).'</p>';
                        }
                    echo 
    '</div>'?>
            </div>
        </div>    
        </form>
        
    </div>

    <?=template_footer()?>
    Zuletzt geändert von Kusi_Schweiz; 22.01.2022, 16:45. Grund: <?php an den Anfang gesetzt

  • #2
    $_POST['id'] wäre gerne ein $_GET['id']

    Kommentar


    • #3
      Zitat von Werner123 Beitrag anzeigen
      $_POST['id'] wäre gerne ein $_GET['id']
      Danke für die Antwort.
      Wenn ich es richtig auffasse, sollte ich dies in folgender Zeile umsetzen($_POST durch $_GET ersetzen):
      PHP-Code:
      // POST-Variablen vorhanden? - sonst nimm leeren Wert 
          
      $id                     = isset($_POST['id']) ? $_POST['id'] : '';   // NULL; 
      Doch das bewirkt leider nichts - und ich sehe sonst nicht wo ich etwas ändern könnte - bin halt Anfänger (seit ca. 1 Monat).
      Zuletzt geändert von P_H_Peter; 24.01.2022, 14:50.

      Kommentar


      • #4
        Schaue was das Formular an das PHP-Script übergibt:
        mit: var_dump($_POST);
        Ist dort ein: ["id"] dabei, wenn nein, bleibt:

        $id = isset($_POST['id']) ? $_POST['id'] : '';
        leer!

        Und im Formular wird da die ID immer mitgegeben (Browser-Quelltext anzeigen lassen und nachprüfen)
        <form action="settings.php?id=<?=$account['id']?>" method="post">
        Zuletzt geändert von Werner123; 24.01.2022, 15:13.

        Kommentar


        • #5
          Wie kann ich schauen, was das Formular an das PHP-Script übergibt, wenn ich schon beim anklicken vom Link mit der Meldung "No ID specified!" gestoppt werde? Mit var_dump... komme ich nicht zurecht, weiss nicht wo ich das einsetzen sollte.

          Ich denke, ich brauche den richtigen Eintrag bei form action=....... dort steht aber genau das was Sie mir angegeben haben.

          $id = isset.... auch hier steht genau das was Sie mir angegeben haben.

          Den Browser-Quelltext kann ich mir nicht anzeigen lassen, denn wenn ich den Link anklicke (http://localhost/dv/admin/settings.php) steht im Quelltext nur: No ID specified! - also genau das was ich auch im Browser sehe.

          Tut mir leid, als Anfänger bin ich hier überfordert.

          Kommentar

          Lädt...
          X