Een if structuur na meerdere formen. (PHP)

Status
Niet open voor verdere reacties.

BZilla

Gebruiker
Lid geworden
16 apr 2014
Berichten
170
Goeiemorgen,

In mijn laatste vraag vroeg ik hoe ik na het verzenden van de ene form. Diezelfde data ook kon meegeven met de volgende form
Zie http://www.helpmij.nl/forum/showthread.php/836845-Gebruik-maken-van-isset-in-een-isset-(PHP)

Dit is wat ik wil:

Ik heb een optie menu tussen 7 opties.

Wanneer dit optie 4 is moeten er 3 textboxes komen. Een onderwerp, een mail, en een textbox om je eigen mail in te kunnen vullen.
Deze moet doormiddel van een klik op de button gestuurd worden naar E-mail A

Wanneer het 1 van de andere 6 opties is moet er precies hetzelfde komen, alleen moet dit verzonden worden naar E-mail B.

Wat ik al heb en mijn vraag.

Ik kan kiezen uit 7 opties en krijg vervolgens die textboxjes tevoorschijn.
Ik kan alles invullen en de mail verstuurd ook.
Alleen lukt het mij niet om verschil te maken tussen optie 4 en de andere opties.

PHP:
<form name='chooseQuestion' action='mail.php' method='POST'>
	<select name='questionTopic' onchange="document.chooseQuestion.submit()">
	<?php
		$question = $_POST['questionTopic'];
	?>
		<option name='question' value="">Choose an topic</option>
		<option name='question' value="option1">option1</option>
		<option name='question' value="option2">option2</option>
		<option name='question' value="option3">option3</option>
		<option name='question' value="option4">option4</option>
		<option name='question' value="option5">option5 </option>
		<option name='question' value="option6">option6</option>
		<option name='question' value="option7">option7</option>
	</select>
</form>
<br><br>

<?php
	if(!$question == '')
	{
		if($question == 'option4')
		{
			echo '<form name="sendEmail" action="mail.php" method="POST">';
			echo '<b>Please enter a sub topic:</b><br>';
			echo $question . ': <br>';
			echo '<textarea id="userMail" name="topic"></textarea><br><br>';
			echo '<b>Please enter the e-mail content:</b><br>';
			echo '<textarea id="mailTextBox" name="Mail"></textarea><br><br>';
			echo '<b>Please enter your e-mail.<br></b>';
			echo '<textarea id="userMail" name="userMail"></textarea><br>';
			echo '<input type="submit" name="sendMail" value="Send mail"><br><br><br><br><br>';
			echo '</form>';
		}
		else
		{
			echo '<form name="sendEmail" action="mail.php" method="POST">';
			echo '<b>Please enter a sub topic:</b><br>';
			echo $question . ': <br>';
			echo '<textarea id="userMail" name="topic"></textarea><br><br>';
			echo '<b>Please enter the e-mail content:</b><br>';
			echo '<textarea id="mailTextBox" name="Mail"></textarea><br><br>';
			echo '<b>Please enter your e-mail.<br></b>';
			echo '<textarea id="userMail" name="userMail"></textarea><br>';
			echo '<input type="submit" name="sendMail" value="Send mail"><br><br><br><br><br>';
			echo '</form>';
		}
	}
	if(isset($_POST['sendMail']))
	{
		echo $_POST['Mail']; echo '<br>';
		echo $_POST['userMail'];
		$to = 'mymail@mail.com';
		$topic  = $question;
		$topic .= $_POST['topic'];
		$message  = "<html><body>";
		$message .= $_POST['Mail'];
		$message .= "</body></html>";
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
		$headers .= "From: ".htmlspecialchars($_POST['userMail'])."\r\n";
		$headers .= "CC: ".htmlspecialchars('mymail@mail.com')."\r\n";
		mail($to, $topic, $message, $headers);
	}
?>

Kan iemand mij vanaf deze code verder helpen in wat ik wil?
Alvast bedankt.

Bzilla
 
Waar komen de variabelen $_POST['mail'], $_POST['usermail'] en $_POST['sendMail'] vandaan ?

Ik zou de regel
Code:
        $question = $_POST['questionTopic'];

Buiten de select halen
Je kunt het bovenaan de PHP-code plaatsten, je kunt ook de gehele variabele $question weglaten en vervangen door $_POST['questionTopic']

Persoonlijk geef ik er de voorkeur aan om de PHP-code voor de HTML-code te zetten, op die manier kan ik eventuele gevolg variabelen nog gebruiken in mijn HTML

Code:
if(!$question == '')

Zou ik vervangen door:

Code:
        if (isset($_POST['questionTopic'])

In de Selectbox gebruik je 8x een option met dezelfde naam, maar hier unieke namen van
Identieke namen gebruik je alleen in checkboxes en radiobuttons om te groeperen.
 
Bedankt voor het reageren.
De variabelen $_POST['mail'], $_POST['usermail'] en $_POST['sendMail'] worden ingevuld in de textboxen die tevoorschijn komen nadat de eerste form verzonden is. (zie code)
PHP:
echo '<textarea id="mailTextBox" name="Mail"></textarea><br><br>';
echo '<textarea id="userMail" name="userMail"></textarea><br>';
echo '<input type="submit" name="sendMail" value="Send mail"><br><br><br><br><br>';

Voor de rest heb ik de php code nu bovenaan gezet. Ook heb ik $question vervangen door de $_POST variable.
Ook heb ik alle namen een unieke naam gegeven.
 
Laatst bewerkt:
Ik zou invoer van mailadressen sowieso niet in een textarea doen maar gewoon in een input.
PHP:
echo  '<input type="text" name="Mail" /><br><br>';
// En de andere ook.

Overigens geef je een name mee bij de select options, dit is totaal overbodig aangezien deze de naam van de select altijd pakt.
Deze kun je dus allemaal weghalen
 
Bedankt voor de tip. Dit had ik voor het gemakt gedaan zodat elke box hetzelfde was. Ik zal dit direct aanpassen.
Klopt inderdaad dat het overbodig is. Alleen geef ik deze namen omdat er later wellicht meer met het programma gedaan gaat worden. Ik kan ook dan pas de namen toepassen maar vond dit wel makkelijk gelijk te doen. Laat ik het zo zeggen zo is het mij aangeleerd haha
 
Werkt nu voor de rest wat je nou wilt? of mis je nog iets?
 
Ja ik mis nog steeds of het optie 4 of niet is.
Ik kan dit bij de if(isset($_POST['sendMail'])) niet meer ophalen.

Daarvoor heb ik wel zo'n if structuur maar daarin verzend ik niet de mail.
 
wat je zou kunnen doen is het volgende

PHP:
 if($question == 'option4')
        {
            echo '<form name="sendEmail" action="mail.php" method="POST">';
            echo '<input type="hidden" name="sendMailTo" value="A" /> ';
            echo '<b>Please enter a sub topic:</b><br>';
            echo $question . ': <br>';
            echo '<textarea id="userMail" name="topic"></textarea><br><br>';
            echo '<b>Please enter the e-mail content:</b><br>';
            echo '<textarea id="mailTextBox" name="Mail"></textarea><br><br>';
            echo '<b>Please enter your e-mail.<br></b>';
            echo '<textarea id="userMail" name="userMail"></textarea><br>';
            echo '<input type="submit" name="sendMail" value="Send mail"><br><br><br><br><br>';
            echo '</form>';
        }

en dan in je else of deze niet toevoegen, of bv : echo '<input type="hidden" name="sendMailTo" value="B" /> '

Dan kan je in de if daaronder controleren welke van de 2 formulieren die heeft gesubmit.
 
Ik ben de code aan het toepassen en het uit proberen.
Ik had net $question vervangen door $_POST['questionTopic'];

maar deze variable herkent ie niet in de if(isset($_POST['sendMail']))..

EDIT:
Sterker nog bij het testen van de rest merk ik dat ik hier sowieso in de else terecht kom.
 
Laatst bewerkt:
Bedankt voor jullie hulp het is gelukt!

if($question == 'optie4') moest in mijn code if($question == 'Optie4') worden... hoofdletter gevoellig.
Door de annpassingen van daarnet en de hoofdletter is dit nu werkend. Hartstikke bedankt!
 
Dit is voor het eerst in mijn leven dat ik hoor dat PHP hoofdlettergevoelig is.
Maar dit zou door Linux kunnen komen dat inderdaad wel hoofdlettergevoelig is.

Maar goed, het werkt, dat is het belangrijkste.
 
Laatst bewerkt:
Ik heb er ook nooit eerder last van gehad maar schijnbaar kun je $_POST['waarde'] == Optie4 niet controleren als $_POST['waarde'] == optie4

Maar inderdaad het werkt :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan