Problemen met Notice: Undefined index: A1 in ... on line 22

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

- Ariën  -
Beheerder

- Ariën -

10/10/2019 09:47:43
Quote Anchor link
Kristof Bruyneel op 10/10/2019 09:25:53:
Ok, maar nu heb ik een formulier dat niet wil verzenden als er één van alle vragen niet ingevuld is. Hoe kan ik ervoor zorgen dat de antwoorden toch doorgestuurd worden naar de database als er sommige vragen niet ingevuld zijn?

Lees eens een paar berichten hier boven (op de vorige pagina). Daar wordt door mij en anderen uitgelegd hoe je validatie in kan bouwen. Dit staat los wat van isset() doet. En empty() is overigens ook geen geweldige check voor validaties omdat deze ook bepaalde dingen toestaat als bij bepaalde invoer (zie return values).

Enkel een required in HTML is niet echt de beste oplossing, want HTML is eenvoudig te 'hacken' via de browser. Deze reactie van mij geeft aan hoe een mooie validatie-structuur in elkaar steekt.
Gewijzigd op 10/10/2019 10:08:54 door - Ariën -
 
PHP hulp

PHP hulp

19/03/2024 07:52:06
 
Kristof Bruyneel

Kristof Bruyneel

10/10/2019 10:19:00
Quote Anchor link
Onderstaand de code die ik nu geprobeerd heb, met een syntaxerror thv lijn 27 blijkbaar.
Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\xampp\htdocs\Wolf\Likert_form_php.php on line 27

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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php

include 'Connection_db.php'; //connectie met database

$errors = array(); // maak de array aan

    // Simpele validatie

        if(trim($_POST['Email'])=="") {
        $errors[] = "Email is niet ingevuld";
        }

        
       if(trim($_POST['Voornaam'])=="") {
        $errors[] = "Voornaam is niet ingevuld";
       }

        
        if(trim($_POST['Achternaam'])=="") {
        $errors[]= "Achternaam is niet ingevuld";
        }


        if(trim($_POST['Achternaam'])=="") {
        $errors[]= "Achternaam is niet ingevuld";
        }

        
    if(count($errors)== 0) {
        echo "er zijn geen errors! Doe je ding!"
            
        } else {    
            print_r($errors);
            // er zijn wel errors! Doorloop foreach over $errors en toon de errors
            // Zie: www.php.net/foreach

        }
            
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    
    echo'<pre>';print_r($_POST);echo'</pre>'; //Toont in array de ingevulde waarden
    
    // Geeft aan de ingevulde waarden een naam voor variabele

    $Email = $_POST['Email'];
    $Voornaam = $_POST['Voornaam'];
    $Achternaam = $_POST['Achternaam'];
    $Geslacht = $_POST['Geslacht'] ?? null;
    $Postcode = $_POST['Postcode'];
    $A1 = $_POST['A1'] ?? null;
    $A2 = $_POST['A2'] ?? null;
    $A3 = $_POST['A3'] ?? null;
    $A4 = $_POST['A4'] ?? null;
    $A5 = $_POST['A5'] ?? null;
    $A6 = $_POST['A6'] ?? null;
    $A7 = $_POST['A7'] ?? null;
    $A8 = $_POST['A8'] ?? null;
    $A9 = $_POST['A9'] ?? null;
    $B1 = $_POST['B1'] ?? null;
    $B2 = $_POST['B2'] ?? null;
    $B3 = $_POST['B3'] ?? null;
    $B4 = $_POST['B4'] ?? null;
    $B5 = $_POST['B5'] ?? null;
    $B6 = $_POST['B6'] ?? null;
    $B7 = $_POST['B7'] ?? null;
    $B8 = $_POST['B8'] ?? null;
    $B9 = $_POST['B9'] ?? null;
    
    //Wanneer er een variabele niet ingevuld is wordt er een boodschap weergegeven om de vragen in te vullen, wanneer alles ingevuld is wordt het doorgestuurd naar de databasetabel.
    if (!isset($_POST['Email'], $_POST['Voornaam'], $_POST['Achternaam'], $_POST['Geslacht'], $_POST['Postcode'], $_POST['A1'], $_POST['A2'], $_POST['A3'], $_POST['A4'], $_POST['A5'], $_POST['A6'], $_POST['A7'], $_POST['A8'], $_POST['A9'])) {
        echo "Gelieve alle vragen te beantwoorden.";
    }
else {
    
        $connection = mysqli_connect ('localhost', 'root', '', 'wolf');     /* 'Servernaam', 'gebruikersnaam', 'wachtwoord', 'databasenaam' */
        if (!$connection) {
            die ('connection failed');}
        
        $query = "INSERT
            INTO
                vragenlijst
                (
                Email,
                Voornaam,
                Achternaam,
                Geslacht,
                Postcode,
                A1,
                A2,
                A3,
                A4,
                A5,
                A6,
                A7,
                A8,
                A9
                )
            VALUES
                (
                '"
.mysqli_real_escape_string($connection, $_POST['Email'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['Voornaam'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['Achternaam'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['Geslacht'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['Postcode'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A1'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A2'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A3'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A4'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A5'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A6'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A7'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A8'])."',
                '"
.mysqli_real_escape_string($connection, $_POST['A9'])."'
                )"
;        /*ingevulde waarde */
        
        $result = mysqli_query ($connection, $query);
        if (!$result) {
            die ('query failed');
        }
            
    
    }
}


?>
Gewijzigd op 10/10/2019 10:20:37 door Kristof Bruyneel
 
- Ariën  -
Beheerder

- Ariën -

10/10/2019 10:26:12
Quote Anchor link
Je moet natuurlijk wel voor een logische opbouw zorgen en weten wat je doet, en wat er gebeurt. Want waarom ga je opeens nu weer $_POST-elementen plaatsen voor je POST-controle :-/ ?

En als er geen errors zijn, dan wil je toch je invoer versturen en niet laten weten dat de invoer klopt? Daarom had ik ook gecommented: "Doe je ding!".

Als je dat het allemaal nog niet snapt dan is het verstandiger om dit in de vriezer te leggen, en eerst wat meer ervaring vanaf de basis op te doen. Want programmeren met PHP is zeker geen sleur-en-pleur (code) met de hoop dat het werkt.

Oh ja, de syntax-fout zat hem in het ontbreken van een punt-komma (;), maar dat had je mogelijk al moeten zien in je code-editor.
Gewijzigd op 10/10/2019 11:36:43 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

10/10/2019 13:42:07
Quote Anchor link
Quote:
Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\xampp\htdocs\Wolf\Likert_form_php.php on line 27

Heb je ook echt geprobeerd te verwerken wat hier staat?

Er staat echt letterlijk "Hé ik kom hier een accolade tegen op regel 27 die ik niet verwachtte, waarschijnlijk moet hier (eerst) een komma of een puntkomma (voor) staan."

Zelfs als je dit blind opvolgt, door eerst een komma te proberen, en anders een puntkomma dan werkt dit al...

Het probleem is hier dus niet het probleem, het probleem is dat je niet interpreteert wat er staat. Veel beginnende programmeurs hebben voor dit soort zaken een soort van blinde vlek.

PHP-foutmeldingen zijn echt superduidelijk. Ze vertellen precies wat er mankeert, op welke regel (of hier dicht in de buurt, meestal juist ervoor!) er iets misgaat en er worden zelfs voorstellen gegeven hoe je dit oplost.

Dit gaat je echter niet helpen als je niet gewoon l-e-e-s-t wat er staat. Maak hier een gewoonte van. Lees gewoon hardop wat er staat. Laat het bezinken.

Tot het moment dat je je echt realiseert wat er misgaat zul je veel moeite blijven houden met het programmeren in PHP. Daarom zijn dit soort foutmeldingen bij uitstek geschikt om echt te LEREN PROGRAMMEREN in PHP, omdat dit je dwingt te interpreteren wat er precies gebeurt of misgaat.

En hopelijk valt het kwartje dan op den duur.
 
Kristof Bruyneel

Kristof Bruyneel

10/10/2019 15:16:09
Quote Anchor link
Ik heb me wat boeken gekocht en ga best eerst nog wat tutorials oefenen.
Alvast bedankt voor alle tips en sorry om jullie tijd te verspillen! :/
 
Thomas van den Heuvel

Thomas van den Heuvel

10/10/2019 16:17:31
Quote Anchor link
Dit is geen tijdsverspilling.

Ik ben trouwens nog nooit (of nauwelijks?) in een boek of tutorial veel, of wat informatie dan ook, expliciet over debugging tegengekomen. Die leren je vooral hoe het wel moet, en leggen je niet uit wat je zou moeten doen als er iets misgaat. Ook beperken ze zich soms enkel tot wat je zou moeten doen, maar niet waarom, of waarom alternatieven minder geschikt zouden zijn. Daarom ontstijgen dit soort boeken en tutorials vaak helaas niet het niveau van een soort van veredelde typecursus.

Een gevolg van deze aanpak is dat, zodra er ergens iets misgaat, je ineens hopeloos verloren bent. Zelfs bij de meest banale orde van fouten: parse errors. Dit zijn syntaxfouten (vormfouten) waarbij er simpelweg een punt of een komma (of een puntkomma :p) mist.

En dat is op zich nogal krom, omdat je inmiddels al met databases en formulieren en de verwerking ervan bezig bent, twee onderwerpen die, waarschijnlijk zonder dat je je er bewust van bent, al best geavanceerd zijn. De complexiteit van fouten die daar kunnen optreden is vele malen groter dan simpele parse errors. Er is dus nu al een grote discrepantie tussen de materie waar je mee bezig bent en de fouten die je op dat niveau zelf zou moeten kunnen oplossen. En dat komt omdat je tot nu toe alleen maar geleerd hebt, of verteld was, wat je in moest typen, maar niet wat je moet doen als je een typefout maakt.

De vraag is dus of boeken of tutorials jou, of wie dan ook die van plan is om in PHP te gaan programmeren, soelaas gaan bieden. Die kunnen je niet voorbereiden op alle mogelijke dingen die mis kunnen gaan. In plaats daarvan zou je dus een zeker gevoel moeten ontwikkelen hoe je "informatie tot je kunt laten komen" om fouten op te lossen. Maar dat is dus de eerste stap: je hebt informatie nodig voor de analyse. In dit geval doet PHP je direct een handreiking naar de oorzaak én de oplossing. Veel makkelijker wordt het niet. Maar dit soort signalen moet je dus wel leren opvangen en interpreteren anders gaat het allemaal langs je heen.
 
Michael -

Michael -

10/10/2019 18:18:03
Quote Anchor link
Ik ben het helemaal met Thomas eens.
Ten eerste verspil je totaal niet onze tijd. Wij zijn hier om te helpen omdat we dat leuk vinden.
Ten tweede een boek kan handig zijn, maar er zijn ook veel boeken die echt teleurstellen. Het kan je eventueel wel een basis geven over echo, print, array, etc. Veel dieper gaan ze vaak niet. De meeste van die dingen zijn dus al in dit topic behandelt ;-)
Ten derde leg je misschien de lat iets te hoog door gelijk met zo'n script te beginnen.
Even een enquête script schrijven, met een database, validatie, veiligheid etc. is niet waar je normaal gesproken mee begint :-)

Nogmaals, we zijn hier om je te helpen, maar je leert vooral door gewoon te proberen. PHP heeft een gigantische community dus op bijna alles vind je wel een antwoord als je googled.
Mocht je ergens nog niet uitkomen, horen we het graag :-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/10/2019 18:44:54
Quote Anchor link
>> en boek kan handig zijn, maar er zijn ook veel boeken die echt teleurstellen.

Klopt maar uiteindelijk zul je ergens informatie moeten winnen want anders kun je ook niet(s) leren. En een boek is in de regel toch wat betrouwbaarder als allerlei loshangende informatie op het internet. Daarbij komt dat in een boek altijd wel een bepaalde logische opbouw zit. Dus al klopt 10% van een boek niet helemaal is het zeker een goed besluit om hiermee te starten. En daarna moet je ervaring opdoen, net zo goed als op de weg wanneer je net vol trots je rijbewijs hebt opgehaald. Door ervaringen met andere weggebruikers (wij dus) te delen zul je zien dat je kennis verder groeit.
 
Kristof Bruyneel

Kristof Bruyneel

15/10/2019 20:47:56
Quote Anchor link
Bedankt voor de feedback!
 

Pagina: « vorige 1 2 3



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.