• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] ID-Weiterleitung funktioniert nicht(lastInsertId())

Java.kn

New member
Hallöchen zusammen,
ich habe folgendes Problem:
Ich habe ein datenbankbasiertes Gästebuch entwickelt, aber wenn man einen Eintrag schreibt wird die ID des jeweiligen Eintrags nicht mitübergeben, so dass man zwar auf der Danke-Seite landet, aber man sieht "titel" und "inhalt" nicht.
URL: http://localhost/gaestebuch/eintrag_danke.php?id=$db-%3ElastInsertId%28%29;

Ich vermute mein Fehler ist hier: redirect('eintrag_danke.php?id=$db->lastInsertId();');

Ich freue mich auf Hinweise!
Danke im Voraus und Grüße!
PHP:
 <?php
    require_once 'includes/funktionen.inc.php';
    if ($_POST) {
        
        $eintraege = array(
         'titel'       => trim($_POST['titel']),
            'inhalt'      => trim(strip_tags($_POST['inhalt'])),
            'name'        => trim($_POST['name']),
            'email'       => trim($_POST['email']),
            'homepage'    => trim($_POST['homepage']),
            'erstellt_am' => strftime('%Y-%m-%dT%H:%M:%S')
        );
     $stmt = $db->prepare('INSERT INTO eintraege 
            (titel, inhalt, name, email, homepage, erstellt_am)
            VALUES (:titel,:inhalt, :name, :email, :homepage, :erstellt_am)');
        $stmt->execute($eintraege);
    
        redirect('eintrag_danke.php?id=$db->lastInsertId();');
    }
?>

HTML:
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>Gästebuch</title>
    <link href="css/stylesheet.css" type="text/css" rel="stylesheet" />
</head>

<body>
    
    <div id="gesamt">
    
        <header id="kopf">
            <h1>Gästebuch</h1>
        </header>
        
        <section id="inhalt">
            
            <h1>Schreiben Sie hier einen neuen Eintrag:</h1>
            
            <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
            Titel:
                <input type="text" name="titel" id="titel" required="required" placeholder="Titel*" />
            Inhalt:
                <textarea name="inhalt" id="eintrag" cols="50" rows="10" required="required" placeholder="Inhalt*"></textarea>
            Name:
                <input type="text" name="name" id="name" required="required" placeholder="Name*" />
            E-Mail:
                <input type="text" name="email" id="email" placeholder="Email" />
            Homepage:
                <input type="text" name="homepage" id="homepage" placeholder="Homepage" />
                <input type="submit" value="Eintragen" />
            </form>
            
        </section>
        
        <aside id="menu">
            <?php require 'includes/hauptmenu.tpl.php'; ?>
        </aside>
        
        <footer id="fuss">
            Das ist das Ende
        </footer>
            
    </div>

</body>

</html>

und den PHP-Code der Danke-Seite
PHP:
<?php
    require_once 'includes/funktionen.inc.php';

	$stmt = $db->prepare('SELECT * FROM eintraege WHERE id = ? LIMIT 1');
    $stmt->execute(array($_REQUEST['id']));
    $eintrag = $stmt->fetch();
    unset($stmt);
     
?>
 
Jupp, das dürfte er sein:

PHP:
 redirect('eintrag_danke.php?id=$db->lastInsertId();');

Das liegt an Deiner Verwendung von "single quotes" sowie dem Semikolon noch darin. Dein Konstrukt würde so gehen ...

PHP:
 redirect("eintrag_danke.php?id=$db->lastInsertId()");

... allerdings stehe ich im Editor auf Übersicht und würde es eher so machen (und mir die wenigen Bytes auch noch sparen):

PHP:
 redirect('eintrag_danke.php?id=' . $db->lastInsertId());

Grüße.
 
Zurück
Oben