Haha, grappige typfout.quote:Op woensdag 29 juli 2015 21:46 schreef Nemephis het volgende:
[..]
Je wilt sowieso meerdere formulieren die je toch al moet valideren, wat dat betreft zou het qua overhead toch geen verschil maken? Hooguit naar je template toe.
[..]
Het is allemaal de schuld van Rutte!
[..]
Het is weer extra werk, inderdaad...
Je edit een specifieke week dan? Want ik snap je probleem niet.quote:Op woensdag 29 juli 2015 21:49 schreef robin007bond het volgende:
[..]
Haha, grappige typfout.
Nja, ieder formulier heeft zijn eigen submit knop. Dus eigenlijk wil ik maar een formulier hoeven te valideren. Echter gaat dit gewoon niet.
Misschien voor de helderheid, inmiddels heb ik het dus zo:
http://symfony.com/doc/cu(...)orm_collections.html
Een form, in een form, in een form. (Weken, week, registratie)
Ik wil dat de week apart is te submitten.
jQueryquote:Op woensdag 29 juli 2015 21:49 schreef robin007bond het volgende:
Nja, ieder formulier heeft zijn eigen submit knop. Dus eigenlijk wil ik maar een formulier hoeven te valideren. Echter gaat dit gewoon niet.
Ik zie de code in php/html/JS zo voor me, zeg maar, maar ergens halverwege die template was ik likequote:Misschien voor de helderheid, inmiddels heb ik het dus zo:
http://symfony.com/doc/cu(...)orm_collections.html
Zonder verder te lezen of die link te bekijken, je mag form tags in html niet nesten.quote:Op woensdag 29 juli 2015 21:49 schreef robin007bond het volgende:
Een form, in een form, in een form. (Weken, week, registratie)
Ja da's een goeiequote:Op woensdag 29 juli 2015 22:39 schreef Light het volgende:
[..]
Zonder verder te lezen of die link te bekijken, je mag form tags in html niet nesten.
Symfony forms kun je wel nesten/embedden. Als je het form dan rendert wordt er één form tag gemaakt met (ook) de velden van de embedded forms erinquote:Op woensdag 29 juli 2015 22:39 schreef Light het volgende:
[..]
Zonder verder te lezen of die link te bekijken, je mag form tags in html niet nesten.
Klopt. Één heel groot vorm, terwijl ik allemaal aparte forms wil.quote:Op woensdag 29 juli 2015 22:58 schreef KomtTijd... het volgende:
[..]
Symfony forms kun je wel nesten/embedden. Als je het form dan rendert wordt er één form tag gemaakt met (ook) de velden van de embedded forms erin
Dat was op zich ook wel te verwachten. Ik schrik alleen al bij voorbaat als iemand het heeft over forms in formsquote:Op woensdag 29 juli 2015 22:58 schreef KomtTijd... het volgende:
[..]
Symfony forms kun je wel nesten/embedden. Als je het form dan rendert wordt er één form tag gemaakt met (ook) de velden van de embedded forms erin
Maak je geen zorgen, dat wil ik ook niet.quote:Op donderdag 30 juli 2015 08:02 schreef Light het volgende:
[..]
Dat was op zich ook wel te verwachten. Ik schrik alleen al bij voorbaat als iemand het heeft over forms in forms
quote:Daar wordt direct al info gestuurd naar de database (een lege rij is daar te zien). Vervolgens kan je het formulier invullen en wordt de ingevulde gegevens getoond, en op de juiste manier in de database geplaatst
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <!DOCTYPE HTML> <html> <head> <style> .error {color: #FF0000;} </style> </head> <body> <?php include 'input.php';?> <?php include 'toevoegen.php';?> <h2>Testformulier</h2> <p>Hieronder kunt u uw (of fictieve) gebruikersgegevens invullen. <br ?> De verstuurde gegevens ziet u onderaan en worden in een mysql database opgeslagen.<br /> <br /> <p><span class="error">* Benodigde velden.</span></p> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Naam: <input type="text" name="naam" value="<?php echo $naam;?>"> <span class="error">* <?php echo $naamErr;?></span> <br /><br /> E-mail: <input type="text" name="email" value="<?php echo $email;?>"> <span class="error">* <?php echo $emailErr;?></span> <br /><br /> Website: <input type="text" name="website" value="<?php echo $website;?>"> <span class="error"><?php echo $websiteErr;?></span> <br /><br /> Comment: <br /> <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea> <br /><br /> <input type="submit" name="submit" value="Submit"> </form> <?php echo "<h2>De door u ingevulde gegevens:</h2>"; echo $naam; echo "<br />"; echo $email; echo "<br />"; echo $website; echo "<br />"; echo $comment; ?> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php // define variables and set to empty values $naamErr = $emailErr = $websiteErr = ""; $naam = $email = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["naam"])) { $naamErr = "Het invullen van een naam is noodzakelijk"; } else { $naam = test_input($_POST["naam"]); // check if naam only contains letters and whitespace if (!preg_match("/^[a-zA-Z ]*$/",$naam)) { $naamErr = "Alleen letters en spaties zijn toegestaan"; } } if (empty($_POST["email"])) { $emailErr = "Een e-mail adres is noodzakelijk"; } else { $email = test_input($_POST["email"]); // check if email address is well-formed if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Geen kloppend e-mail formaat"; } } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); // check if URL address syntax is valid (this regular expression also allows dashes in the URL) if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "Ongeldig websiteformaat"; } } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $servername = "localhost"; $username = "root"; $password = "***"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $naam=$_POST['naam']; $email=$_POST['email']; $website=$_POST['website']; $comment=$_POST['comment']; $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES ('$naam', '$email', '$website', '$comment')"; if ($conn->query($sql) === TRUE) { echo "Succesvol toegevoegd"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> |
Een if eromheen zetten waarin je bijvoorbeeld checkt of $naam ingevuld is:quote:Op zaterdag 1 augustus 2015 18:13 schreef jodelahity het volgende:
Maar dit krijg ik dus niet voor elkaar. Wat moet ik bij die laatste code plaatsen dat het niet direct laadt bij het openen van form.php maar pas nadat het formulier ingevuld en verzonden is gaat runnen?
1 2 3 4 5 6 7 8 9 10 11 | if ($naam!='') { $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES ('$naam', '$email', '$website', '$comment')"; if ($conn->query($sql) === TRUE) { echo "Succesvol toegevoegd"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } |
1 2 3 4 5 6 7 8 9 10 11 | if ($naam!='' and $email!='' and $website!='') { $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES ('$naam', '$email', '$website', '$comment')"; if ($conn->query($sql) === TRUE) { echo "Succesvol toegevoegd"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } |
Oke maar het e-mail adres is verplicht, rijen zonder e-mail adres in de database is dan niet echt wat ik graag zou willen Wel bedankt hoor Maar is er ook iets mogelijk waarmee alles correct moet zijn voordat het uberhaupt naar de database gestuurd wordt?quote:Op zaterdag 1 augustus 2015 20:17 schreef Arcee het volgende:
[..]
Stel even dat je de validatie met de (zelfverzonnen) functie correct() doet, dan kun je zoiets doen:
[ code verwijderd ]
Je laat dus gewoon in het geval het e-mailadres niet correct is het veld email weg uit het INSERT-statement.
Ik las het ook net en had me post met verwijderd.quote:Op zaterdag 1 augustus 2015 20:19 schreef jodelahity het volgende:
Oke maar het e-mail adres is verplicht, rijen zonder e-mail adres in de database is dan niet echt wat ik graag zou willen Wel bedankt hoor Maar is er ook iets mogelijk waarmee alles correct moet zijn voordat het uberhaupt naar de database gestuurd wordt?
1 2 3 4 5 6 7 8 9 10 11 | if ($naam!='' and $email!='' and $website!='' and correct($email)) { $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES ('$naam', '$email', '$website', '$comment')"; if ($conn->query($sql) === TRUE) { echo "Succesvol toegevoegd"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } |
Ja, als je daar ook daadwerkelijk een dergelijke functie voor hebt of hebt gemaakt.quote:Op zaterdag 1 augustus 2015 20:22 schreef jodelahity het volgende:
Oke laatste vraag: de website hoeft niet perse ingevuld te worden. Maar als die dat wel is dan moet dat correct zijn. Kan ik daarvoor dan ook correct($website) gebruiken?
1 2 | filter_var($email, FILTER_VALIDATE_EMAIL) filter_var($website, FILTER_VALIDATE_URL) |
1 2 3 4 5 6 7 8 9 10 11 | if ($naam!='' and $email!='' and $website!='' and filter_var($email, FILTER_VALIDATE_EMAIL) and filter_var($website, FILTER_VALIDATE_URL)) { $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES ('$naam', '$email', '$website', '$comment')"; if ($conn->query($sql) === TRUE) { echo "Succesvol toegevoegd"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?php $servername = "localhost"; $username = "root"; $password = "***"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } if(isset($_POST["submit"])) { $naam=$_POST['naam']; $email=$_POST['email']; $website=$_POST['website']; $comment=$_POST['comment']; $sql = "INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES ('$naam', '$email', '$website', '$comment')"; if ($conn->query($sql) === TRUE) { echo "Succesvol toegevoegd"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } $conn->close(); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php // define variables and set to empty values $naamErr = $emailErr = $websiteErr = ""; $naam = $email = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["naam"])) { $naamErr = "Het invullen van een naam is noodzakelijk"; } else { $naam = test_input($_POST["naam"]); // check if naam only contains letters and whitespace if (!preg_match("/^[a-zA-Z ]*$/",$naam)) { $naamErr = "Alleen letters en spaties zijn toegestaan"; } } if (empty($_POST["email"])) { $emailErr = "Een e-mail adres is noodzakelijk"; } else { $email = test_input($_POST["email"]); // check if email address is well-formed if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Geen kloppend e-mail formaat"; } } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); // check if URL address syntax is valid (this regular expression also allows dashes in the URL) if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "Ongeldig websiteformaat"; } } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <!DOCTYPE HTML> <html> <head> <style> .error {color: #FF0000;} </style> </head> <body> <?php include 'input.php';?> <?php include 'toevoegen.php';?> <h2>Testformulier</h2> <p>Hieronder kunt u uw (of fictieve) gebruikersgegevens invullen. <br ?> De verstuurde gegevens ziet u onderaan en worden in een mysql database opgeslagen.<br /> <br /> <p><span class="error">* Benodigde velden.</span></p> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Naam: <input type="text" name="naam" value="<?php echo $naam;?>"> <span class="error">* <?php echo $naamErr;?></span> <br /><br /> E-mail: <input type="text" name="email" value="<?php echo $email;?>"> <span class="error">* <?php echo $emailErr;?></span> <br /><br /> Website: <input type="text" name="website" value="<?php echo $website;?>"> <span class="error"><?php echo $websiteErr;?></span> <br /><br /> Comment: <br /> <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea> <br /><br /> <input type="submit" name="submit" value="Submit"> </form> <?php echo "<h2>De door u ingevulde gegevens:</h2>"; echo $naam; echo "<br />"; echo $email; echo "<br />"; echo $website; echo "<br />"; echo $comment; ?> </body> </html> |
Pas het eens als volgt aan:quote:Op zaterdag 1 augustus 2015 20:40 schreef jodelahity het volgende:
Ik begrijp van je code dat het daarmee op te lossen is, ik zie zelf ook wel de logica daarvan in, alles definieren waaraan voldaan moet worden voordat het verstuurd wordt, maar ik doe blijkbaar dus toch iets fout daarbij
1 2 3 4 5 6 | if(isset($_POST["submit"]) and $naamErr=='' and $emailErr=='' and $websiteErr=='') { $naam=$_POST['naam']; $email=$_POST['email']; $website=$_POST['website']; $comment=$_POST['comment']; ... |
1 2 | <?php include 'toevoegen.php';?> <?php include 'input.php';?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php $servername = "localhost"; $username = "root"; $password = "***"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // Onderstaande stukje heb ik toegevoegd if(isset($_POST["submit"]) and $naamErr=='' and $emailErr=='' and $websiteErr=='') { $naam=$_POST['naam']; $email=$_POST['email']; $website=$_POST['website']; $comment=$_POST['comment']; $sql = $conn->prepare("INSERT INTO gebruikerscompleet (naam, email, website, comment) VALUES (?, ?, ?, ?)"); $sql->bind_param('ssss', $naam, $email, $website, $comment); if (!$sql->execute()) { echo "Error: " . $sql->error; } else { echo "Succesvol toegevoegd"; } } $conn->close(); ?> |
Dus je hebt een (rooie) melding achter 1 van de velden staan, maar er is toch een record toegevoegd met alle data?quote:Op zaterdag 1 augustus 2015 21:41 schreef jodelahity het volgende:
Het wordt naar de database gestuurd maar niet gevalideerd volgens de validatie die ik heb opgesteld in het andere input.php
Ja alles wordt gewoon toegevoegd. Alleen het wordt toegevoegd aan de database voordat het gevalideerd wordt. Dus ook 'test' komt als e-mail erin terwijl dat eigenlijk alleen 'test@hotmail.com' zou moeten zijn bijvoorbeeld.quote:Op zaterdag 1 augustus 2015 21:50 schreef Arcee het volgende:
[..]
Dus je hebt een (rooie) melding achter 1 van de velden staan, maar er is toch een record toegevoegd met alle data?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |