Probleem met formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaap Deelstra

Jaap Deelstra

25/07/2024 13:46:59
Quote Anchor link
Ik heb het verwerk formulier gedowload en iets aangepast naar mijn eigen contact.html bestand. Ik zal het bestand hier onder weergeven. Misschien kan iemand mij helpen.

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
ini_set ('display_errors', 'On');
error_reporting(E_ALL);

include '../../inc/stats.php';
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // Arrays declareren voor opslag van fouten en data
    $aErrors = array();
    $aData = array();
    
    // Velden die in het formulier aanwezig moeten zijn
    $aFormulierVelden = array('NAAM_afzender', 'EMAIL_afzender', 'Bericht',);
    
    // Alle formuliervelden doorlopen
    foreach($aFormulierVelden as $sVeld)
    {

        // Controleren of er een waarde voor het formulierveld bestaat
        if(isset($_POST[$sVeld]))
        {
    
            // Spaties aan begin en eind weghalen
            $sValue = trim($_POST[$sVeld]);
            
            // Controle of variabele gevuld is
            if(empty($sValue))
            {

                // Foutmelding toevoegen
                $aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
            }

            
            // Ingevulde waarden aan data array toevoegen
            $aData[$sVeld] = $sValue;
        }

        else
        {
            $aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
        }
    }

    
    // Controleren of er geen fouten opgetreden zijn
    if(empty($aErrors))
    {

        // Formulier succes!
        echo '<p>Je hebt het formulier succesvol ingevuld! De volgende gegevens zijn bekend:</p>';
        echo '<p>Naam: '.$aData['NAAM_afzender'].'<br />';
        echo 'Email: '.$aData['EMAIL_afzender'].'</br >';
        echo 'Bericht: '.$aData('Bericht').'</p>';
    }

    else
    {
        // Fouten opgetreden: weergeven en terug naar formulier
        header('Refresh: 3; url=verwerk.php');
        foreach($aErrors as $sError)
        {

            echo '<p style="color:red">'.$sError.'</p>';
        }
    }
}

else
{
    // Verwerk.php mag nog niet bezocht worden, terug naar het formulier
    header('Location: verwerk.php');
}

?>
Gewijzigd op 28/07/2024 10:33:54 door - Ariën -
 
PHP hulp

PHP hulp

08/09/2024 01:55:08
 
- Ariën  -
Beheerder

- Ariën -

25/07/2024 14:21:34
Quote Anchor link
En wat is je probleem of vraag?
 
Jaap Deelstra

Jaap Deelstra

25/07/2024 14:50:29
Quote Anchor link
Ik heb formulierveld Bericht toegevoegd. Ik krijg foutmelding dat bericht niet is toegevoegd. Wat doe ik fout?

Toevoeging op 25/07/2024 15:09:20:

Aanvulling. Krijg 2 foutmeldingen over regel 5. Daarna foutmelding dat Bericht niet is gepost.
 
- Ariën  -
Beheerder

- Ariën -

25/07/2024 15:40:07
Quote Anchor link
Welke foutmeldingen krijg je precies?

Blijkbaar heb je een veld in je HTML die niet genoemd is op lijn 14.
 
Jaap Deelstra

Jaap Deelstra

26/07/2024 11:41:26
Quote Anchor link
Kan het fout gaan, omdat Bericht een textarea betreft?
 
- Ariën  -
Beheerder

- Ariën -

26/07/2024 11:45:54
Quote Anchor link
In de praktijk niet, het is een formulierelement. Maar we kunnen je beter helpen als je wat concreter bent en wat meer vertelt over je formulier zelf. Ik geef grote kans dat daar wat misgaat.
Gewijzigd op 26/07/2024 11:56:24 door - Ariën -
 
Jaap Deelstra

Jaap Deelstra

26/07/2024 14:48:07
Quote Anchor link
Ik heb textarea aangepast en krijg nu nog onderstaande fouten. Hoe los ik dit nu op.



Warning: include(../../inc/stats.php): Failed to open stream: No such file or directory in I:\xampp\htdocs\Php\Test\verwerk.php on line 5

Warning: include(): Failed opening '../../inc/stats.php' for inclusion (include_path='I:\xampp\php\PEAR') in I:\xampp\htdocs\Php\Test\verwerk.php on line 5

Je hebt het formulier succesvol ingevuld! De volgende gegevens zijn bekend:

Naam: 1
Email: 2

Fatal error: Uncaught Error: Array callback must have exactly two elements in I:\xampp\htdocs\Php\Test\verwerk.php:48 Stack trace: #0 {main} thrown in I:\xampp\htdocs\Php\Test\verwerk.php on line 48
 
Ivo P

Ivo P

26/07/2024 17:34:02
Quote Anchor link
de eerste foutmelding is vrij duidelijk als je hem leest:

het lukt niet om de file ../../inc/stats.php te lezen om hem te includen.
Afhankelijk van wat daarin staat en of je dat voor de rest van je script nodig hebt, kan dat vervelend uitpakken.

Dus stap 1: zoek uit waar dat bestand wel staat, want kennelijk niet in I:\xampp\inc\

---

het vreemde van de "succes"melding is, dat daar niet Bericht genoemd wordt, terwijl die regel gewoon achter staat in je script.

Klopt het dat je voor naam en email "1" en "2" hebt ingevuld?

Mogelijk is het ook zinnig om het html-form erbij te vermelden. Klopt die name-property bijvoorbeeld?
 
- Ariën  -
Beheerder

- Ariën -

26/07/2024 18:02:26
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
        echo 'Bericht: '.$aData('Bericht').'</p>';

is fout. Je moet blokhaken gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
        echo 'Bericht: '.$aData['Bericht'].'</p>';


Vandaar die call-back error.
 
Jaap Deelstra

Jaap Deelstra

27/07/2024 12:40:30
Quote Anchor link
inc/stats.php komt niet voor in xampp. Kan ik regel verwijderen?
1 en 2 heb ik ingevuld om controle op juiste invulling te zien. Ik moet dus nog regels vinden voor controle letters en email en bericht.
Ik voeg nu contact.html toe.
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
<!DOCTYPE html>
<html lang="nl">
<head>
<title>Contactformulier</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" media="screen,print" href="styles/sjabloon.css"/>
<script type="text/javascript" src="scripts/general.js"></script>
<script type="text/javascript" src="scripts/namen_index.js"></script>
<script type="text/javascript">
<!--
function RadioClicked(EnableList) {
var SelectList = getObject("formfield_2");
var emptyOptionTwo = '                                                                                   ';
var tmpDN;

if (EnableList == "true") {
SelectList.disabled = false;

SelectList[0].text  = emptyOptionTwo;
SelectList[0].value = "-1";
for (i=0;i<personen.length;i++) {
tmpDN = personen[i].xAchternaam + ", " + personen[i].xDisplayName + " " + personen[i].xGeboorteDT + "  " + personen[i].xSterfDTjs;
tmpDN = tmpDN.replace( /<[^<>]+>/g,'');
SelectList[i+1]= new Option(tmpDN);
SelectList[i+1].value = tmpDN;
}

} else {
SelectList.disabled = true;
}
}
//-->
</script>

</head>
<body>

<div id="menu">
<p>Menu</p>
<a href="index.html">Home</a>
<a href="parenteel.html">Parenteel</a>
<a href="familie_cirkel.html">Familiecirkel</a>
<a href="kwartierstaat.html">Kwartierstaat</a>
<a href="kwartier_txt.html" class="submenu">Tekstueel</a>
<a href="kwartier_blad.html" class="submenu">Kwartierblad</a>
<a href="kwartier_cirkel.html" class="submenu">Kwartiercirkel</a>
<a href="namen_index.html">Namen index</a>
<a href="contact.html">Contact</a>
<a href="zoeken.html">Zoeken</a>
</div>
<div id="ald_banner"><img src="images/aldfaer.jpg" alt="alfaer logo" />&nbsp;<center><a href="http://www.aldfaer.org">Aldfaer</a></center></div>

<div id="content">
<h1>Contactformulier Familie</h1>
<form method="post" action="verwerk.php" name="Contactformulier Familie Kamphof">
<fieldset style="border:none;">
<input type="hidden" name="recipients" value="[email protected]"/>
<input type="hidden" name="subject" value="[STAMBOOM] Reactie vanaf website Kamphof"/>
<input type="hidden" name="good_url" value="bedankt.html"/>
</fieldset>
<table>
<colgroup>
<col width="100"/>
<col width="275"/>
</colgroup>
<tr>
<td colspan="2"><input type="radio" name="TYPE_reactie" checked="checked" onclick="RadioClicked('false');" value="Algemeen Contact">Algemeen Contact<input type="radio" name="TYPE_reactie" onclick="RadioClicked('true');" value="Fout Rapporteren">Fout in Stamboom melden<input type="radio" name="TYPE_reactie" onclick="RadioClicked('false');" value="Sjabloon Vraag">Sjabloon vraag</td>
</tr>
<tr>
<td><strong><label for="formfield_2">Fout melden over</label></strong></td>
<td><select name="FOUT_over" disabled="disabled" id="formfield_2">
<option>Ja</option>
<option>Nee</option>
</select>
</td>
</tr>
<tr>
<td><strong><label for="formfield_3">Naam</label></strong></td>
<td><input class="inputmessage" type="text" name="NAAM_afzender" id="formfield_3" size="30" required></td>
</tr>
<tr>
<td><strong><label for="formfield_4">E-mail</label></strong></td>
<td><input class="inputmessage" type="text" name="EMAIL_afzender" id="formfield_4" size="30" required></td>
</tr>
<tr>
<td><strong><label for="formfield_5">Bericht</label></strong></td>
<td><textarea class="inputmessage" name="Bericht" id="formfield_5" rows="6" cols="45" required></textarea></td>
<tr>
<td>&nbsp;</td>
<td><input type="submit" class="btn" value="Verzenden" />&nbsp;<input type="reset" class="btn" value="Wissen" name="B1" /></td>
</tr>
</table>
</form>
</div>
<div id="footer">
<address>
Gegenereerd met <a href="http://www.aldfaer.org/" title="Aldfaer Website">Aldfaer</a> versie 10.1 op 16-07-2024 om 12:27:43<br />
</address>
</div>
</body>
</html>



Toevoeging op 27/07/2024 13:32:04:

Ik heb de laatste aanwijzingen in het script gezet met het volgende resultaat.
Warning: include(../../inc/stats.php): Failed to open stream: No such file or directory in I:\xampp\htdocs\Php\Test\verwerk.php on line 5

Warning: include(): Failed opening '../../inc/stats.php' for inclusion (include_path='I:\xampp\php\PEAR') in I:\xampp\htdocs\Php\Test\verwerk.php on line 5

Je hebt het formulier succesvol ingevuld! De volgende gegevens zijn bekend:
Quote:
Naam: Jaap
Email: [email protected]
Bericht: Test verwerk.php


Behalve inc/stats werkt het zo te zien goed.
Kan ik die regel verwijderen? Werkt het in deze vorm nu ook op internet of moet ik iets over verzenden toevoegen.
Ik zoek nog wel regels om de letters en email op juistheid te controleren. Staan die ook op de site?
Gewijzigd op 28/07/2024 17:54:10 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

27/07/2024 14:02:07
Quote Anchor link
Ja, die include-regel kan je dan verwijderen. Verwijder hier op het forum ook je e-mailadres uit je bericht, en gebruik a u b. [code] en [/code]-tags om je codeblok heen, door je bericht te wijzigen.

Niemand is gebaat bij je e-mailadres die je nu openbaar plaatst. ;-)
Gewijzigd op 27/07/2024 14:18:43 door - Ariën -
 
Jaap Deelstra

Jaap Deelstra

28/07/2024 17:31:59
Quote Anchor link
Zoals eerder gezegd ben ik hier als beginner en ik zie niet hoe ik oude berichten kan wijzigen.

Staat er ook iets op de site over het versturen van e-mail met het verwerk.php bestand, dat nu werkt.
Ook zoek ik nog een regel om de letters en het e-mail adres te valideren en waar ik die rels precies moet neerzetten.
 
- Ariën  -
Beheerder

- Ariën -

28/07/2024 17:53:06
Quote Anchor link
Via het Afbeelding icoontje bij je bericht. Ik zal het bericht nu voor jouw even aanpassen.

Validatie kan erin, maar het is wel wat complexer als je alle velden benoemt, zonder aan te geven wat voor velden het zijn, en hoe die gevalideerd moeten worden.

In feite zou je jouw array kunnen uitbouwen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$aFormulierVelden = array(
    'NAAM_afzender' => 'text',
    'EMAIL_afzender' => 'e-mail',
    'Bericht' => 'text');

En dan aan de hand van aFormulierVelden[1] (of het text of e-mail is) aangeven welke validatie plaats moet vinden per veld. Maar dan is het de vraag of je dit nog verder wilt uitkristalliseren naar de minimale lengte, maximale lengte, verplichte tekenreeks.

Maar dan kom je neer op wat dit doet:
https://github.com/SandroMiguel/verum-php

Of je kan het simpeler maken, door geen array te gebruiken, en al je velden handmatig te controleren met aparte if-statements.

Toevoeging op 28/07/2024 18:23:22:

Lijn 16 t/m 32 (excl de start en sluittag):

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
<?php
/* Bericht */

// Controleren of er een waarde voor het formulierveld bestaat

if (isset($_POST['bericht'])) {
    // Spaties aan begin en eind weghalen
    $sValue = trim($_POST['bericht']);

    // Controle of variabele gevuld is
    if (empty($sValue)) {
        // Foutmelding toevoegen
        $aErrors[] = 'Je bent vergeten om ' . $sVeld . ' in te vullen';
    }


    // Ingevulde waarden aan data array toevoegen
    $aData[$sVeld] = $sValue;
}


/* E-mail */
if (isset($_POST['emailadres'])) {
    // Spaties aan begin en eind weghalen
    $sValue = trim($_POST['emailadres']);

    // Controle of variabele gevuld is
    if (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
        $aErrors[] = 'Het e-maialdres is niet correct ingevuld';
    }


    // Ingevulde waarde aan data array toevoegen
    $aData[$sVeld] = $sValue;
}

?>
Gewijzigd op 28/07/2024 18:23:49 door - Ariën -
 
Jaap Deelstra

Jaap Deelstra

29/07/2024 14:27:01
Quote Anchor link
Bedankt voor de verdere uitleg.
Nu moet het contactformulier nog van mijn verzonden worden met mail. Hoe gaat dat precies en waar moet ik de regels plaatsen?
 
- Ariën  -
Beheerder

- Ariën -

29/07/2024 14:34:18
Quote Anchor link
Als je logisch naar je hele script kijkt, wordt dat aangegeven op de plek waar staat:
"Formulier succes!"

Daar moet je de mailfunctie plaatsen.
 
Jaap Deelstra

Jaap Deelstra

29/07/2024 16:08:21
Quote Anchor link
Bedankt
 
- Ariën  -
Beheerder

- Ariën -

29/07/2024 16:26:45
Quote Anchor link
Graag gedaan!
 



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.