Tips welkom over deze code PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Racoon smasher

racoon smasher

30/06/2014 19:24:38
Quote Anchor link
Hoi iedereen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 
PHP hulp

PHP hulp

25/09/2021 08:55:21
 
- Ariën -
Beheerder

- Ariën -

30/06/2014 19:35:20
Quote Anchor link
Het ziet er netjes en leesbaar uit.
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/
 
Ramon van Dongen

Ramon van Dongen

30/06/2014 19:50:22
Quote Anchor link
Als men nu 'vergeet' om $_POST['pv_title'], $_POST['pv_description'] en $_POST['pv_link'] in te vullen, krijgen ze eerst een melding over de title, daarna over de description en pas daarna over de link.

Misschien is het beter om het met een array te doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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

}


}

?>


Daarnaast werk ik persoonlijk eerder met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(trim($_POST['pv_title']) == ''){
?>

ipv
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(strlen($_POST['pv_title'])<1){
?>


Maar komt op hetzelfde neer....
Gewijzigd op 30/06/2014 19:52:08 door Ramon van Dongen
 
Racoon smasher

racoon smasher

30/06/2014 21:33:00
Quote Anchor link
Ik heb jullie tips toegepast op de foutafhandeling na wat ik zo ga doen.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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");
        }
    }
}

?>
 
- Ariën -
Beheerder

- Ariën -

30/06/2014 21:36:21
Quote Anchor link
Waarom $pv_title=mysqli_real_escape_string($_POST['pv_title']) ?

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 -
 
Racoon smasher

racoon smasher

30/06/2014 22:07:15
Quote Anchor link
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.
 
Erwin H

Erwin H

30/06/2014 22:17:39
Quote Anchor link
Dit gaat niet werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (trim($_POST['pv_title'])<1)
?>

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.
 
Racoon smasher

racoon smasher

30/06/2014 22:27:07
Quote Anchor link
Ik heb het aangepast, maar het werkt nog steeds niet. idk wat ik fout doe
 
Ozzie PHP

Ozzie PHP

30/06/2014 22:28:48
Quote Anchor link
>> Ik heb het aangepast

aangepast in?
 
Racoon smasher

racoon smasher

30/06/2014 22:36:39
Quote Anchor link
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.
 
Erwin H

Erwin H

30/06/2014 22:41:24
Quote Anchor link
De vraag is dan altijd in wat heb je het aangepast. Kan zo maar dat het nog steeds fout is natuurlijk...
 
Racoon smasher

racoon smasher

30/06/2014 22:48:12
Quote Anchor link
ow sorry, in dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    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!';
    }

?>
 
- Ariën -
Beheerder

- Ariën -

30/06/2014 22:50:42
Quote Anchor link
Gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (trim($_POST['pv_title'])=='') {
 
Wouter J

Wouter J

30/06/2014 22:53:09
Quote Anchor link
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?
 
Racoon smasher

racoon smasher

30/06/2014 23:06:57
Quote Anchor link
er komt geen error... hij gooit gewoon altijd als melding array eruit als ik op submit druk.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!';
    }

?>
 
- Ariën -
Beheerder

- Ariën -

30/06/2014 23:10:57
Quote Anchor link
Dan echo je blijkbaar een array, wat niet zomaar kan. Geen idee waar.
Pas wel even die controle aan met die code die ik zojuist gaf.
 
Racoon smasher

racoon smasher

30/06/2014 23:11:58
Quote Anchor link
ow ja dat heb ik gedaan :)
 
Ivo P

Ivo P

30/06/2014 23:15:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

foreach($melding as $eenMelding) {
   echo $eenMelding . '<br>';
}


?>
 
Wouter J

Wouter J

30/06/2014 23:23:18
Quote Anchor link
Racoon, die code output de errors toch niet? Je laat nu de code zien die de errors aanmaakt, niet die ze output.

Tevens ben ik heel geïnteresseerd waarom jij denkt dat het aan die regel ligt.
 
Wouter Van Marrum

Wouter Van Marrum

30/06/2014 23:38:37
Quote Anchor link
Waarom geen gebruik maken van gump ?
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.
 
Racoon smasher

racoon smasher

01/07/2014 12:09:31
Quote Anchor link
Over dat GUMP zal ik zo even wat lezen.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
Gewijzigd op 01/07/2014 12:12:41 door racoon smasher
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.