Datensatz klonen, mit htmlspecialchars

Diskutiere Datensatz klonen, mit htmlspecialchars im PHP Forum im Bereich Programmierung; Guten Tag Ich habe eine Datei clone.php um einen Datensatz zu klonen (= Bestehenden Datensatz kopieren und abändern für neuen Benutzer - der...
PeHaPe

PeHaPe

Member
Beiträge
10
Punkte Reaktionen
0
Guten Tag

Ich habe eine Datei clone.php um einen Datensatz zu klonen (= Bestehenden Datensatz kopieren und abändern für neuen Benutzer - der bestehende Datensatz bleibt).

Im Eingabeformular ist im Moment wie folgt definiert (Beispiel von einem Datenfeld):

Code:
<div class="fl">
        <label for="title">Anrede</label><br>
        <input type="text" name="title"  value="<?=$account["title"]?>" id="title">
</div>

Wie muss ich den Code ändern, damit die Validierung mit htmlspecialchars funktioniert?
 
PeHaPe

PeHaPe

Member
Beiträge
10
Punkte Reaktionen
0
Ich habe die Lösung:

Code:
<div class="fl">
        <label for="title">Anrede</label><br>                   
        <input type="text" name="title" value="<?php echo isset($account['title']) ? htmlspecialchars($account['title']) : ''; ?>" />
</div>
 
basti1012

basti1012

Well-known member
Beiträge
220
Punkte Reaktionen
16
Keine Ahnung, ob das irgendwer versteht, was du vorhast.
Wenn in den Feldern schon was drinnen steht,
wahrscheinlich aus der DB geholt wie Hans kuck-in-der-luft ,

Dann willst du das ändern zum Beispiel nach Hans-meier kuck-in-der-luft ?

Falls du z. B. nur die Daten ändern willst, die aus der DB kommen oder so , klickt man auf submit und speichert die neuen Werte in de DB.
Wenn das ein Affenformular ist, holt man die neuen Daten direkt wieder aus der Datenbank.
In den Fall wird der Code aus 2# wohl nie gebraucht.,

Deine Erklärung ist auch etwas mager und der fehlende Code macht es auch nicht leichter.

Es fehlt HTML Code, zumindest bis zum <form > Element.
Hast du kein <form> Element, brauchen wir mehr Erklärung .
PHP Code fehlt auch.
Zumindest muss man sehen können, wo $accound herkommt.
Im ersten Code schreibst du $accoundso in den HTML rein und in Code 2# mit htmlspecialchars(), warum?
Wird im ersten Code das htmlspecialchars irgendwo anders benutzt, was wir nicht sehen können?
 
basti1012

basti1012

Well-known member
Beiträge
220
Punkte Reaktionen
16
Ok, kommt darauf an.
Wenn man den ganzen Code sehen würde, wüste man, ob es ein Affenformular ist usw.
Jetzt sieht man nur $account['title'] , das kann aus der DB kommen oder umdeklarierte Variablen, oder sonst was.

Man sieht in seinen Code kein form Element
und auch kein Sendebutton

Ist ohne vollständigen Code oder richtige Erklärung auch etwas schwer helfen zu können
 
Zuletzt bearbeitet:
PeHaPe

PeHaPe

Member
Beiträge
10
Punkte Reaktionen
0
Mein Code scheint gefragt zu sein ;-) - also, hier ist er:

Code:
<?php
include_once '../main.php';

$messages_error = [];
$messages = [];

if (!isset($_GET['id'])) {
    exit ('Kein Datensatz unter dieser ID');
}

if (!empty($_POST)) {
            
        // Prüfen ob Variable definiert, leer oder gleich 0 ? (true / false).
    if (empty($_POST['title']) || empty($_POST['vorname']) || empty($_POST['nachname']) || empty($_POST['str']) || empty($_POST['plz']) || empty($_POST['ort']) || empty($_POST['email']) || empty($_POST['phone1'])) {       
        // Einer oder mehrere Werte sind leer.
        $messages_error[] = 'Bitte Formular vollständig ausfüllen.';
    }
        // Prüfen ob Email korrekt
        if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $messages_error[] = 'Bitte E-Mail-Adresse prüfen.';
    }
      
      // Bei Fehlern
      if (!empty($messages_error)) {
        $account = $_POST;
    }
      else {
        // Daten aus $_POST speichern (Code wie create.php + bei execute anfangs für die id "NULL" einsetzen, damit nicht unter der zum Klonen aufgerufenen id gespeichert wird)
         $stmt = $pdo->prepare('INSERT INTO accounts (id, title, vorname, nachname, str, snr, plz, ort, email, phone1) VALUES (?,?,?,?,?,?,?,?,?,?)');     
         $stmt->execute([NULL, $_POST['title'], $_POST['vorname'], $_POST['nachname'], $_POST['str'], $_POST['snr'], $_POST['plz'], $_POST['ort'], $_POST['email'], $_POST['phone1']]);         
         header ('Location: ../saved.php');
         exit;           
    }
    
}
else {
        // Werte aus Datenbank
        $stmt = $pdo->prepare('SELECT * FROM accounts WHERE id = ?');
        $stmt->execute([$_GET['id']]);
        $account = $stmt->fetch(PDO::FETCH_ASSOC);
}   
    
?>

<?=template_header('Update')?>

<div class="content update">
    <h2>Adresse  ändern</h2>
    <h3><?=$account['nachname']?></h3>
 
    <!-- <form action="update.php?id=<?=$account['id']?>" method="post">      -->
    <form action="" method="post">     
    
    <div class="tabelle">           
    <div class="fl">
            <label for="title">Anrede</label><br>                   
        <input type="text" name="title" value="<?php echo isset($account['title']) ? htmlspecialchars($account['title']) : ''; ?>" /> <!--   $account, weil bei update müssen die bestehenden Felddaten angezeigt werden   -->
    </div>
    <div class="fl">
                <label for="vorname">Vorname</label><br>                   
                <input type="text" name="vorname" value="<?php echo isset($account['vorname']) ? htmlspecialchars($account['vorname']) : ''; ?>" />
    </div>
    <div class="fl">
                <label for="nachname">Nachname</label><br>                   
                <input type="text" name="nachname" value="<?php echo isset($account['nachname']) ? htmlspecialchars($account['nachname']) : ''; ?>" />
    </div>   
    <div class="fl">
            <label for="str">Strasse</label><br>     
            <input type="text" name="str" value="<?php echo isset($account['str']) ? htmlspecialchars($account['str']) : ''; ?>" />           
    </div>
    <div class="fl">
           <label for="snr">Nummer</label><br>     
            <input type="text" name="snr"  value="<?php echo isset($account['snr']) ? htmlspecialchars($account['snr']) : ''; ?>" />               
    </div>
    <div class="fl">
            <label for="plz">PLZ</label><br>     
            <input type="text" name="plz"  value="<?php echo isset($account['plz']) ? htmlspecialchars($account['plz']) : ''; ?>" />               
    </div>
        <div class="fl">
        <label for="ort">Ort</label><br>     
        <input type="text" name="ort"  value="<?php echo isset($account['ort']) ? htmlspecialchars($account['ort']) : ''; ?>" />               
        </div>
    <div class="fl">
            <label for="email">Email</label><br>                   
        <input type="text" name="email" value="<?php echo isset($account['email']) ? htmlspecialchars($account['email']) : ''; ?>" />
    </div>
    <div class="fl">
            <label for="phone1">Telefon P</label><br>                   
        <input type="text" name="phone1" value="<?php echo isset($account['phone1']) ? htmlspecialchars($account['phone1']) : ''; ?>" />
    </div>       
        <div class="fl">
        <input type="submit" value="Sichern">
        <?php
                  // Fehlermeldungen ausgeben:
                echo '<div class="messages_error">';
                foreach($messages_error as $message) {
                     echo '<p>'.htmlspecialchars($message).'</p>';
                }
                echo '</div>'; ?>
                      
                <?php
                 // Erfolgsmeldungen ausgeben:
                echo '<div class="messages">';
                    foreach($messages as $message)
                    {
                     echo '<p>'.htmlspecialchars($message).'</p>';
                    }
                echo '</div>'; ?>
        </div>
    </div>   
    </form>
    
</div>

<?=template_footer()?>
 
Thema:

Datensatz klonen, mit htmlspecialchars

Oben Unten