Form data doesnt get sent to SQL database - php
I wanted to make a small form with a dropdown, where you could choose if you wanted to add a new Movie or Serie to the database. after choosing one of the 2. a new form would appear that you could fill in and add the data to the database. unfortunately it doesnt get sent to the database and i dont know why it doesnt. when i test the 2 functions on seperate pages they do seem to work. This is the full code of the page:
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Netland!</title>
</head>
<body>
<?php
include_once 'db.php';
$db = new Database();
?>
<h1>Film of Serie toevoegen</h1>
<p>Terug</p>
<form method='post'>
<select name="type" id="type">
<option value="films">Film</option>
<option value="series">Serie</option>
</select>
<input type="submit" value="Voeg Toe" name="submit">
</form>
<?php
if (isset($_POST['submit'])) {
?>
<?php
if ($_POST['type'] == 'series'){
?>
<form method="post">
<h1>Nieuwe Serie toevoegen</h1>
<p>Terug</p>
<p><b>Title: </b>
<input type="text" id="title" name="title">
<br>
</p>
<p><b>Rating: </b>
<input type="number" id="rating" name="rating">
<br>
</p>
<p><b>Omschrijving</p></b>
<textarea name="summary" rows="12" cols="80" id="summary"></textarea><br>
<p><b>Awards: </b>
<input type="text" id="awards" name="awards"><br></p>
<p><b>Seasons: </b>
<input type="text" id="seasons" name="seasons"><br>
</p>
<p><b>Country: </b>
<input type="text" id="country" name="country"><br>
</p>
<p><b>Language: </b>
<input type="text" id="language" name="language"><br>
</p>
<input type="submit" value="Update" name="submit2">
<?php
if (isset($_POST['submit2'])) {
$title = $_POST['title'];
$rating = $_POST['rating'];
$summary = $_POST['summary'];
$awards = $_POST['awards'];
$seasons = $_POST['seasons'];
$country = $_POST['country'];
$language = $_POST['language'];
$db->addSerie($title, $rating, $summary, $awards, $seasons, $country, $language);
}
?>
</form>
<?php
} else {
?>
<form method="post">
<p><b>Title: </b>
<input type="text" id="title" name="title"><br>
</p>
<p><b>Length: </b>
<input type="number" id="length" name="length"><br>
</p>
<p><b>Release date: </b>
<input type="text" id="release_date" name="release_date"><br>
</p>
<p><b>Origin: </b>
<input type="text" id="origin" name="origin" value=""><br>
</p>
<p><b>Omschrijving</p></b>
<textarea name="summary" rows="12" cols="80" id="summary"></textarea><br>
<p><b>Youtube ID: </b>
<input type="text" id="youtube_id" name="youtube_id"><br>
</p>
<input type="submit" value="Voeg Toe" name="submitMovie" id="submitMovie">
<?php
if (isset($_POST['submitMovie'])) {
$title = $_POST['title'];
$length = $_POST['length'];
$release_date = $_POST['release_date'];
$origin = $_POST['origin'];
$summary = $_POST['summary'];
$youtube_id = $_POST['youtube_id'];
$db->addMovie($title, $length, $release_date, $origin, $summary, $youtube_id);
}
?>
</form>
<?php
}
?>
<?php
}
?>
</body>
</html>
And here are the addMovie + addSerie functions code.
public function addMovie($title, $length_in_minutes, $released_at, $country_of_origin, $summary, $youtube_trailer_id)
{
$sql = "INSERT INTO movies VALUES(null, :title, :length_in_minutes, :released_at, :country_of_origin, :summary, :youtube_trailer_id,'films')";
$statement = $this->dbh->prepare($sql);
$statement->execute([
'title' => $title,
'length_in_minutes' => $length_in_minutes,
'released_at' => $released_at,
'country_of_origin' => $country_of_origin,
'summary' => $summary,
'youtube_trailer_id' => $youtube_trailer_id
]);
public function addSerie($title, $rating, $summary, $has_won_awards, $seasons, $country, $spoken_in_language)
{
$sql = "INSERT INTO series VALUES(null, :title, :rating, :summary, :has_won_awards, :seasons, :country, :spoken_in_language, 'series')";
$statement = $this->dbh->prepare($sql);
$statement->execute([
'title' => $title,
'rating' => $rating,
'summary' => $summary,
'has_won_awards' => $has_won_awards,
'seasons' => $seasons,
'country' => $country,
'spoken_in_language' => $spoken_in_language
]);
}
Any help would be really appreciated. i think theres something wrong with the if statements. but im not sure what is. here is the full sql of the database
-- phpMyAdmin SQL Dump
-- version 4.9.0.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Gegenereerd op: 27 sep 2021 om 15:02
-- Serverversie: 10.4.6-MariaDB
-- PHP-versie: 7.3.9
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET #OLD_CHARACTER_SET_CLIENT=##CHARACTER_SET_CLIENT */;
/*!40101 SET #OLD_CHARACTER_SET_RESULTS=##CHARACTER_SET_RESULTS */;
/*!40101 SET #OLD_COLLATION_CONNECTION=##COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `netland`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `movies`
--
CREATE TABLE `movies` (
`id` mediumint(9) NOT NULL,
`title` varchar(100) NOT NULL,
`length_in_minutes` int(11) NOT NULL,
`released_at` date DEFAULT NULL,
`country_of_origin` varchar(2) DEFAULT NULL,
`summary` text NOT NULL,
`youtube_trailer_id` varchar(20) DEFAULT NULL,
`Type` enum('films','series') DEFAULT 'films'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Gegevens worden geëxporteerd voor tabel `movies`
--
INSERT INTO `movies` (`id`, `title`, `length_in_minutes`, `released_at`, `country_of_origin`, `summary`, `youtube_trailer_id`, `Type`)
VALUES
(1, 'Black Panther', 134, '2018-02-14', 'VS', 'Duizenden jaren geleden stortte er in Afrika een meteoriet neer op aarde, vol met het metaal vibranium. Vijf stammen trokken ten strijde om dit als hun bezit te claimen. Tijdens de oorlog nam één krijger een paars, hartvormig kruid in dat was aangetast door het vibranium. Dit maakte hem de eerste Black Panther. Hij verenigde vier van vijf stammen en vormde het land Wakanda. Alleen de Jabari-stam bleef autonoom. In de eeuwen die volgden, gebruikten de Wakandanen het vibranium om een technologisch extreem gevorderde beschaving op te bouwen, zich intussen voordoend als een derdewereldland om hun geïsoleerde positie in de wereld te behouden.', 'xjDjIWPwcPU', 'films'),
(2, 'John Wick', 110, '2014-11-20', 'VS', 'John Wick is een legende in het misdaadcircuit als voormalige huurmoordenaar voor de Russische maffia. Hij trok zich terug uit deze wereld om te trouwen met zijn geliefde Helen. Wanneer zij vijf jaar later overlijdt aan kanker, krijgt hij in haar opdracht een puppy met de naam Daisy thuisbezorgd. Bij het cadeau zit een brief van Helen waarin ze hem vertelt dat ze hem het hondje geeft omdat ze wil dat hij iets heeft om van te houden. Wick weet niet meteen wat hij met Daisy aan moet, maar het beestje is zo speels, af- en aanhankelijk dat hij van haar gaat houden.', '2AUmvWm5ZDQ', 'films'),
(3, 'Frozen', 102, '2013-12-11', 'VS', 'Er zijn twee prinsessen in het koninkrijk Arendelle: Elsa (Idina Menzel), de troonopvolgster, en haar jongere zus Anna (Kristen Bell). Elsa heeft magische krachten, waarmee ze sneeuw en ijs kan creëren. Als kleine meisjes spelen ze samen met Elsa\'s krachten. Het spel loopt uit de hand, wanneer Elsa per ongeluk Anna\'s hoofd raakt. Anna raakt hierdoor bewusteloos. Elsa roept haar ouders en die weten hoe ze het leven van Anna kunnen redden. Ze brengen een bezoek aan de trollen die Anna kunnen helpen. Ze wissen haar geheugen gedeeltelijk waardoor ze niet meer weet dat Elsa magische krachten heeft. De trol vraagt de koning en koningin om de krachten van Elsa te verbergen voor de buitenwereld en ook voor haar zusje. Hierdoor leven ze voortaan allebei een apart bestaan in hetzelfde gesloten kasteel.', '5ddmISZWTAA', 'films'),
(4, 'Moana', 103, '2016-11-30', 'VS', 'De tiener Vaiana, dochter van een opperhoofd gaat op zoek naar de halfgod Maui. Samen met Maui vertrekt ze op een avontuurlijke reis over de oceaan op zoek naar het legendarisch eiland Te Fiti om haar volk van de ondergang te redden.', 'FpNcGOB_qVQ', 'films'),
(5, 'Sint', 85, '2010-11-11', 'NL', 'In de 15e eeuw leefde St. Niklas, een in ongenade gevallen bisschop die met een bende rovers plunderend en moordend door de straten trok. Wanneer hij eraan kwam, riepen de dorpsmensen hun families naar binnen en barricadeerden ze hun huizen. De knechten van Niklas trapten de gesloten deuren niettemin in en klommen ook via de schoorstenen naar binnen. Nadat Niklas op 5 december 1492 weer nietsontziend had toegeslagen, sloegen de dorpelingen terug. Zodra Niklas en zijn trawanten zich in hun boot bevonden, stak de woedende menigte die in brand. De bisschop en zijn handlangers kwamen om in de vlammen.', 'Xv3G70mm18k', 'films'),
(6, 'Arjentest', 2, '0000-00-00', 'Ar', 'Arjentest', 'Arjentest', 'films');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `series`
--
CREATE TABLE `series` (
`id` mediumint(9) NOT NULL,
`title` varchar(100) NOT NULL,
`rating` decimal(2,1) DEFAULT NULL,
`summary` text NOT NULL,
`has_won_awards` int(11) NOT NULL,
`seasons` int(11) NOT NULL,
`country` enum('NL','UK') NOT NULL,
`spoken_in_language` enum('NL','EN') NOT NULL,
`Type` enum('films','series') DEFAULT 'series'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Gegevens worden geëxporteerd voor tabel `series`
--
INSERT INTO `series` (`id`, `title`, `rating`, `summary`, `has_won_awards`, `seasons`, `country`, `spoken_in_language`, `Type`) VALUES
(1, 'The good place', '4.5', 'De serie gaat over een vrouw, Eleanor Shellstrop, die zich in het hiernamaals bevindt. Ze wordt verwelkomd door Michael, de \'architect\' van het utopische dorpje waar ze voor eeuwig gaat wonen. Er zijn twee delen in het hiernamaals, The Good Place (\'goede plek\') en The Bad Place (\'slechte plek\'); welke wordt bepaald door ethische punten voor elke handeling op aarde.', 0, 4, 'UK', 'EN', 'series'),
(2, 'Game of Thrones', '5.0', 'Op het continent Westeros regeert koning Robert Baratheon al meer dan zeventien jaar lang over de Zeven Koninkrijken, na zijn opstand tegen koning Aerys II Targaryen \"De Krankzinnige\". Als zijn adviseur Jon Arryn wordt vermoord, vraagt hij zijn oude vriend Eddard Stark, de Heer van Winterfell en Landvoogd van het Noorden, om zijn plaats in te nemen. Eddard gaat met tegenzin akkoord, en trekt met zijn twee dochters, Sansa en Arya (Maisie Williams), naar de hoofdstad in het zuiden. Vlak voor hun vertrek wordt een van zijn jongste zonen, Bran Stark, uit een van de torens van Winterfell geduwd, na getuige te zijn geweest van de incestueuze affaire tussen koningin Cersei en haar tweelingbroer, Jaime Lannister.', 1, 7, 'UK', 'EN', 'series'),
(3, 'Breaking Bad', '2.0', 'Walter White is in 2008 een overgekwalificeerde scheikundeleraar op een middelbare school in Albuquerque. Op het moment dat zijn vrouw onverwacht zwanger is van hun tweede kind, stort Walters wereld in. De dokter heeft vastgesteld dat hij terminaal ziek is. Walter heeft longkanker en lijkt niet lang meer te zullen leven. Om ervoor te zorgen dat zijn gezin na zijn dood niet in een financiële crisis belandt en tevens om zijn eigen behandelingen te betalen, besluit Walter over te schakelen op een leven als misdadiger. Met de hulp van Jesse Pinkman, een uitgevallen leerling die hij nog scheikunde gegeven heeft, maakt en verkoopt hij de drug crystal meth. Terwijl hij doorgaat met lesgeven, komt het belang van scheikunde in de moderne maatschappij prangend in zijn lessen naar voren. Zijn product is meer dan 99% zuiver en dit feit loopt als een rode draad door de hele serie heen.', 1, 3, 'UK', 'EN', 'series'),
(4, 'Penoza', '3.2', 'Hoofdrolspeelster Carmen van Walraven (Monic Hendrickx) ontdekt dat haar man Frans (Thomas Acda) een veel belangrijker rol in de onderwereld speelt dan ze dacht. Ze dwingt hem dan ook ermee te stoppen. Net wanneer alles weer goed lijkt te gaan, wordt haar man voor de ogen van hun jongste zoon Boris (Stijn Taverne) geliquideerd. Carmen krijgt last van schuldeisers en bedreigingen. Ook justitie zit achter haar aan omdat die wil dat zij gaat getuigen tegen de compagnons van haar man.Carmen wil niet als beschermd getuige door het leven gaan en kiest voor een moeilijk alternatief: ze werkt zich naar de top van de georganiseerde misdaad, waar niemand nog aan haar of haar gezin durft te komen. In het vervolg daarop weet ze al snel niet meer wie ze moet vertrouwen, en worden de grenzen tussen goed en kwaad steeds onduidelijker.', 0, 3, 'NL', 'NL', 'series'),
(5, 'De luizenmoeder', '4.8', 'Het verhaal speelt zich af op de fictieve basisschool De Klimop in Dokkum. De school heeft een zwaar jaar achter de rug, waarin enkele leraren en de conciërge ontslagen zijn. Het is nu aan de schoolleiding om in het nieuwe schooljaar een frisse start te maken. Centraal staan Hannah (Jennifer Hoffman), de moeder van Floor, de \'luizenmoeder\', en juf Ank (Ilse Warringa), de kordate onderwijzeres. Als moeder van een nieuwe leerling moet Hannah zich staande houden in een absurdistische wereld van hangouders, moedermaffia, schoolpleinregels, rigide verjaardagsprotocollen, verantwoorde traktaties, parkeerbeleid, appgroepjes, ouderparticipatie en ander leed. Ook worden de belevenissen van de andere ouders en de schoolleiding gevolgd. De ouders (moeders) worden geacht het onderwijs te ondersteunen als vrijwilligers en de onderste tree in de bijbehorende hiërarchie die tot de ouderraad loopt is die van luizenmoeder, de moeder die schoolkinderen met een luizenkam controleert op luizen in het haar en deze verwijdert.', 1, 2, 'NL', 'NL', 'series'),
(6, 'My little pony', '1.0', 'De serie begint met een eenhoorn genaamd Twilight Sparkle, een student van Equestria\'s heerser, prinses Celestia. Nadat ze ziet hoe haar student zich alleen maar bezighoudt met boeken, stuurt prinses Celestia haar naar Ponyville met de opdracht een paar vrienden te maken. Twilight Sparkle, samen met haar assistent, een babydraak genaamd Spike, raakt bevriend met de pony\'s Pinkie Pie, Applejack, Rainbow Dash, Rarity en Fluttershy. Samen beleven ze avonturen binnen en buiten de stad en lossen ze diverse problemen op. De meeste afleveringen eindigen met Twilight Sparkle of iemand anders die een brief schrijft aan de prinses over wat ze die aflevering geleerd heeft over de magie van de vriendschap. Ook zit er in iedere aflevering een belangrijke les over vriendschap.', 0, 25, 'UK', 'NL', 'series'),
(8, 'ddsfsdf', '4.0', 'sddfjgdifklfgmk,l', 1, 4, 'NL', 'NL', 'series');
--
-- Indexen voor geëxporteerde tabellen
--
--
-- Indexen voor tabel `movies`
--
ALTER TABLE `movies`
ADD PRIMARY KEY (`id`);
--
-- Indexen voor tabel `series`
--
ALTER TABLE `series`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT voor geëxporteerde tabellen
--
--
-- AUTO_INCREMENT voor een tabel `movies`
--
ALTER TABLE `movies`
MODIFY `id` mediumint(9) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT voor een tabel `series`
--
ALTER TABLE `series`
MODIFY `id` mediumint(9) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=#OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=#OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=#OLD_COLLATION_CONNECTION */;
Thanks for your time.
Maybe you could try adding a hidden <input> in order to differenciate between movies and series, like so:
<input type="hidden" id="typeMovie" name="typeMovie">
And the same input type goes for the series.
Then you would check if that value isset:
if (isset($_POST["typeMovie"])) {
...
}
since you are using $_POST['submit'] to check which form to display only
what you have here is nesting the two function to add the details in the database inside the conditional statement to check which type is selected
this is what you have
if(submit){
if(submit2){
// add series
}
if(submitMovie){
//add movie
}
}
you should have the conditional statements to add movies and series outside the check for submit
if(submit2){
// add series
}
if(submitMovie){
//add movie
}
if(submit){
if ($_POST['type'] == 'series'){
//display series form
}else{
//display movie form
}
}
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Netland!</title>
</head>
<body>
<?php
include_once 'db.php';
$db = new Database(); ?>
<?php if (isset($_POST['submitMovie'])) {
$title = $_POST['title'];
$length = $_POST['length'];
$release_date = $_POST['release_date'];
$origin = $_POST['origin'];
$summary = $_POST['summary'];
$youtube_id = $_POST['youtube_id'];
$db->addMovie($title, $length, $release_date, $origin, $summary, $youtube_id);
} ?>
<?php if (isset($_POST['submit2'])) {
$title = $_POST['title'];
$rating = $_POST['rating'];
$summary = $_POST['summary'];
$awards = $_POST['awards'];
$seasons = $_POST['seasons'];
$country = $_POST['country'];
$language = $_POST['language'];
$db->addSerie($title, $rating, $summary, $awards, $seasons, $country, $language);
} ?>
<h1>Film of Serie toevoegen</h1>
<p>Terug</p>
<form method='post'>
<select name="type" id="type">
<option value="films">Film</option>
<option value="series">Serie</option>
</select>
<input type="submit" value="Voeg Toe" name="submit">
</form>
<?php if (isset($_POST['submit'])) { ?>
<?php if ($_POST['type'] == 'series'){ ?>
<form method="post">
<h1>Nieuwe Serie toevoegen</h1>
<p>Terug</p>
<p><b>Title: </b><input type="text" id="title" name="title"><br></p>
<p><b>Rating: </b><input type="number" id="rating" name="rating"><br></p>
<p><b>Omschrijving</p></b><textarea name="summary" rows="12" cols="80" id="summary"></textarea><br>
<p><b>Awards: </b><input type="text" id="awards" name="awards"><br></p>
<p><b>Seasons: </b><input type="text" id="seasons" name="seasons"><br></p>
<p><b>Country: </b><input type="text" id="country" name="country"><br></p>
<p><b>Language: </b><input type="text" id="language" name="language"><br></p>
<input type="submit" value="Update" name="submit2">
</form>
<?php }
else { ?>
<form method="post">
<p><b>Title: </b><input type="text" id="title" name="title"><br></p>
<p><b>Length: </b><input type="number" id="length" name="length"><br></p>
<p><b>Release date: </b><input type="text" id="release_date" name="release_date"><br></p>
<p><b>Origin: </b><input type="text" id="origin" name="origin" value=""><br></p>
<p><b>Omschrijving</p></b><textarea name="summary" rows="12" cols="80" id="summary"></textarea><br>
<p><b>Youtube ID: </b><input type="text" id="youtube_id" name="youtube_id"><br></p>
<input type="submit" value="Voeg Toe" name="submitMovie" id="submitMovie">
</form>
<?php } ?>
<?php } ?>
</body>
</html>
Related
Restaurant menu sorted by type of meal
I'm trying to sort a restaurant menu by type of meal. So appetizers first, main dish second, desert last. When adding it to the database I use "soort" which gives it a type of meal. When I run this code it wil show me the main dish, desert, appetizer which is the wrong order. I can't figure out how to sort it the way I want it. <?php // vul de variable in die gebruikt worden om een connectie te maken (inlog gegevens) $servername = "localhost"; $username = "root"; $password = ""; $naam = $soort = $prijs = $bijzonderheden = ""; $foutmelding1 = $foutmelding2 = $foutmelding3 = $foutmelding4 = ""; try { $pdo = new PDO("mysql:host=$servername;dbname=restaurant", $username, $password); // set the PDO error mode to exception $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } // connectie is mislukt catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?> <html> <head> </head> </body> <table> <tr> <th> Gerecht </th> <th> Soort </th> <th> Prijs </th> <th> Bijzonderheden </th> </tr> <?php $sth = $pdo->prepare('select * from gerechten ORDER BY Soort '); $sth->execute(); while($row = $sth->fetch()) { echo "<tr> "; echo "<td>" . $row['Naam'] . "</td>"; echo "<td>" . $row['Soort'] . "</td>"; echo "<td> " . $row['Prijs'] . "</td>"; echo "<td> " . $row['Bijzonderheden'] . "</td>"; echo "</tr> "; } // de update knoppen doorverwijzen met een href --> en dan een form maken voor 1 rij <----------- ?> </table> <style type="text/css"> table { border-collapse: ; border: 1px solid black; padding: 5px; } td { /* border: 1px solid black; width: 25px; */ text-align: center; padding: 15px; } </style> </html> This is the code that inserts the data in the database <?php // vul de variable in die gebruikt worden om een connectie te maken (inlog gegevens) $servername = "localhost"; $username = "root"; $password = ""; $naam = $soort = $prijs = $bijzonderheden = ""; $foutmelding1 = $foutmelding2 = $foutmelding3 = $foutmelding4 = ""; try { $pdo = new PDO("mysql:host=$servername;dbname=restaurant", $username, $password); // set the PDO error mode to exception $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } // connectie is mislukt catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } // maakt een query if(isset($_POST['submit'])) { // begin waarde van de fout check variable $fout = FALSE; // POST bijzonderheden mag hier wel blijven, want dat veld is niet verplicht om in te vullen. $bijzonderheden = $_POST['bijzonderheden']; // checkt of het veld 'naam' gevult is, zo niet dan geeft hij de melding vul het veld naam in if (!empty($_POST['naam'])) { $naam = $_POST['naam']; } else { $foutmelding1 = "vul het veld naam in"; $fout = TRUE; } // checkt of het veld 'soort' gevult is, zo niet dan geeft hij de melding vul het veld naam in if (!empty($_POST['soort'])) { $soort = $_POST['soort']; } else { $foutmelding2 = "vul het veld soort in"; $fout = TRUE; } // checkt of het veld 'prijs' gevult is, zo niet dan geeft hij de melding vul het veld naam in if (!empty($_POST['prijs'])) { $prijs = $_POST['prijs']; } else { $foutmelding3 = "vul het veld prijs in"; $fout = TRUE; } // checkt of het veld 'bijzonderheden' gevult is, zo niet dan geeft hij de melding vul het veld naam in // if (!empty($_POST['bijzonderheden'])) { // $bijzonderheden = $_POST['bijzonderheden']; // } // else { $foutmelding4 = "vul het veld bijzonderheden in"; // $fout = TRUE; // } if ($fout == FALSE) { // array aanmaken voor de parameters. // Een array wordt gebruikt om de gegevens beveiligd te houden. $parameters = array(':naam'=>$naam, ':soort'=>$soort, ':prijs'=>$prijs, ':bijzonderheden'=>$bijzonderheden); // maakt een query die iets in de database gaat zetten $sth = $pdo->prepare('INSERT INTO gerechten ( Naam, Soort, Prijs, Bijzonderheden) VALUES (:naam, :soort, :prijs, :bijzonderheden)'); $sth->execute($parameters); echo "toevoegen gelukt"; header("Refresh:3"); } } $sth = $pdo->prepare('select * from gerechten'); $sth->execute(); //while($row = $sth->fetch()) //{ // echo '<br />' . $row['Naam'].'<br />'.'<br />'; //} ?> <html> <body> <h2>Gerecht toevoegen aan de database</h2> <form action="" method="post"> Naam: <input type="text" name="naam" value="<?php echo $naam ?>"> <?php echo $foutmelding1; ?> <br> Soort: <select id="soort" name="soort"> <option value="voorgerecht" <?php if($soort == "voorgerecht") echo "selected" ?>>Voorgerecht</option> <option value="hoofdgerecht" <?php if($soort == "hoofdgerecht") echo "selected" ?>>Hoofdgerecht</option> <option value="nagerecht" <?php if($soort == "nagerecht") echo "selected" ?> >Nagerecht</option> </select> <?php echo $foutmelding2; ?><br> Prijs <input type="number" min="1" step="any" " name="prijs" value="<?php echo $prijs ?>"> <?php echo $foutmelding3; ?><br> Bijzonderheden <input type="text" name="bijzonderheden" value="<?php echo $bijzonderheden ?>"><br> <input type="submit" name="submit" value="verzenden"><br> </form> </body> </html>
Needed to store the meal order in db first. Table Meal Meal(int id_autonumber PK, varchar mealType key, int mealOrder) (1,appetiser,1) (2,main dish,2) ... etc Then you get ordered by invoke sql = select mealType from Meal order by mealOrder insert into wp_meal(mealType,mealOrder) values ('appetizer',1); insert into wp_meal(mealType,mealOrder) values ('desert',3); insert into wp_meal(mealType,mealOrder) values ('main dish',2); Look at differences CREATE TABLE `wp_meal` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `mealType` varchar(128) COLLATE utf8mb4_unicode_520_ci NOT NULL, `mealOrder` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
Database not receiving data send from PHP/HTML form
Okay so i have this form that is supposed to fill multiple tables but when i click on the send button, the page just refreshes, and when i check phpmyadmin the tables are empty. i have a code that is supposed to tell me if the data got succesfully registered in the database, but i cant get it to work either, it doesn't show up at all, not even to tell me the registration was not succesful. I've been struggling with this code for 3 days, im pretty new to coding but i tried every change i could an i still can't get it to work. Here's the code: HTML: <!DOCTYPE html> <html> <head> <title>Registro empleado</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css"> </head> <body> <form> <h1>Ingresar Datos</h1> <h3>Cliente</h3> <input type="number" name="id_cliente" placeholder="id_local"><!--ingreso del id--> <input type="text" name="nombre" placeholder="nombre"><!--ingreso del nombre del cliente--> <input type="text" name="domicilio" placeholder="domicilio"><!--ingreso del domicilio--> <input type="text" name="telefono" placeholder="telefono"><!--ingreso del numero de telefono--> <input type="text" name="edad" placeholder="edad"><!--ingreso de la edad del cliente--> <h3>Ganancias</h3> <input type="number" name="id_ganancias" placeholder="id_ganancias"><!--ingreso del id--> <input type="number" name="diarios1" placeholder="diarios"><!--ingreso de ganancias diarias--> <input type="number" name="mensuales1" placeholder="mensuales"><!--ingreso de ganancias mensuales--> <input type="number" name="anuales1" placeholder="anuales"><!--ingreso de ganancias anuales--> <h3>Gastos</h3> <input type="number" name="id_gastos" placeholder="id_gastos"><!--ingreso del id--> <input type="number" name="diarios2" placeholder="diarios"><!--ingreso de gastos diarios--> <input type="number" name="mensuales2" placeholder="mensuales"><!--ingreso de gastos mensuales--> <input type="number" name="anuales2" placeholder="anuales"><!--ingreso de gastos anuales--> <input type="submit" name="enviar"><!--botton de enviar--> </form> <form action="http://localhost/consulta_cliente.php"><!--link para phpadmin--> <input type="submit" value="consulta_cliente"><!--boton que te lleva phpadmin--> <form action="http://localhost/consulta_ganancias.php"><!--link para phpadmin--> <input type="submit" value="consulta_ganancias"><!--boton que te lleva phpadmin--> <form action="http://localhost/consulta_gastos.php"><!--link para phpadmin--> <input type="submit" value="consulta_gastos"><!--boton que te lleva phpadmin--> </form> <?php include("registrar_empleado.php");/*Llamado a el archivo php de registro*/ ?> </body> </html> PHP: <?php //Llamada a código de conexión include("conexion_empleado.php"); //validación de variables que recibirán cada campo de la tabla //cliente if (isset($_POST['enviar'])) { if (strlen($_POST['id_cliente']) >=1 && strlen($_POST['nombre']) >= 1 && strlen($_POST['domicilio']) >= 1 && strlen($_POST['edad']) >= 1 && strlen($_POST['telefono']) >= 1) { $id_cliente = trim($_POST['id_cliente']); $nombre = trim($_POST['nombre']); $domicilio = trim($_POST['domicilio']); $telefono = trim($_POST['telefono']); $edad = trim($_POST['edad']); //inserción de registros en la tabla datos $consulta1 = "INSERT INTO cliente(id_cliente, nombre, domicilio, telefono, edad) VALUES ('$id_cliente', '$nombre', '$domicilio', '$edad', '$telefono')"; $resultado1 = mysqli_query($conecta,$consulta1); //ganancias if (strlen($_POST['id_ganancias']) >=1 && strlen($_POST['diarios1']) >= 1 && strlen($_POST['mensuales1']) >= 1 && strlen($_POST['anuales1']) >= 1) { $id_ganancias = trim($_POST['id_ganancias']); $diarios1 = trim($_POST['diarios1']); $mensuales1 = trim($_POST['mensuales1']); $anuales1 = trim($_POST['anuales1']); $consulta2 = "INSERT INTO ganancias(id_ganancias, diarios, mensuales, anuales) VALUES ('$id_ganancias', '$diarios1', '$mensuales1', '$anuales1')"; $resultado2 = mysqli_query($conecta,$consulta2); //gastos if (strlen($_POST['id_gastos']) >=1 && strlen($_POST['diarios2']) >= 1 && strlen($_POST['mensuales2']) >= 1 && strlen($_POST['anuales2']) >= 1) { $id_gastos = trim($_POST['id_gastos']); $diarios2 = trim($_POST['diarios2']); $mensuales2 = trim($_POST['mensuales2']); $anuales2 = trim($_POST['anuales2']); $consulta3 = "INSERT INTO gastos(id_gastos, diarios, mensuales, anuales) VALUES ('$id_gastos', '$diarios2', '$mensuales2', '$anuales2')"; $resultado3 = mysqli_query($conecta,$consulta3); if ($resultado1 && $resultado2 && $resultado3) { ?> <h3 class="completo">Registro exitoso</h3> <?php } else { ?> <h3 class="incompleto">Error de registro</h3> <?php } } else { ?> <h3 class="incompleto">Por favor completa el registro</h3> <?php } } } } ?> PHP code to connect to the database: <?php //código para asignar las variables para la conexión: localhost = nombre servido, usuario = root, nombre_BD = registro $conecta = mysqli_connect("localhost","root","","locales"); ?> I have some code to show the last rows that were filled by the form, i can't test if it works yet since i can't get data to even get send to the database, anyways here it is just it case: Query1: <?php include("conexion_cliente.php");//Llamado a el documento php $consulta1_1 = "select * from pago";//se muestra la tabla pago $resultado1_1 = mysqli_query($conecta,$consulta1_1); $cuenta = mysqli_num_rows ($resultado); $cuenta = $cuenta - 1; $resultado1 = mysqli_query($conecta, "SELECT * FROM cliente LIMIT $cuenta, 1"); //consulta de tabla empleando //limit para obtener solo una fila echo "<h1>ULTIMO CAMPO</h1>"; //titulo echo "<pre>"; //atributo pre para poder realizar el salto de línea while($row1 = mysqli_fetch_array($resultado1)) { //se obtienen los arrays de la consulta echo print_r($row1); //se imprimen los resultados de la consulta echo "\n"; //salto de linea } echo "</pre>"; ?> Query2: <?php include("conexion_cliente.php");//Llamado a el documento php $consulta2_1 = "select * from pago";//se muestra la tabla pago $resultado2_1 = mysqli_query($conecta,$consulta2_1); $cuenta = mysqli_num_rows ($resultado); $cuenta = $cuenta - 1; $resultado2 = mysqli_query($conecta, "SELECT * FROM ganancias LIMIT $cuenta, 1"); //consulta de tabla empleando //limit para obtener solo una fila echo "<h1>ULTIMO CAMPO</h1>"; //titulo echo "<pre>"; //atributo pre para poder realizar el salto de línea while($row2 = mysqli_fetch_array($resultado2)) { //se obtienen los arrays de la consulta echo print_r($row2); //se imprimen los resultados de la consulta echo "\n"; //salto de linea } echo "</pre>"; ?> Query3: <?php include("conexion_cliente.php");//Llamado a el documento php $consulta3_1 = "select * from gastos";//se muestra la tabla gastos $resultado3_1 = mysqli_query($conecta,$consulta3_1); $cuenta = mysqli_num_rows ($resultado); $cuenta = $cuenta - 1; $resultado3 = mysqli_query($conecta, "SELECT * FROM gastos LIMIT $cuenta, 1"); //consulta de tabla empleando //limit para obtener solo una fila echo "<h1>ULTIMO CAMPO</h1>"; //titulo echo "<pre>"; //atributo pre para poder realizar el salto de línea while($row3 = mysqli_fetch_array($resultado3)) { //se obtienen los arrays de la consulta echo print_r($row3); //se imprimen los resultados de la consulta echo "\n"; //salto de linea } echo "</pre>"; ?> Sorry it's written in spanish, im from mexico but i noticed that this "us" page was more active than the "es" one. Any help it's greatly appreciated and if you have any language related question i'll be glad to answer.
Update mysqli database by filling in only one of many input fields
I am making a very simple movie database, with the possibility to update the movies that are in it. All you have to do is fill in the fields underneath the table. However, when you fill in the id and only one other field, like film_id, the description etc. are erased from the table. How do i make sure that it's possible to change only one thing? The code for the page: <!doctype html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <?php session_start(); //Start sessie. function is_logged() { if (isset($_SESSION['username'])) return true; return false; //De gebruikersnaam wordt gecontroleerd } if(!is_logged()){ header("Location: sign-in.php"); //Als de gebruiker naar overzichtlogin.php gaat, zonder dat hij of zij is ingelogd, worden ze doorgestuurd naar de login pagina. } require_once('db_const.php'); //De gegevens voor het maken van de verbinding met de database staan in dit bestand gedeclareerd. $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); if (!$mysqli){ die("Connection failed: ".mysqli_connect_error()); //Als de verbinding niet lukt zal deze niet werken. } ?> <?php $current = 'secured'; ?> <!-- Om aan te geven dat men zich op de beveiligde overzichtspagina bevindt, wordt gebruik gemaakt van deze variabele. Current krijgt nu de waarde 'secured', waardoor de button waar 'secured' staat een kleur krijgt. --> <div class="header"> <?php if(isset($_SESSION['username'])){ require_once("headersecured.php"); //Indien de gebruiker ingelogd is, wordt 'headersecured.php' gebruikt als header. }else{ require_once("header.php"); //Indien de gebruiker niet is ingelogd, wordt header.php gebruikt als header. } ?> </div> <h1>Filmoverzicht</h1> <?php $sql = "SELECT film_id, title, description, release_year, rating FROM films"; //De gewenste gegevens uit de database worden geselecteerd. $result = $mysqli->query($sql); if ($result->num_rows > 0) { echo "<table style='border: solid 1px grey; margin-left: auto; margin-right: auto; margin-top:50px;'><tr><th>ID</th> <th>Titel</th> <th>Beschrijving</th> <th>Jaar</th> <th>Rating</th> <th> </th></tr>"; while($row = $result->fetch_assoc()) { echo "<tr><td>" .$row["film_id"] . "<td>" .$row["title"] . "<td>" . $row["description"] . "<td>" . $row["release_year"]. "<td> " . $row["rating"]. "<td> " . '<td><a class="alert" href="deletemovie.php? id='.$row['film_id'].'" > </i>'?> VERWIJDER <?php '</a></td>'; } //De beschikbare gegevens worden weergegeven. echo "</table>"; } else { echo "0 results"; } ?> <br><br> <form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> <!--De bewerkfunctie wordt op dezelfde pagina uitgevoerd.--> <h2>Films bewerken</h2> <input name="film_id" required="required" placeholder="ID"> <input name="title" placeholder="Titel film"> <textarea id="textarea" name="description" cols="20" rows="5" placeholder="Beschrijving"></textarea> <input name="release_year" placeholder="Uitkomstjaar"> <input name="rating" placeholder="Beoordeling"> <input id="submit" name="submit" type="submit" value="Wijzigen"> <!-- In deze invulvelden kunnen nieuwe gegevens worden ingevoerd, zodat de films worden aangepast. --> <?php if (isset($_POST['submit'])) { $film = $_POST["film_id"]; //Slaat de gegevens voor het ingevoerde ID op in een variabele. $title = $_POST["title"]; //Slaat de gegevens voor de ingevoerde titel op in een variabele. $description = $_POST["description"]; //Slaat de gegevens voor de ingevoerde beschrijving op in een variabele. $year = $_POST["release_year"]; //Slaat de gegevens voor het ingevoerde jaar op in een variabele. $rating = $_POST["rating"]; //Slaat de gegevens voor de ingevoerde rating op in een variabele. $sql = "UPDATE films SET film_id = '$film', title = '$title', description = '$description', release_year = '$year', rating = '$rating' WHERE film_id = $film"; //De tabel 'films' in MySQL wordt geselecteerd, de gegevens die in de variabelen zijn opgeslagen worden gewijzigd in de database. if (mysqli_query($mysqli, $sql)) { // Voert de actie uit echo "<br>"; // Wit ruimte echo "<br>"; // Wit ruimte echo "<br>"; // Wit ruimte echo "Succesvol aangepast!"; // Geeft aan dat het aangepast is echo "<br>"; // Wit ruimte echo "<a href='overzichtspagina.php'>Terug naar de vorige pagina.</a>"; // een link waar de gebruiker terug kan gaan naar de vorige pagina } else { echo "Error: " . $sql . "<br>" . mysqli_error($mysqli); // geef fout melding aan de gebruiker als het mis gaat } } ?> </form> <?php $mysqli->close(); //Verbinding wordt verbroken. ?> <div class="footer"> <?php include 'footer.php';?> <!-- De footer wordt opgehaald. --> </div> </body> </html>
The problem is when the $_POST["description"] is not defined the value of $description is taken as NUll. In order to avoid this the Update query has to be constructed dynamicaly. $sql = "UPDATE films SET film_id = '$film', title = '$title'"; if(isset($_POST["description"])) { $description = $_POST["description"]; $sql .= ", description = $description" } $sql .= ", release_year = '$year', rating = '$rating' WHERE film_id = $film"; In this case when the $_POST["description"] is not set the query becomes "UPDATE films SET film_id = '$film', title = '$title', release_year = '$year', rating = '$rating' WHERE film_id = $film"; or else the query becomes "UPDATE films SET film_id = '$film', title = '$title', description = $description, release_year = '$year', rating = '$rating' WHERE film_id = $film";
You have to check on multiple values for validation, because you want that at least one field (other than film ID) is completed. If none provided, than notify the user. This validation should be made on client-side (with js, jquery, validation plugins, etc). Then, you must dynamically build your sql statement. Use sprintf() function for such "complex" constructs. It's very elegant. In it, the %s parts are placeholders for the variables. Please notice the UPDATE statement: you don't want to update the film_id field! You must use it ONLY to select the one record which you want to update (e.g. just in WHERE clause). If you want to change film_id, you must reinsert a record with the new id. You are missing the <body> tag. I was bringing last php code UNDER the </form> tag. As a general rule: separate display logic from server processing. <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>My films</title> </head> <body> <?php $mysqli = new mysqli('localhost', 'root', 'root', 'tests'); if (!$mysqli) { die("Connection failed: " . mysqli_connect_error()); } ?> <!-- ... --> <form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> <h2>Films bewerken</h2> <input name="film_id" required="required" placeholder="ID"> <input name="title" placeholder="Titel film"> <textarea id="textarea" name="description" cols="20" rows="5" placeholder="Beschrijving"></textarea> <input name="release_year" placeholder="Uitkomstjaar"> <input name="rating" placeholder="Beoordeling"> <input id="submit" name="submit" type="submit" value="Wijzigen"> </form> <?php if (isset($_POST['submit'])) { $film = $_POST["film_id"]; $title = $_POST["title"]; $description = $_POST["description"]; $year = $_POST["release_year"]; $rating = $_POST["rating"]; $message = '<br/><br/><br/>'; if (!isset($film)) { $message .= 'You must provide the film ID!'; } elseif ( (!isset($title) || empty($title)) && (!isset($description) || empty($description)) && (!isset($year) || empty($year)) && (!isset($rating) || empty($rating)) ) { $message .= 'You must provide at least one field for the selected film ID!'; } else { $sql = sprintf( "UPDATE films SET %s%s%s%s WHERE film_id = %s" , isset($title) ? "title = '$title'" : "" , isset($description) ? ", description = '$description'" : "" , isset($year) ? ", release_year = '$year'" : "" , isset($rating) ? ", rating = '$rating'" : "" , $film ); if (mysqli_query($mysqli, $sql)) { $message .= "Succesvol aangepast!"; $message .= "<br>"; $message .= "<a href='overzichtspagina.php'>Terug naar de vorige pagina.</a>"; } else { $message .= "Error: " . $sql . "<br>" . mysqli_error($mysqli); } } echo $message; } $mysqli->close(); ?> </body> </html> EDIT 1: I recommend you to use exception handling. Here is an example: try { // Connect to db. $mysqli = new mysqli('localhost', 'root', 'root', 'tests'); if (!isset($mysqli) || !$mysqli) { throw new Exception("Connection failed: " . mysqli_connect_error()); } // Run query on db. $query = mysqli_query($mysqli, $sql); if (!$query) { throw new Exception('The statement can not be executed!'); } $mysqli->close(); } catch (Exception $exception) { echo $exception->getMessage(); /* * OR display the whole error information. * But only in the development stage! */ // echo '<pre>' . print_r($exception, true) . '</pre>'; exit(); } Don't forget to add a <title> tag to your page.
PHP: Undefined index: inputfile
I want to upload a image to my server but i get this error: Notice: Undefined index: inputfile This is the form that i use for the upload: <div class="form-group"> <label class="col-md-2 control-label" for="inputfile">Foto uploaden</label> <div class="col-md-5"> <input id="inputfile" name="inputfile" class="input-file" type="file"> </div> </div> and when the user presses 'submit' then he 'll post the form to this: if (isset($_POST['submit'])) { // Haalt de extenties op $ext = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png'); // Bekijkt bestandsgrootte (Max. 20 MB) // Als bestand te groot is dan stopt die. if ($_FILES["inputfile"]["size"] > 20971520) { echo 'Bestandsformaat te groot! Zorg er voor dat de afbeeldingsgrootte kleiner is dan 20 MB.'; exit; } // Als bestand voldoet aan juiste extentie if (in_array($_FILES['inputfile']['type'], $ext)) { // Mapnaam voor de foto's $dir = 'uploads'; // Als de map 'uploads' niet bestaat // dan wordt hij hier aangemaakt if (!file_exists($dir)) { mkdir($dir, 0777); } // Bestand wordt ge-upload if (is_uploaded_file($_FILES['inputfile']['tmp_name'])) { // $path = 'pics/'; $path =$dir.'/'; if (!file_exists($path . $_FILES['inputfile']['name'])) { move_uploaded_file($_FILES['inputfile']['tmp_name'], $path . $_FILES['inputfile']['name']); $foto_titel = $_POST['naamfoto']; $foto_omschrijving = $_POST['omschrijvingfoto']; $foto_url = "admin/uploads/".$_FILES["inputfile"]["name"]; // Geeft melding dat bestand ge-upload is naar de server echo '<p>Foto geplaatst!</p>'; echo '<p><img class="geuploade-foto" src="uploads/'.$_FILES["inputfile"]["name"].'" /></p>'; echo '<p><strong>Naam:</strong> ' . $foto_titel . '<br>'; echo '<strong>Omschrijving:</strong> ' . $foto_omschrijving . '<br>'; // Begin met insert in de database $bnb = $pdo->prepare('INSERT INTO cases (photo_title, photo_url, photo_description) VALUES (?, ?, ?)'); $bnb->execute(array($foto_titel, $foto_url, $foto_omschrijving)); //Verbinding afsluiten $pdo = null; }else { echo '<p>Afbeelding bestaat al en dus kon deze niet toegevoegd worden op de website.</p>'; } // Als er om een reden niet aan de ifs // kan worden voldaan wordt deze // error getoond }else{ echo 'Bestand niet geupload vanwege een onbekende error'; } } } Tried much but nothing worked yet.
Do you have a php.ini file I believe you need one for image uploading? http://www.w3schools.com/php/php_file_upload.asp
error 500 with functioning script PHP
I'm trying to create a simple registration script in PHP that adds the input of the form to a database. The script throws an error 500 when loading, and Godaddy's customer support tells me it's my script. For reference, I'm using Parallel's Plesk for hosting and MyLittleAdmin (MSSQL) for the DB (as provided by GoDaddy). The script I've written works fine on another server, but not on the one provided by GoDaddy. They say it's not an issue with their server; could it be somewhere inbetween? Important note: commenting out everything from $link = db_contact(); to mysql_close($link); makes the script work fine otherwise. Scripts: "db.php" (connecting to database): <?php $db_server = "/"; $db_user = "Milan"; $db_pass = "/"; $db_name = "/"; function db_contact() { global $db_server, $db_user, $db_pass, $db_name; // maak contact met de sql server $db = mysql_connect($db_server,$db_user,$db_pass) or die("Fout: Er is geen verbinding met de MySQL-server tot stand gebracht!"); // selecteer de juiste database mysql_select_db($db_name,$db) or die("Fout: Het openen van de database is mislukt!"); // geef een handle naar de database terug return $db; } ?> registreren.php (form & script) <?php error_reporting(E_ERROR | E_WARNING | E_PARSE); include "db.php"; ?> <!DOCTYPE HTML> <html> <head> </head> <body> <form action="registreren.php" method="post"> <table> <tr> <td>Voornaam *</td> <td><input type="text" name="voornaam" /></td> </tr> <tr> <td>Tussenvoegsel</td> <td><input type="text" name="tussenvoegsel" /></td> <tr/> <tr> <td>Achternaam *</td> <td><input type="text" name="achternaam" /></td> </tr> <tr> <td>Email-adres *</td> <td><input type="text" name="email" /></td> </tr> <tr> <td>Telefoonnummer</td> <td><input type="text" name="telefoonnummer" /></td> </tr> <tr> <td>Woonplaats *</td> <td><input type="text" name="woonplaats" /></td> </tr> <tr> <td>Geboortedatum *</td> <td><input type=date name="geboortedatum" step=1 min=1990-01-01 max=2010-31-12></td> </tr> <tr> <td>Geslacht *</td> <td><input type="radio" name="geslacht" value="man">Man <input type="radio" name="geslacht" value="vrouw">Vrouw</td> </tr> <tr> <td>School <td> <select name="school"> <option value="Jan van Brabant College Molenstraat">Jan van Brabant College Molenstraat</option> <option value="Jan van Brabant College">Jan van Brabant College Deltaweg</option> <option value="Knippenberg College">Knippenberg College</option> <option value="Carolus Borromeus College">Carolus Borromeus College</option> </select> </td> </tr> <tr> <td>Niveau</td> <td> <select name="niveau"> <option value="VMBO-T">VMBO-T</option> <option value="VMBOT/HAVO">VMBO-T/HAVO</option> <option value="HAVO">HAVO</option> <option value="HAVO/VWO">HAVO/VWO</option> <option value="VWO">VWO</option> </select> </td> </tr> <tr> <td>Leerjaar</td> <td> <select name="leerjaar"> <option value="1">Leerjaar 1</option> <option value="2">Leerjaar 2</option> <option value="3">Leerjaar 3</option> <option value="4">Leerjaar 4</option> <option value="5">Leerjaar 5</option> <option value="6">Leerjaar 6</option> </select> </td> </tr> <tr> <td>Velden met een * zijn verplicht.</td> </tr> </table> <input type="submit" name="submit" value="Registreren" /> </form> </body> </html> <?php if(isset($_POST["submit"])) { $foutMelding = " "; //Deze variabele wordt gevuld met error messages en dan naar de user gestuurd. //Naamgegevens in variabelen veranderd $voornaam = $_POST["voornaam"]; $tussenvoegsel = $_POST["tussenvoegsel"]; $achternaam = $_POST["achternaam"]; //Persoonlijke gegevens in variabelen veranderd $email = $_POST["email"]; $telefoonnummer = $_POST["telefoonnummer"]; $woonplaats = $_POST["woonplaats"]; $geboorteDatum = $_POST["geboortedatum"]; $geslacht = $_POST["geslacht"]; //Schoolgegevens in variabelen veranderd $school = $_POST["school"]; $niveau = $_POST["niveau"]; $leerjaar = $_POST["leerjaar"]; //Controleert of verplichte velden ingevuld zijn. if(empty($voornaam) OR empty($achternaam) OR empty($email) OR empty($woonplaats)OR empty($geboorteDatum) OR empty($geslacht)) { $foutMelding = "Vergeet niet alle verplichte velden in te vullen."; } else { //Als alle verplichte velden ingevuld zijn, wordt gecontroleerd of alle invoeren geldig zijn. Fouten worden opgeslagen in $foutMelding. //Naamgegevens $voornaamPattern = "[a-zA-Z]{1,20}"; $tussenvoegselPattern = "[a-zA-Z ]{0,6}"; $achternaamPattern = "[a-zA-Z ]{1,30}"; if(!preg_match("/$voornaamPattern/", $voornaam)) { $foutMelding .= "Een voornaam bestaat alleen uit letters.<br>"; } if(!preg_match("/$tussenvoegselPattern/", $tussenvoegsel)) { $foutMelding .= "Zorg dat je een geldig tussenvoegsel invoert.<br>"; } if(!preg_match("/$achternaamPattern/", $achternaam)) { $foutMelding .= "Een achternaam bestaat alleen uit letters.<br>"; } //Overige gegevens if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { //Er wordt gecontroleerd of het opgegeven emailadres de correcte format heeft. $foutMelding .= "Je opgegeven email-adres is geen geldig adres.<br>"; } //Schoolgegevens //!Niet vergeten: onmogelijke combinaties VMBO-T/HAVO en HAVO/VWO ingeven! if(($niveau == "VMBO-T" && $leerjaar > 4) OR ($niveau == "HAVO" && $leerjaar > 5)) {//Hier worden onmogelijke niveau-klascombinaties uitgesloten $foutMelding .= "Deze klas bestaat niet voor dit niveau!"; } } if($foutMelding == " ") { //Begin email-verificatieproces. //We maken een 'hash' voor veiligheid en een random wachtwoord dat de gebruiker voor de eerste keer gebruikt. $hash = md5(rand(0,1000)); //32-karakters code $wachtwoord = rand(1000,5000); $link = db_contact(); $query = "INSERT INTO gebruiker (email, wachtwoord, voornaam, tussenvoegsel, achternaam, school, niveau, klas, telefoonnummer, woonplaats, geboortedatum, geslacht, hash, actief) VALUES ($email, (md5($wachtwoord)), $voornaam, $tussenvoegsel, $achternaam, $school, $niveau, $leerjaar, $telefoonnummer, $woonplaats, $geboorteDatum, $geslacht, $hash, 0)"; $result = mysql_query($query,$link) or die ("Kan de query niet uitvoeren"); mysql_close($link); //We sturen een email naar de gebruiker met de mail() functie. $to = $email; //Ontvanger van de email $subject = 'Dusjezoektbijles.nl || Verificatie'; // Onderwerp van de email. $message = ' Bedankt voor het aanmelden! Je account is gecreëerd en je kunt inloggen met de volgende gegevens (nadat je je account geactiveerd hebt met de link hier beneden): --------------------------------------------------------- Gebruikersnaam: '.$email.' Wachtwoord: '.$wachtwoord.' --------------------------------------------------------- Klik op de volgende link om je account te activeren: http://www.dusjezoektbijles.nl/verifieren.php?email='.$email.'&hash='.$hash.' '; //Het bericht in de mail $headers = 'From:noreply#dusjezoektbijles.nl' . "\r\n"; // Set from headers mail($to, $subject, $message, $headers); // Verstuur de email header('Location: Geregistreerd.php'); } else { echo"De volgende fouten werden gevonden bij het aanmaken van je profiel:<br><br><br>$foutMelding"; } } ?> Can anyone help me out?
Replace few lines with this,even don't work post your sql: $query = "INSERT INTO 'gebruiker' ('email', 'wachtwoord', 'voornaam', 'tussenvoegsel', 'achternaam', 'school', 'niveau', 'klas', 'telefoonnummer', 'woonplaats', 'geboortedatum', 'geslacht', 'hash', 'actief') VALUES ($email, (md5($wachtwoord)), $voornaam, $tussenvoegsel, $achternaam, $school, $niveau, $leerjaar, $telefoonnummer, $woonplaats, $geboorteDatum, $geslacht, $hash, 0)"; mysql_query($query) or die("error in $query == ---->".mysql_error());