Validate errors
Code (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
include 'header.php'; //get the header
//functions
//Validate the title
function validatetitle(){
if(isset($_POST["submit_newnews"]) && empty($_POST["title_newnews"])) //is it empty or not
{
print ("<td>You didn't fill in a title.</td>\n");
return false;
}
else if(isset($_POST["submit_newnews"]) && (!preg_match("#^[A-Za-z0-9]+$#i", $_POST["title_newnews"])))
{
print ("<td>Title can only consist letters and numbers.</td>\n"); //have yet to add ()-_?!,.
return false;
}
else if(isset($_POST["submit_newnews"]) && !empty($_POST["title_newnews"]) && (preg_match("#^[A-Za-z0-9]+$#i", $_POST["title_newnews"])))
{
return true;
}
}
function validatecontent(){
if(isset($_POST["submit_newnews"]) && empty($_POST["content_newnews"])) //is it empty or not
{
print ("<td>You didn't fill in any news content.</td>\n");
return false;
}
else if(isset($_POST["submit_newnews"]) && (!preg_match("#^[A-Za-z0-9 .,?_!()-]+$#i", $_POST["content_newnews"])))
{
print ("<td>Content can only consist letters and numbers.</td>\n");
return false;
}
else if(isset($_POST["submit_newnews"]) && !empty($_POST["content_newnews"]) && (preg_match("#^[A-Za-z0-9]+$#i", $_POST["content_newnews"])))
{
return true;
}
}
function check(){ //check if validatetitle and validatecontent are true or not. If true you get redirected to new page
if(validatetitle() == false || validatecontent() == false){
return false;
}
if(validatetitle() == true && validatecontent() == true){
return true;
header: ('Location: upload_news.php');
}
}
?>
<div id="wrapper"> <!-- wrapper of the site needs to be closed in footer -->
<div id="wrappertop"></div>
<div id="bg"><!-- bg needs to be closed before wrapper in footer, this is for the background -->
<div id="side">
<?php include 'submenu.php'; ?>
</div>
<div id="content">
<div id="titlepage">
<h2>Upload news item</h2>
</div>
<form id="newnews" method="POST" action="<?php check() ?>" name="formnewnews"/>
<table id="formnewnews">
<tr>
<td><label>Title news article*</label></td>
<td><input type="text" name="title_newnews" id="title_newnews"/></td>
<?php validatetitle(); ?>
</tr>
<tr>
<td><label>News article**</label></td>
<td><textarea rows="6" cols="50" name="content_newnews" id="content_newnews"></textarea></td>
<?php validatecontent(); ?>
</tr>
<tr>
<td><input type="submit" name="submit_newnews" id="submit_newnews" value="upload new article"/></td>
</tr>
<tr>
<td><em style="font-size:10px;">*a-z, A-Z, 0-9 are allowed</em></td>
</tr>
<tr>
<td><em style="font-size:10px;">**a-z, A-Z, 0-9, ?!.-_() are allowed</em></td>
</tr>
</table>
</form>
</div>
<?php
include 'footer.php'; //get the footer
?>
include 'header.php'; //get the header
//functions
//Validate the title
function validatetitle(){
if(isset($_POST["submit_newnews"]) && empty($_POST["title_newnews"])) //is it empty or not
{
print ("<td>You didn't fill in a title.</td>\n");
return false;
}
else if(isset($_POST["submit_newnews"]) && (!preg_match("#^[A-Za-z0-9]+$#i", $_POST["title_newnews"])))
{
print ("<td>Title can only consist letters and numbers.</td>\n"); //have yet to add ()-_?!,.
return false;
}
else if(isset($_POST["submit_newnews"]) && !empty($_POST["title_newnews"]) && (preg_match("#^[A-Za-z0-9]+$#i", $_POST["title_newnews"])))
{
return true;
}
}
function validatecontent(){
if(isset($_POST["submit_newnews"]) && empty($_POST["content_newnews"])) //is it empty or not
{
print ("<td>You didn't fill in any news content.</td>\n");
return false;
}
else if(isset($_POST["submit_newnews"]) && (!preg_match("#^[A-Za-z0-9 .,?_!()-]+$#i", $_POST["content_newnews"])))
{
print ("<td>Content can only consist letters and numbers.</td>\n");
return false;
}
else if(isset($_POST["submit_newnews"]) && !empty($_POST["content_newnews"]) && (preg_match("#^[A-Za-z0-9]+$#i", $_POST["content_newnews"])))
{
return true;
}
}
function check(){ //check if validatetitle and validatecontent are true or not. If true you get redirected to new page
if(validatetitle() == false || validatecontent() == false){
return false;
}
if(validatetitle() == true && validatecontent() == true){
return true;
header: ('Location: upload_news.php');
}
}
?>
<div id="wrapper"> <!-- wrapper of the site needs to be closed in footer -->
<div id="wrappertop"></div>
<div id="bg"><!-- bg needs to be closed before wrapper in footer, this is for the background -->
<div id="side">
<?php include 'submenu.php'; ?>
</div>
<div id="content">
<div id="titlepage">
<h2>Upload news item</h2>
</div>
<form id="newnews" method="POST" action="<?php check() ?>" name="formnewnews"/>
<table id="formnewnews">
<tr>
<td><label>Title news article*</label></td>
<td><input type="text" name="title_newnews" id="title_newnews"/></td>
<?php validatetitle(); ?>
</tr>
<tr>
<td><label>News article**</label></td>
<td><textarea rows="6" cols="50" name="content_newnews" id="content_newnews"></textarea></td>
<?php validatecontent(); ?>
</tr>
<tr>
<td><input type="submit" name="submit_newnews" id="submit_newnews" value="upload new article"/></td>
</tr>
<tr>
<td><em style="font-size:10px;">*a-z, A-Z, 0-9 are allowed</em></td>
</tr>
<tr>
<td><em style="font-size:10px;">**a-z, A-Z, 0-9, ?!.-_() are allowed</em></td>
</tr>
</table>
</form>
</div>
<?php
include 'footer.php'; //get the footer
?>
Problemen:
- ik krijg de tekst 'You didn't fill in a title' 2 keer. 1 keer op de juiste plaats en 1 keer buiten de vlak onder het menu.
- Wanneer ik alles goed invul gaat hij naar <td>You didn't fill in a title.</td>
ps ben nieuw geen idee of ik het zo goed heb geupload ^^''
ps ik heb dislexie sorry voor eventuele spel- en grammatica fouten
Zet in het vervolg code-tags rond je code.
[/modedit]
Gewijzigd op 23/12/2010 21:25:29 door Jens V
Die roept validatetitle() en validatecontent() aan.
Daarna roep je validatetitle() ook aan op regel 63 en validatecontent() op regel 68
Daarnaast is je functie check() nogal onlogisch.
Daar staat toch geen <body> <head> ... ?
Wie leert de mensen eigenlijk om functies te schrijven tussen hun HTML?
Staat dat zo in boeken? Zijn eer leerkrachten/docenten die dat zo aanleren?
TJVB tvb op 24/12/2010 09:58:52:
Je roept op regel 58 de functie check() aan.
Die roept validatetitle() en validatecontent() aan.
Daarna roep je validatetitle() ook aan op regel 63 en validatecontent() op regel 68
Daarnaast is je functie check() nogal onlogisch.
Die roept validatetitle() en validatecontent() aan.
Daarna roep je validatetitle() ook aan op regel 63 en validatecontent() op regel 68
Daarnaast is je functie check() nogal onlogisch.
Hoezo is check() onlogisch? Ik snap nu wel waarom hij 2 keer verschijnt maar nog niet hoe ik dit moet gaan oplossen. de error moet namelijk een nieuwe <td> worden in de eerste <tr> bij het checken van de titel.
Toevoeging op 24/12/2010 11:06:18:
Kris Peeters op 24/12/2010 10:15:12:
header.php
Daar staat toch geen <body> <head> ... ?
Wie leert de mensen eigenlijk om functies te schrijven tussen hun HTML?
Staat dat zo in boeken? Zijn eer leerkrachten/docenten die dat zo aanleren?
Daar staat toch geen <body> <head> ... ?
Wie leert de mensen eigenlijk om functies te schrijven tussen hun HTML?
Staat dat zo in boeken? Zijn eer leerkrachten/docenten die dat zo aanleren?
in header.php staat het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
<script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
<?php
include 'log.php';
include 'banner.php';
include 'mainmenu.php';
?>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
<script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
<?php
include 'log.php';
include 'banner.php';
include 'mainmenu.php';
?>
Enkel belangerijke zaken daarin geplaatst. Header roept dus 3 andere bestanden op en opent de body. De body en html worden gesloten in footer.php
Dit doet het zelfde:
Code (php)
Als je al een true teruggeeft, zal die
header: ('Location: upload_news.php');
niet meer worden uitgevoerd.
Mocht die wel worden uitgevoerd, zou die fouten geven.
Je mag namelijk niet eerst een halve pagina html naar de gebruiker sturen om dan alsnog te beslissen om met header weg te springen.
Logica hoort bovenaan te staan, html onderaan.
Dat is dus inclusief header.php.
include je header.php onder de definitie van je functies.
EDIT (2)
Even gekeken hoe je die functies aanspreekt.
Wat zal dit doen?
Dit zal er voor zorgen dat true of false als string in je action komt (misschien als 0 en 1).
Dan krijg je bv.
action="true" of action="1"
Dit slaat uiteraard nergens op.
Wat je moet doen, is je action zetten op een plek (url) waar je de functie laat uitvoeren. Dit moet dus gebeuren na de submit van de gebruiker, niet in het echo'en van je formulier.
Gewijzigd op 24/12/2010 11:45:03 door Kris Peeters
geen reactie?
Kris Peeters op 25/12/2010 13:07:26:
geen reactie?
Ik was op vakantie ^^'' Ik ga nu weer aan de slag, kijken of het lukt ;)
Gewijzigd op 09/01/2011 22:37:19 door M V
Ik heb het opgelost door verschillende pagina's aan te maken. bedankt =)