arjanvr Posted September 29, 2013 Share Posted September 29, 2013 I had someone change the time settings of this script/database to work as day-month-year instead of year-month-day. I added $telefoon myself as a value but now when i click submit it does nothing. It simply goes to the view page but adds nothing to the database. I put in a error check but no errors or warnings come up. Is there anything wrong with the script that I am missing? <?php /* Staat de gebruiker toe om nieuwe records toe te voegen te bewerken */ // connect to the database include("connect-db.php"); # errors weergeven ini_set('display_errors',1); // 1 == aan , 0 == uit error_reporting(E_ALL | E_STRICT); // Maakt nieuw/edit record formulier function renderForm($klantnummer = '', $bedrijfsnaam ='', $adres ='', $postcode ='', $plaats ='', $telefoon='', $londerhoud ='', $aantal ='', $vonderhoud='', $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 "Bewerk onderhoud"; } else { echo "Nieuw onderhoud"; } ?> </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h1><?php if ($id != '') { echo "Bewerk onderhoud"; } else { echo "Nieuw onderhoud"; } ?></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; ?>"/><br/> <strong>Adres:</strong> <input type="text" name="adres" value="<?php echo $adres; ?>"/><br/> <strong>Postcode:</strong> <input type="text" name="postcode" value="<?php echo $postcode; ?>"/><br/> <strong>Plaats:</strong> <input type="text" name="plaats" value="<?php echo $plaats; ?>"/><br/> <strong>Telefoonnumer:</strong> <input type="text" name="telefoon" value="<?php echo $telefoon; ?>"/><br/> <strong>Laatste onderhoud:<br><small>dag-maand-jaar</small></strong> <input type="text" name="londerhoud" value="<?php echo $londerhoud; ?>"/><br/> <strong>Aantal apparaten:</strong> <input type="text" name="aantal" value="<?php echo $aantal; ?>"/><br/> <strong>Volgende onderhoud:<br><small>dag-maand-jaar</small></strong> <input type="text" name="vonderhoud" value="<?php echo $vonderhoud; ?>"/><p/> <input type="submit" name="submit" value="Submit" /><p> <a href="index.html">Terug naar het overzicht</a> </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); $adres = htmlentities($_POST['adres'], ENT_QUOTES); $postcode = htmlentities($_POST['postcode'], ENT_QUOTES); $plaats = htmlentities($_POST['plaats'], ENT_QUOTES); $telefoon = htmlentities($_POST['telefoon'], ENT_QUOTES); $londerhoud = htmlentities(strtotime($_POST['londerhoud']), ENT_QUOTES); $aantal = htmlentities($_POST['aantal'], ENT_QUOTES); $vonderhoud = htmlentities(strtotime($_POST['vonderhoud']), ENT_QUOTES); { // update de database if ($stmt = $mysqli->prepare("UPDATE klanten SET klantnummer = ?, bedrijfsnaam = ?, adres = ?, postcode = ?, plaats = ?, telefoon = ?, londerhoud = ?, aantal = ?, vonderhoud = ? WHERE id=?")) { $stmt->bind_param("sssssssssi", $klantnummer, $bedrijfsnaam, $adres, $postcode, $plaats, $telefoon, $londerhoud, $aantal, $vonderhoud, $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, $adres, $postcode, $plaats, $telefoon, $londerhoud, $aantal, $vonderhoud); $stmt->fetch(); // toon het formulier renderForm($klantnummer, $bedrijfsnaam, $adres, $postcode, $plaats, $telefoon, $londerhoud, $aantal, $vonderhoud, 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); $adres = htmlentities($_POST['adres'], ENT_QUOTES); $postcode = htmlentities($_POST['postcode'], ENT_QUOTES); $plaats = htmlentities($_POST['plaats'], ENT_QUOTES); $telefoon = htmlentities($_POST['telefoon'], ENT_QUOTES); $londerhoud = htmlentities(strtotime($_POST['londerhoud']), ENT_QUOTES); $aantal = htmlentities($_POST['aantal'], ENT_QUOTES); $vonderhoud = htmlentities(strtotime($_POST['vonderhoud']), ENT_QUOTES); { // insert the new record into the database if ($stmt = $mysqli->prepare("INSERT klanten (klantnummer, bedrijfsnaam, adres, postcode, plaats, telefoon, londerhoud, aantal, vonderhoud) VALUES (?, ?, ?, ?, ?, ?, ?, ?)")) { $stmt->bind_param("sssssssss", $klantnummer, $bedrijfsnaam, $adres, $postcode, $plaats, $telefoon, $londerhoud, $aantal, $vonderhoud); $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(); ?> He edited another one for the date funtion aswell but that one works fine.. I wil paste that one below aswell <?php /* Staat de gebruiker toe om nieuwe records toe te voegen te bewerken */ // connect to the database include("connect-db.php"); # errors weergeven ini_set('display_errors',1); // 1 == aan , 0 == uit error_reporting(E_ALL | E_STRICT); // Maakt nieuw/edit record formulier function renderForm($bedrijfsnaam ='', $factuurbedrag ='', $vervaldatum ='', $voldaan ='', $opmerkingen ='', $id ='', $error = '') { $title = (empty($id)) ? "Nieuwe factuur" : "Bewerk factuur"; // all HTML is now held within the $HTML variable. $HTML = <<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>$title</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h1>$title</h1> $error <form action="facturen-nw.php" method="post"> <div> HTML; // DO NOT MOVE?CHANGE THE ABOVE LNE if (!empty($error)) $HTML .= "\n<div style='padding:4px; border:1px solid red; color:red'>" . $error . "</div>\n\n"; if(!empty($id)) $HTML .= '<input type="hidden" name="id" value="' . $id . '" /><p>ID:' . $id .'</p>'; $HTML .= <<<HTML <strong>Bedrijfs(naam):</strong> <input type="text" name="bedrijfsnaam" value="$bedrijfsnaam"/><br/> <strong>Factuurbedrag:</strong> <input type="text" name="factuurbedrag" value="$factuurbedrag"/><br/> <strong>Vervaldatum:</strong> <input type="text" name="vervaldatum" value="$vervaldatum"/><br/> <strong>Voldaan (ja/nee):</strong> <input type="text" name="voldaan" value="$voldaan"/><br/> <strong>Opmerkingen:</strong> <input type="text" name="opmerkingen" value="$opmerkingen"/><p/> <input type="submit" name="submit" value="Submit" /><p> <a href="index.html">Terug naar het overzicht</a> </div> </form> </body> </html> HTML; // DO NOT MOVE/CHANGE THE ABOVE LINE // function returns the generated HTML return $HTML; } // set action to create a new record $action = 'new'; // override action to either edit or update if(isset($_REQUEST['id']) && is_numeric($_REQUEST['id'])) { // get the record id from _GET or _POST $id = (int) $_REQUEST['id']; // what action we're doing // if id is in url eg: facturen.php?id=1 then we're editing the record // If its not in the url then we're updating the record $action = isset($_GET['id']) ? 'edit' : 'update'; } // if the form has been submitted if(isset($_POST['submit'])) { $bedrijfsnaam = htmlentities($_POST['bedrijfsnaam'], ENT_QUOTES); $factuurbedrag = htmlentities($_POST['factuurbedrag'], ENT_QUOTES); $vervaldatum = htmlentities(strtotime($_POST['vervaldatum']), ENT_QUOTES); $voldaan = htmlentities($_POST['voldaan'], ENT_QUOTES); $opmerkingen = htmlentities($_POST['opmerkingen'], ENT_QUOTES); // run query depending on actions if($action == 'new') // inserts new record { $stmt = $mysqli->prepare("INSERT INTO facturen SET bedrijfsnaam = ?, factuurbedrag = ?, vervaldatum = ?, voldaan = ?, opmerkingen = ?"); $stmt->bind_param("sssss", $bedrijfsnaam, $factuurbedrag, $vervaldatum, $voldaan, $opmerkingen); } elseif($action == 'update') // updates record { $stmt = $mysqli->prepare("UPDATE facturen SET bedrijfsnaam = ?, factuurbedrag = ?, vervaldatum = ?, voldaan = ?, opmerkingen = ? WHERE id=?"); $stmt->bind_param("sssssi", $bedrijfsnaam, $factuurbedrag, $vervaldatum, $voldaan, $opmerkingen, $id); } // executes query and redirects on sucess if($stmt->execute()) { header('Location: facturen.php'); exit; } else { $error = 'Cannot continue! Error with database'; } // otherwise display form with error echo enderForm($bedrijfsnaam, $factuurbedrag, $vervaldatum, $voldaan, $opmerkingen, $id, $error); } elseif($action == 'edit') { $stmt = $mysqli->prepare("SELECT * FROM facturen WHERE id=?"); $stmt->bind_param("i", $id); $stmt->execute(); $stmt->bind_result($id, $bedrijfsnaam, $factuurbedrag, $vervaldatum, $voldaan, $opmerkingen); $stmt->fetch(); echo renderForm($bedrijfsnaam, $factuurbedrag, $vervaldatum, $voldaan, $opmerkingen, $id); } else echo renderForm(); // sluit mysqli verbinding $mysqli->close(); ?> As always, much appriciated! Quote Link to comment Share on other sites More sharing options...
Ch0cu3r Posted September 29, 2013 Share Posted September 29, 2013 (edited) Comment out the header("Location: view.php"); lines. And change all instances of echo "ERROR: Could not prepare SQL statement."; to echo "ERROR: Could not prepare SQL statement.<p>Error: " . $mysqli->error; Any errors displayed?. Edited September 29, 2013 by Ch0cu3r Quote Link to comment Share on other sites More sharing options...
arjanvr Posted September 29, 2013 Author Share Posted September 29, 2013 Not sure what you mean by Comment out the header("Location: view.php"); lines. But I edited the other lines in the file which lets me enter stuff into the database. The actual view page did not have them but it does not return an error Quote Link to comment Share on other sites More sharing options...
Ch0cu3r Posted September 29, 2013 Share Posted September 29, 2013 (edited) Not sure what you mean by Comment out the header("Location: view.php"); lines. Adding two forward slashes (//) in front of lines will comment them out. Commented lines are ignored by PHP. So change header("Location: view.php"); to //header("Location: view.php"); Edited September 29, 2013 by Ch0cu3r Quote Link to comment Share on other sites More sharing options...
Solution arjanvr Posted September 29, 2013 Author Solution Share Posted September 29, 2013 (edited) Forgot it meant // It gave me an error now which I fixed and it works ok now.. Thanks! Forgot to add a ,? here where I added the new field throughout the document if ($stmt = $mysqli->prepare("INSERT klanten (klantnummer, bedrijfsnaam, adres, postcode, plaats, telefoon, londerhoud, aantal, vonderhoud) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")) Edited September 29, 2013 by arjanvr Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.