PHP in formulier werkt niet zoals ik wil

Status
Niet open voor verdere reacties.

johndejongh

Gebruiker
Lid geworden
18 dec 2000
Berichten
218
Hallo, ik ben compleet nieuw in PHP.
20 jaar geleden heb ik een website gemaakt met Microsoft FrontPage.
Deze website is verouderd en ben ik opnieuw aan het bouwen, nu met RocketCake. Het lijkt een makkelijk programma maar het doet niet wat ik wil.

Een formulier verzenden lukt met de standaard code die de websitehelp aan geeft:
$text = "";
foreach($_POST as $name => $value)
{
* $text .= "$name : $value\n";
}

if ($text != "")
{
mail("********@hotmail.com", "Contact formulier vanaf websitel", $text);
}

Hier de hele code van de pagina:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta name="generator" content="RocketCake">
	<title>Reactie</title>
	<link rel="stylesheet" type="text/css" href="reactie2.0_php.css">
</head>
<body>
<div class="textstyle1">
  <div id="container_14fc359">
    <div id="container_14fc359_padding" >
      <div class="textstyle2">
        <div id="container_7a98b374">
          <div id="container_7a98b374_padding" >
            <div class="textstyle2">
              <img src="rc_images/logo_kattenpension_tommie_origineel__internet_.png" id="img_43174bc" alt="" title="" />
              </div>
            <div style="clear:both"></div>
            </div>
          </div>
        <div id="container_5345bbd">
          <div id="container_5345bbd_padding" >
            <div class="textstyle3">
              <div id="menu_468c5eea">
                <div  class="menuholder1"><a href="javascript:void(0);">
	<div id="menuentry_60b418cb"  class="style1 menu_468c5eea_mainMenuEntry mobileEntry">
		<div class="style2">
                  <span class="textstyle4">Menu ▼</span>
		</div>
	</div>
</a>
<a href="index.html" style="text-decoration:none">
	<div id="menuentry_6a56672b"  class="style3 menu_468c5eea_mainMenuEntry normalEntry">
		<div class="style2">
                  <span class="textstyle4">Home</span>
		</div>
	</div>
</a>
<a href="javascript:void(0);">
	<div id="menuentry_40b9db3d"  class="style4 menu_468c5eea_mainMenuEntry normalEntry">
		<div class="style2">
                  <span class="textstyle4">Informatie</span>
		</div>
	</div>
</a>
<a href="javascript:void(0);">
	<div id="menuentry_f20347b"  class="style5 menu_468c5eea_mainMenuEntry normalEntry">
		<div class="style2">
                  <span class="textstyle4">Reserveren</span>
		</div>
	</div>
</a>
<a href="javascript:void(0);">
	<div id="menuentry_14be8ae3"  class="style6 menu_468c5eea_mainMenuEntry normalEntry">
		<div class="style2">
                  <span class="textstyle4">Contact</span>
		</div>
	</div>
</a>

	<script type="text/javascript" src="rc_images/wsp_menu.js"></script>
	<script type="text/javascript">
		var js_menu_468c5eea= new wsp_menu('menu_468c5eea', 'menu_468c5eea', 10);

		js_menu_468c5eea.createMenuForItem('menuentry_60b418cb', ["                  <span class=\"textstyle5\">Home </span> ", 'index.html', '',
		                                   "                  <span class=\"textstyle5\">Informatie</span> ", 'alg_info2.0.html', '',
		                                   "                  <span class=\"textstyle5\">Weetjes</span> ", 'weetjes2.0.html', '',
		                                   "                  <span class=\"textstyle5\">Voorwaarden</span> ", 'voorwaarden2.0.html', '',
		                                   "                  <span class=\"textstyle5\">Prijzen</span> ", 'prijzen2.0.html', '',
		                                   "                  <span class=\"textstyle5\">Reserveren</span> ", 'reserveren2.0.html', '',
		                                   "                  <span class=\"textstyle5\">Openingstijden</span> ", 'openingstijden2.0.html', '',
		                                   "                  <span class=\"textstyle5\">Reactie</span> ", 'javascript:void(0);', '',
		                                   "                  <span class=\"textstyle5\">Gastenboek</span> ", 'http://kattenpension-tommie.mygb.nl/', '_blank',
		                                   "                  <span class=\"textstyle5\">Route</span> ", 'route2.0.html', '']);
		js_menu_468c5eea.createMenuForItem('menuentry_6a56672b', []);
		js_menu_468c5eea.createMenuForItem('menuentry_40b9db3d', ["                  <span class=\"textstyle4\">Algemene info</span> ", 'alg_info2.0.html', '',
		                                   "                  <span class=\"textstyle4\">Weetjes</span> ", 'weetjes2.0.html', '',
		                                   "                  <span class=\"textstyle4\">Voorwaarden</span> ", 'voorwaarden2.0.html', '',
		                                   "                  <span class=\"textstyle4\">Links</span> ", 'links2.0.html', '']);
		js_menu_468c5eea.createMenuForItem('menuentry_f20347b', ["                  <span class=\"textstyle4\">Prijzen</span> ", 'prijzen2.0.html', '',
		                                   "                  <span class=\"textstyle4\">Reserveren</span> ", 'reserveren2.0.html', '']);
		js_menu_468c5eea.createMenuForItem('menuentry_14be8ae3', ["                  <span class=\"textstyle4\">Openingstijden</span> ", 'openingstijden2.0.html', '',
		                                   "                  <span class=\"textstyle4\">Reactie</span> ", 'javascript:void(0);', '',
		                                   "                  <span class=\"textstyle4\">Gastenboek</span> ", 'http://kattenpension-tommie.mygb.nl/', '_blank',
		                                   "                  <span class=\"textstyle4\">Route</span> ", 'route2.0.html', '']);

	</script>
                  </div>
                </div>
              </div>
            <div style="clear:both"></div>
            </div>
          </div>
        </div>
      <div style="clear:both"></div>
      </div>
    </div>
  <div id="container_33eae9af">
    <div id="container_33eae9af_padding" >
      <div class="textstyle1">
        <span class="textstyle6"><br/><br/><br/><br/><br/><br/><br/></span>
        <span class="textstyle7"><br/><br/></span>
        <span class="textstyle6">    </span>
        <span class="textstyle6"><br/><br/><br/><br/></span>
        </div>
      </div>
    </div>
  <div id="text_5bc26c58">
    <div id="text_5bc26c58_padding" >
      <div class="textstyle2">
        <span class="textstyle8">Vertel ons wat u van onze website, ons kattenpension of onze services vindt waardoor wij nog beter in staat zullen zijn onze klanten te helpen en het onze katten naar hun zin te maken. <br/>Als u aangeeft hoe wij u kunnen bereiken, kunnen wij contact met u opnemen indien wij nadere informatie nodig hebben.<br/></span>
        <form  action="reactie2.0.php"
enctype="application/x-www-form-urlencoded"
method="POST" id="form_518860ac">
          <div id="form_518860ac_padding" >
            <div class="textstyle2">
              <span class="textstyle8">Uw opmerking:<br/><br/></span>
<textarea name="Opmerking" title="" cols="48" rows="10"  id="edit_49ab8ec4"></textarea>
              <span class="textstyle6"><br/></span>
              <span class="textstyle8">Categorie:<br/><br/></span>
<select name="Categorie" title=""  id="combo_6d8acdac" >
<option value="Website" selected="selected">Website</option>
<option value="Kattenpension">Kattenpension</option>
<option value="Services">Services</option>
</select>
              <span class="textstyle6"><br/></span>
              <span class="textstyle8"><br/>Contactgegevens: <br/><br/></span>
              <table id="table_7b617898" cellpadding="3" cellspacing="1" >
	<tr>
		<td width="23%" height="39" style="vertical-align: top;">                <div id="cell_2161f002">
                  <div class="textstyle2">
                    <span class="textstyle8">Naam:</span>
                    </div>
                  </div>
		</td>
		<td width="76%" height="39" style="vertical-align: top;">                <div id="cell_43a24fbc">
                  <div class="textstyle2">
<input type="text" value="" title="" name="Naam" maxlength="50"  id="edit_19eb25b" >
                    </div>
                  </div>
		</td>
	</tr>
	<tr>
		<td width="23%" height="39" style="vertical-align: top;">                <div id="cell_64d1fad2">
                  <div class="textstyle2">
                    <span class="textstyle8">Adres:</span>
                    </div>
                  </div>
		</td>
		<td width="76%" height="39" style="vertical-align: top;">                <div id="cell_316a72c3">
                  <div class="textstyle2">
<textarea name="Adres" title="" cols="33" rows="1"  id="edit_63d6b9e9"></textarea>
                    </div>
                  </div>
		</td>
	</tr>
	<tr>
		<td width="23%" height="39" style="vertical-align: top;">                <div id="cell_4c856b51">
                  <div class="textstyle2">
                    <span class="textstyle8">Telefoon:</span>
                    </div>
                  </div>
		</td>
		<td width="76%" height="39" style="vertical-align: top;">                <div id="cell_47c2b40a">
                  <div class="textstyle2">
<input type="text" value="" title="" name="Telefoon" maxlength="15"  id="edit_67928cea" >
                    </div>
                  </div>
		</td>
	</tr>
	<tr>
		<td width="23%" height="39" style="vertical-align: top;">                <div id="cell_110872bd">
                  <div class="textstyle2">
                    <span class="textstyle8">E-mail:</span>
                    </div>
                  </div>
		</td>
		<td width="76%" height="39" style="vertical-align: top;">                <div id="cell_394c3366">
                  <div class="textstyle2">
<input type="text" value="" title="" name="Email" maxlength="50"  id="edit_2b23d4b6" >
                    </div>
                  </div>
		</td>
	</tr>
                </table>
              <span class="textstyle8"><br/><br/></span>
              </div>
            <div class="textstyle1">
<input name="send button" type="submit" value="Send" title=""  id="button_520e664c" >
              </div>
            <div style="clear:both"></div>
            </div>
          </form>
<div id="php_54be0f75"><?PHP
$text = "";
foreach($_POST as $name => $value) 
{
* $text .= "$name : $value\n";
}

if ($text != "")
{
mail("smidejongh@hotmail.com", "Contact formulier vanaf website Tommie.nl", $text);
}
?></div>
        <span class="textstyle8"><br/><br/><br/><br/><br/></span>
        </div>
      <div style="clear:both"></div>
      </div>
    </div>
  <span class="textstyle9"><br/></span>
  </div>
<div class="textstyle2">
  <div id="container_3a5dff97">
    <div id="container_3a5dff97_padding" >
      <div class="textstyle1">
        <span class="textstyle10">U vakantie, Uw kat(ten) vakantie!</span>
        <span class="textstyle11"><br/></span>
        </div>
      </div>
    </div>
  <div id="container_48ef3279">
    <div id="container_48ef3279_padding" >
      <div class="textstyle1">
        <div id="container_257ae156">
          <div id="container_257ae156_padding" >
            <div class="textstyle2">
              <div id="container_105f1f2b">
                <div id="container_105f1f2b_padding" >
                  <div class="textstyle2">
                    <span class="textstyle12">Kattenpension Tommie<br/>Hondtraat 32<br/>5334 JM Velddriel<br/>0418-635127<br/></span>
                    <span class="textstyle12"><a href="mailto:info@tommie.nl" target="_blank">info@tommie.nl</a></span>
                    </div>
                  </div>
                </div>
              <div id="container_435e7ec7">
                <div id="container_435e7ec7_padding" >
                  <div class="textstyle2">
                    </div>
                  </div>
                </div>
              <div id="container_5f8bee95">
                <div id="container_5f8bee95_padding" >
                  <div class="textstyle2">
                    <span class="textstyle12">Openingstijden:<br/>Maandag t/m donderdag van 09.00 - 17.00 uur en van 18.30 - 20.00 uur.<br/>Vrijdag en zaterdag van 09.00 - 17.00 uur en van 18.00 - 19.00 uur.<br/>Zondag en feestdagen van 10.00 - 12.00 uur.<br/>Van bovengenoemde tijden kan alleen op afspraak afgeweken worden.</span>
                    </div>
                  </div>
                </div>
              </div>
            <div style="clear:both"></div>
            </div>
          </div>
        </div>
      <div style="clear:both"></div>
      </div>
    </div>
  </div>
</body>
</html>
Dezelfde code staat ook in een ander formulier. In dat formulier worden veel meer velden ingevuld.
De standaard code is erg basic en ik wil dit veranderen zodat ik zelf kan bepalen welk veld ik waar in de mail krijg.

Daarom wil ik 2 zaken wijzigen:

1)Ik wil ieder veld laten versturen in een volgorde die ik wil, zoiets als dit:
if (isset($_POST["submit"])) {
$name = $_POST['name'];
$email = $_POST['email'];

Dit heb ik gekopieerd uit een antwoord op een forum. Ik dacht dat dit zou werken zodat ik hiermee verder kan bouwen.
Helaas ontvang ik een lege mail als op 'send' geklikt wordt.

2) Na klikken op de 'send' knop wil ik een andere (bedankt) pagina laten tonen (redirect), hoe moet dat?

Mijn website (test site) is: http://www.smidejongh.esy.es

Bedankt voor de hulp.
 
1) Je moet dan geen foreach gebruiken, maar de verstuurde velden apart noemen. Dus $_POST['naam'] als deze naam heet.

2) Een echo plaatsen na je mail(). Nog mooier om te kijken is met een if-statement of de mailfunctie zijn werk wel/niet heeft gedaan.
 
Bedankt PHP4U voor je reactie.

Zoals ik aan gaf: PHP is nieuw voor mij, weet ik nog niet veel vanaf.
Ben aan het inlezen op allerlei forums en sites.

1) Ik heb geprobeerd dit er in te zetten:
$Naam = $_POST['Naam'];

Ik krijg dan niet de tekst uit het invulveld in mijn mail en dat snap ik niet.

2) Uhhh, hoe dan?
 
Niet zomaar gokken en knippen en plakken van andere sites. Het gaat er om dat je weet wat je precies doet.

1) Je kopieert hier nu de inhoud van je formulier uit $_POST['Naam'] naar $naam. Best zinloos, want $_POST['Naam'] bestaat al.
In plaats van je foreach kan je dit doen:

PHP:
<?php // deze regel plaats ik alleen voor de syntax-kleurtjes in dit voorbeeld.
$text = "Naam:". $_POST['Naam'] ."\n";
$text .= "Adres:". $_POST['Adres'] ."\n";
$text .= "Telefoon:". $_POST['Telefoon'] ."\n";
$text .= "Adres:". $_POST['Email'] ."\n";
?>

2)

PHP:
<?php // deze regel plaats ik alleen voor de syntax-kleurtjes in dit voorbeeld.
if(mail("JOUWMAILADRES@hotmail.com", "Contact formulier vanaf website Tommie.nl", $text)) {
   echo "Mail is verzonden! Bedankt!";
} else {
   echo "Er is een technisch probleem bij ons, de mail is niet verzonden.";
}
?>

Maar het script is verder geen hoogstandje.
Er is geen goede controle of iets verstuurd is, wat tot 'notice'-foutmeldingen kan leiden. Er is geen controle op validatie van de ingevoerde velden en de mail() functie kan ook wel netter met wat headertjes die de mail beter omschrijven.

Als ik een zeer goede tip mag geven om je site flink te verbeteren. Gebruik Wordpress en installeer dit via FTP.
 
Laatst bewerkt:
Alweer bedankt PHP4U.

1) Werkt prima, bedankt. Nu kan ik beide formulieren goed definiëren in mijn mail.

2) Ik bedoelde: Ik wil, na op 'send' geklikt te hebben een hele nieuwe pagina krijgen, namelijk de pagina: bedankt_reactie2.0.html.
Op die pagina komt een bedankje en overige bijzonderheden te staan.
Ik wil dus niet hetzelfde contactformulier zien met een bedank text.
 
Dan kan je toch ook kijken of je formulier is verstuurd?

Code:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
// hier je controle-  en mail actie
} else {
?>
Hier je formulier
<?php
}
?>

Want waarom doorsturen als het nog eenvoudiger kan?
 
Okee, succes!
Lukt het niet, laat even weten.
 
Laatst bewerkt:
Uiteindelijk ben ik overgegaan naar een andere webhost en heb ik de hele site opnieuw gebouwd met WordPress.
Erg blij met de overstap. Wordpress is makkelijk en vol met opties/plug-ins.
Site draait als een tierelier!!
@PHP4U: bedankt voor de tip.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan