Tips welkom over deze code PHP
Ik heb het CMS waar ik mee bezig was afgerond, maar nu ben ik een nieuwe aan het maken voor iets anders en probeer ik jullie tips van destijds te gebruiken.
Zijn er nog dingen die ik beter kan doen en weet iemand een goeie website waar een tutorial over foutafhandeling staat.
Ik ben nu van plan wel mysqli te gebruiken en normale PHP, dus geen OOP.
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
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
<?php
include "include/config.php";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['pv_title'])<1)
{
$melding = 'Er is geen titel ingevuld!';
}
else
{
if (strlen($_POST['pv_description'])<1)
{
$melding = 'Er is geen beschrijving ingevuld!';
}
else
{
if (strlen($_POST['pv_link'])<9)
{
$melding = 'Er is geen link ingevuld!';
}
else
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysql_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysql_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysql_real_escape_string($_POST['pv_link']) . "')");
if($queryInsert)
{
header("location: SOMEWHERE.php");
}
}
}
}
}
?>
<fieldset>
<?php
echo $melding;
?>
<form action=""
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>
include "include/config.php";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['pv_title'])<1)
{
$melding = 'Er is geen titel ingevuld!';
}
else
{
if (strlen($_POST['pv_description'])<1)
{
$melding = 'Er is geen beschrijving ingevuld!';
}
else
{
if (strlen($_POST['pv_link'])<9)
{
$melding = 'Er is geen link ingevuld!';
}
else
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysql_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysql_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysql_real_escape_string($_POST['pv_link']) . "')");
if($queryInsert)
{
header("location: SOMEWHERE.php");
}
}
}
}
}
?>
<fieldset>
<?php
echo $melding;
?>
<form action=""
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>
Echter enkele opmerkingen:
- Waarom gebruik je mysql_real_escape_string als je mysqli_query gebruikt?
- Foutafhandeling tutorial kan je hier vinden: http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
Misschien is het beter om het met een array te doen:
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
// lege array aanmaken
$melding = array();
if (strlen($_POST['pv_title'])<1){
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])<1){
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9){
$melding[] = 'Er is geen link ingevuld!';
}
// als er geen meldingen zijn opgeslagen doorgaan met query
if(count($melding) == 0){
// hier dan je query uitvoeren zoals je had
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST"){
// lege array aanmaken
$melding = array();
if (strlen($_POST['pv_title'])<1){
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])<1){
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9){
$melding[] = 'Er is geen link ingevuld!';
}
// als er geen meldingen zijn opgeslagen doorgaan met query
if(count($melding) == 0){
// hier dan je query uitvoeren zoals je had
}
}
?>
Daarnaast werk ik persoonlijk eerder met:
ipv
Maar komt op hetzelfde neer....
Gewijzigd op 30/06/2014 19:52:08 door Ramon van Dongen
de array geeft jammer genoeg een fout, want elke keer als er een veld niet is ingevuld, dan staat er array in plaats van de melding zelf. ook als ik alles invulde dan gaf die ook array aan.
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
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
<?php
include "include/config.php";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$melding = array();
if (trim($_POST['pv_title'])<1)
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (trim($_POST['pv_description'])<1)
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (trim($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
if(count($melding) == 0){
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')");
if($queryInsert)
{
header("location: SOMEWHERE.php");
}
}
}
?>
include "include/config.php";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$melding = array();
if (trim($_POST['pv_title'])<1)
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (trim($_POST['pv_description'])<1)
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (trim($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
if(count($melding) == 0){
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')");
if($queryInsert)
{
header("location: SOMEWHERE.php");
}
}
}
?>
Kijk ook eens naar php.net/mysqli_real_escape_string. Deze functie mist je connectie.
Verder is het niet verboden om je voorwaarde van je foutafhandeling op je query te verruimen met een FALSE, waarin je uitlegt dat er iets mis is gegaan. (voor je eigen toon je dan de error uit mysqli_error)
Gewijzigd op 30/06/2014 21:37:41 door - Ariën -
Ik snap niet echt wat je bedoeld en ik heb net op de php.net site gekeken, maar heb serieus nog nooit wat begrepen van die website.
trim() haalt bepaalde karakters van een string af en geeft dan de aangepaste string terug. Dat moet je dan niet gaan vergelijken met een getal. Je haalt nu dus strlen en trim door elkaar.
Ik heb het aangepast, maar het werkt nog steeds niet. idk wat ik fout doe
aangepast in?
Wat erwin zei heb ik aangepast in de php bij alle 3 en heb het getest, maar het werkt nog niet en geeft nog steeds dezelfde fout.
De vraag is dan altijd in wat heb je het aangepast. Kan zo maar dat het nog steeds fout is natuurlijk...
Quote:
de array geeft jammer genoeg een fout, want elke keer als er een veld niet is ingevuld, dan staat er array in plaats van de melding zelf. ook als ik alles invulde dan gaf die ook array aan.
Kun je eens de code laten zien die de error output?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$melding = array(); <!-- ik denk zelf dat het hier aan ligt, maar snap niet wat er fout is -->
if (strlen($_POST['pv_title'])<1)
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])<1)
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
?>
$melding = array(); <!-- ik denk zelf dat het hier aan ligt, maar snap niet wat er fout is -->
if (strlen($_POST['pv_title'])<1)
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])<1)
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
?>
Pas wel even die controle aan met die code die ik zojuist gaf.
ow ja dat heb ik gedaan :)
Tevens ben ik heel geïnteresseerd waarom jij denkt dat het aan die regel ligt.
https://github.com/Wixel/GUMP
Ik controleer altijd of er iets gepost is en daarna ga ik alles bepaalde eisen geven waarop alles
gecontroleerd moet worden.
Verder vind ik het goede leesbare code en inderdaad zou het slim zijn om alle meldingen in een array te zetten en dit terug te sturen naar de user indien er een error is.
Wouter J sorry snapte het niet, de error werd in de html uitgegooid, maar het probleem lag dus daaraan en is opgelost met de code van Ivo P.
Nu werken de meldingen, maar nu krijg ik errors als ik alles invul en het op sla.
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 49
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 50
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 51
Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 51
Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 53
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
85
86
87
88
89
90
91
92
93
94
95
96
97
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
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
include "include/config.php";
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$melding = array();
if (strlen($_POST['pv_title'])=="")
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])=="")
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
if(count($melding) == 0)
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')");
# Check of query is gelukt
if (($queryInsert = mysqli_query($queryInsert)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($queryInsert, mysqli_error(),'Fout bij het invoegen van de post.');
}
else
{
# De query is geluk! :)
echo 'Gebruiker is toegevoegt!';
}
}
}
?>
<fieldset>
<?php
if(!empty($melding))
{
foreach($melding as $eenMelding)
{
echo $eenMelding;
}
}
?>
<form action="#"
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>
include "include/config.php";
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$melding = array();
if (strlen($_POST['pv_title'])=="")
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])=="")
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
if(count($melding) == 0)
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')");
# Check of query is gelukt
if (($queryInsert = mysqli_query($queryInsert)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($queryInsert, mysqli_error(),'Fout bij het invoegen van de post.');
}
else
{
# De query is geluk! :)
echo 'Gebruiker is toegevoegt!';
}
}
}
?>
<fieldset>
<?php
if(!empty($melding))
{
foreach($melding as $eenMelding)
{
echo $eenMelding;
}
}
?>
<form action="#"
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>
Gewijzigd op 01/07/2014 12:12:41 door racoon smasher