Na mijn pogingen (zoals sommige nu wel weten) die minder succesvol waren in mysql heb ik nu een add-edit-del script in mysqli zoals mij aangeraden werd. Ik heb nu 2 velden gemaakt zodat ik de rest daarna kan toevoegen als dit goed werkt maar alles werkt behalve 1 ding. Na het toevoegen van data kan ik op edit klikken en dan kan ik het bewerkten. Echter als ik daarna op versturen druk (zonder of met bewerken) is het veld bedrijfsnaam plotseling leeg. Ik kan niet vinden waarom dit is..


<?php
        /*
                Staat de gebruiker toe om nieuwe records toe te voegen te bewerken
        */

        // connect to the database
        include("connect-db.php");

        // Maakt nieuw/edit record formulier
        function renderForm($klantnummer = '', $bedrijfsnaam ='', $error = '', $id = '')
        { ?>
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                <html>
                        <head>  
                                <title>
                                        <?php if ($id != '') { echo "Edit Record"; } else { echo "New Record"; } ?>
                                </title>
                                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                        </head>
                        <body>
                                <h1><?php if ($id != '') { echo "Edit Record"; } else { echo "New Record"; } ?></h1>
                                <?php if ($error != '') {
                                        echo "<div style='padding:4px; border:1px solid red; color:red'>" . $error
                                                . "</div>";
                                } ?>
                                
                                <form action="" method="post">
                                <div>
                                        <?php if ($id != '') { ?>
                                                <input type="hidden" name="id" value="<?php echo $id; ?>" />
                                                <p>ID: <?php echo $id; ?></p>
                                        <?php } ?>
                                        
                                        <strong>Klantnummer: *</strong> <input type="text" name="klantnummer"
                                                value="<?php echo $klantnummer; ?>"/><br/>
                                        <strong>Bedrijfsnaam: *</strong> <input type="text" name="bedrijfsnaam"
                                                value="<?php echo $bedrijfsnaam; ?>"/>
                                        <p>* required</p>
                                        <input type="submit" name="submit" value="Submit" />
                                </div>
                                </form>
                        </body>
                </html>
                
        <?php }



        /*

           BEWERK RECORD

        */
        // Wanneer de 'id' variabel is ingesteld in de URL, weten we dat we een record moeten aanpassen
        if (isset($_GET['id']))
        {
                // Wanneer de submitknop word ingedrukt word het formulier verwerkt
                if (isset($_POST['submit']))
                {
                        // Zorgt ervoor dat de 'id' geldig is
                        if (is_numeric($_POST['id']))
                        {
                                // verkrijg variabelen van URL/formulier
                                $id = $_POST['id'];
                                $klantnummer = htmlentities($_POST['klantnummer'], ENT_QUOTES);
                                $bedrijfsnaam = htmlentities($_POST['bedrijfsnaam'], ENT_QUOTES);
                                
                                {
                                        // update de database
                                        if ($stmt = $mysqli->prepare("UPDATE klanten SET klantnummer = ?, bedrijfsnaam = ?
                                                WHERE id=?"))
                                        {
                                                $stmt->bind_param("ssi", $klantnummer, $lastname, $id);
                                                $stmt->execute();
                                                $stmt->close();
                                        }
                                        // toont foutmelding indien nodig
                                        else
                                        {
                                                echo "ERROR: could not prepare SQL statement.";
                                        }
                                        
                                        // redirect na submit van formulier
                                        header("Location: view.php");
                                }
                        }
                        // bij ongeldige 'id' komt een foutmelding
                        else
                        {
                                echo "Error!";
                        }
                }
                // Indien het formulier niet verstuurd is word de database en het formulier weergegeven
                else
                {
                        // zorgt dat de 'id' geldig is
                        if (is_numeric($_GET['id']) && $_GET['id'] > 0)
                        {
                                // verkrijg 'id' van URL
                                $id = $_GET['id'];
                                
                                // verkrijg de records uit de database
                                if($stmt = $mysqli->prepare("SELECT * FROM klanten WHERE id=?"))
                                {
                                        $stmt->bind_param("i", $id);
                                        $stmt->execute();
                                        
                                        $stmt->bind_result($id, $klantnummer, $bedrijfsnaam);
                                        $stmt->fetch();
                                        
                                        // toon het formulier
                                        renderForm($klantnummer, $bedrijfsnaam, NULL, $id);
                                        
                                        $stmt->close();
                                }
                                // toon een error wanneer de query een error heeft
                                else
                                {
                                        echo "Error: could not prepare SQL statement";
                                }
                        }
                        // wanneer het 'id' ongeldig is word de gebruiker naar view.php doorgestuurd
                        else
                        {
                                header("Location: view.php");
                        }
                }
        }



        /*

           NIEUW RECORD

        */
        // wanneer geen 'id' is ingesteld volgt een nieuwe invoer
        else
        {
                // proces het formlier na submit
                if (isset($_POST['submit']))
                {
                        // verkrijg formulierdata
                        $klantnummer = htmlentities($_POST['klantnummer'], ENT_QUOTES);
                        $bedrijfsnaam = htmlentities($_POST['bedrijfsnaam'], ENT_QUOTES);
                        
                        {
                                // insert the new record into the database
                                if ($stmt = $mysqli->prepare("INSERT klanten (klantnummer, bedrijfsnaam) VALUES (?, ?)"))
                                {
                                        $stmt->bind_param("ss", $klantnummer, $bedrijfsnaam);
                                        $stmt->execute();
                                        $stmt->close();
                                }
                                // Toon een foutmelding indien nodig
                                else
                                {
                                        echo "ERROR: Could not prepare SQL statement.";
                                }
                                
                                // stuur gebruiker door
                                header("Location: view.php");
                        }
                        
                }
                // wanneer geen formulier is ingediend word de database weergegeven
                else
                {
                        renderForm();
                }
        }
        
        // sluit mysqli verbinding
        $mysqli->close();
?>
Kan je jouw code even tussen [code] en [/code]tags plaatsen, en deze beperken tot relevante code.
Alvast bedankt.
Nogal logisch zo te zien. Na het updaten van je database record doe je dit:

<?php
header("Location: view.php");
?>

Aangezien daar geen id in zit, kan je script ook geen record ophalen en dus krijg je een leeg form.

Erwin H op 22/09/2013 14:53:06

Nogal logisch zo te zien. Na het updaten van je database record doe je dit:

<?php
header("Location: view.php");
?>

Aangezien daar geen id in zit, kan je script ook geen record ophalen en dus krijg je een leeg form.

Als dat de rede is, waarom blijft het veld klantnummer dan wel staan?

@Aar, ik had hem toch tussen de code tags staan? Ik heb express de hele code geplakt voorals het probleem ergens anders in de code zit.





Geen idee, maar ik zou dat meer als een uitzondering beschouwen dan het feit dat het andere veld leeg is.
Ik heb het probleem al gevonden.

<?PHP
// update de database
if ($stmt = $mysqli->prepare("UPDATE klanten SET klantnummer = ?, bedrijfsnaam = ?
WHERE id=?"))
{
$stmt->bind_param("ssi", $klantnummer, $lastname, $id);
$stmt->execute();
$stmt->close();
}
?>

Er staat $lastname ipv $bedrijfsnaam, logisch dat hij dan niet update.

Reageren