Gebruik maken van isset, in een isset. (PHP)

Status
Niet open voor verdere reacties.

BZilla

Gebruiker
Lid geworden
16 apr 2014
Berichten
170
Goeiemorgen,

Bij een project dat ik nodig heb kan ik eerst kiezen uit 4 opties. Dit doe ik doormiddel van radio buttons.
Vervolgens kijk ik met een button of het keuze 1,2 of 4 is. Zo ja dan komt er een tabel te voorschijn met verschillende inputs die ingevuld moeten worden.
Nu wil ik, nadat deze records zijn opgeslagen nogmaals met een button de data verzenden. Dit tijdelijk eerst als output op de pagina zelf. Daarna in een database (dat gaat wel lukken)

Alleen wanneer ik de 2e button klik krijg ik niet de output mee. Enig idee waarom?

HTML:
<input type="radio" name="1" value="1"
<input type="radio" name="radio" value="2">
<input type="radio" name="radio" value="3">
<input type="radio" name="radio" value="4">
<Input type = "Submit" Name = "continu" Value="Continu">
PHP:
if(isset($_POST['continu']) and !empty($_POST['continu']))
{
	if (!isset($_POST['radio']))
	{
		echo '<br>';
		echo 'Please, select an option!';
	}
	else
	{
		if (($_POST['radio'] == '1') || ($_POST['radio'] == '2') || ($_POST['radio'] == '4'))
		{
echo '<form name="submitForm" action="PAGESELF.php"method="POST">';
                echo '<table class="waardes">';
		     echo '<tr>';
			echo '<td class="waarde1">';    echo 'waarde1';    echo '</td>';
			echo '<td class="waarde2">';    echo 'waarde2';    echo '</td>';
		  	echo '<td class="waarde3">';    echo 'waarde3';    echo '</td>';
		    echo '</tr>';
               echo '</table>';
       echo '<input type="submit" name="submit" value="submit">';
echo '</form>';
                     
			if(!isset($_POST['submit']))
			{
				echo 'geen output';
			}
			else
			{
				echo 'wel output';
			}
		}
   }
}

Ik heb dit al op verschillende manieren geprobeerd. Uiteraard staat hier geen code om de textboxes etc te krijgen. Maar uberhaupt de echo verschijnt al niet.
Ik hoop dat iemand mij hierin kan helpen. Als er meer nodig is dan hoor ik dat graag.

Bzilla.
 
Laatst bewerkt:
Heb je al eens m.b.v.

Code:
echo'<pre>';print_r($_POST);echo'</pre>';

gekeken wat je binnen krijgt met de $_POST variabelen ?
 
NEe nog niet. Waar moet ik dit neerzetten?
Want wanneer ik dit in de actie van de button zet krijg ik geen return. Dat is het hele probleem.
Hij herlaad gewoon de pagina, en doet niks met de $_POST varriables
 
Laatst bewerkt:
Ik ben bang dat ik hiermee niet zo veel verder kom.
Ik zie je html-pagina niet, ik zie je php-pagina niet en ik zie de link niet tussen het klikken en de afhandeling.

Ik neem bovendien aan dat er altijd maar één radiobutton tegelijk geactiveerd mag zijn. Om de radiobuttons te groeperen moeten ze allemaal dezelfde naam hebben. Ze mogen wel verschillende id's hebben.
 
dat is missgegaan in het veranderen van gegevens...
De radio buttons hebben dezelfde naam.

Mijn php en html bestand zit bij elkaar.

Wat heb je precies nog meer nodig?

Ik heb een button om de geselecteerde radio laat tonen en daarbij een tabel met een nieuwe button.
Vervolgens wil ik wanneer de tabel ingevuld is op die button kunnen drukken en deze ingevulde gegevens meegeven.
 
Begrijp ik het dan goed dat klikken op de knop alleen voor een page refresh zorgt ?
 
Uhmm.. Ja zo kan je het noemen. alleen zorgt het er ook voor dat alle vorige acties weg zijn.

Dus van de vorige output en klik op de eerste button kreeg ik een tabel. Na dat ik de 2e button klik is die tabel dus ook weer verdwenen.

Wat er gebeurd klopt enig zins. Alleen moet ik er ook nog voor zorgen dat de ungevulde waardes van de tabellen wordt meegegeven.
 
Je input button in de php code moet tussen de form staan (zie regel 11):


PHP:
if (($_POST['radio'] == '1') || ($_POST['radio'] == '2') || ($_POST['radio'] == '4'))
        {
echo '<form name="submitForm" action="' . $_SERVER['PHP_SELF'] . '"method="POST">';
            echo '<table class="waardes">';
            echo '<tr>';
            echo '<td class="waarde1">' . 'waarde1' . '</td>';
            echo '<td class="waarde2">' . 'waarde2' . '</td>';
            echo '<td class="waarde3">' . 'waarde3' . '</td>';
            echo '</tr>';
            echo '</table>';
            echo '<input type="submit" name="submit" value="submit">';
echo '</form>';
 
Geen idee waarom dat in dit topic niet goed stond maar dat is aangepast.
In mijn script stond dit al tussen form tags. Wellicht nog andere ideeen?
 
Oke het duurde even voordat ik begreep wat jij nou precies probeerde te doen, maar volgens mij bedoelde je dit (zo niet meld het dan ff):


PHP:
<html>
<head></head>
<body>

<form name="test" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
	<input type="radio" name="radio" value="1">
	<input type="radio" name="radio" value="2">
	<input type="radio" name="radio" value="3">
	<input type="radio" name="radio" value="4">
	<input type="submit" name="continu" value="Continu">
</form>

<?php
	if(isset($_POST['continu']) and !empty($_POST['continu']))
	{
		if (!isset($_POST['radio']))
		{
			echo '<br>';
			echo 'Please, select an option!';
		}
		else
		{
			if (($_POST['radio'] == '1') || ($_POST['radio'] == '2') || ($_POST['radio'] == '4'))
			{
				echo '<form name="submitForm" action="' . $_SERVER['PHP_SELF'] . '"method="POST">';
							echo '<table class="waardes">';
							echo '<tr>';
							echo '<td class="waarde1">' . 'waarde1' . '</td>';
							echo '<td class="waarde2">' . 'waarde2' . '</td>';
							echo '<td class="waarde3">' . 'waarde3' . '</td>';
							echo '</tr>';
							echo '</table>';
							echo '<input type="submit" name="submit" value="submit">';
				echo '</form>';
						 
				
			}
	   }
	}
	if(!isset($_POST['submit']))
	{
		echo 'geen output';
	}
	else
	{
		echo 'wel output';
	}
?>

</body>
</html>
 
Bedankt voor het testen en dit is inderdaad wat ik bedoel

Maar, ik heb de code aanpgepast naar mijn code en iok krijg nog steeds voor en na dat ik de button click : 'geen output'.
 
Hmm... Dat is vervelend. Bij mij werkt de code, dus dan zal ik toch jou code moeten zien om je te kunnen helpen.
 
Het enige wat ik kan doen is weer een voorbeeld maken van wat ik niet heb.. maar goed dan kom ik precies op jou code uit natuurlijk...
zelfs de simpele text kan ik niet tonen...

Iig bedankt voor je hulp. Ik ga kijken wat ik hier verder mee kan :)
 
Het gene wat je nog wel kan doen is de onderstaande code helemaal boven aan je code ze zetten.

PHP:
if(!isset($_POST['submit']))
    {
        echo 'geen output';
    }
    else
    {
        echo 'wel output';
    }
 
Ook dit geeft in allebei de gevallen : 'geen output'.

Opzich klink het logisch in mijn oren.. Je klikt op die button en vervolgens is de hele form weg.
Maar vreemd dat het bij jou wel kan... Ik heb mijn hele code na gelopen en er is geen variable fout geplaast oid..
 
Ik ben verder gegaan met een ander deel van het project en stuit op hetzelfde probleem.. Ik kan nu wel wat meer voorbeeld code erbij geven.
Ik kies via een dropdown het onderwerp van de mail en krijg vanuit daar 3 textboxes en een button 'send mail'.

Maar waarneer ik op 'send mail' klik gebeurd er niks.

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="optie1">optie1</option>
		<option name='question' value="optie2">optie2</option>
		<option name='question' value="optie3">optie3</option>
		<option name='question' value="optie4">optie4</option>
		<option name='question' value="optie5">optie5</option>
		<option name='question' value="optie6">optie6</option>
		<option name='question' value="optie7">optie7</option>
	</select>
</form>
<br><br>

<?php
if(!$question == '')
{
	if($question == 'optie1')
	{
		echo '<form name="sendEmail" action="mail.php" method="POST">';
		echo '<b>Topic:</b><br>';
		echo $question . ': ';
		echo '<input type="text" name="topic"><br><br>';
		echo '<input type="text" id="mailTextBox" name="Mail"><br>';
		echo '<b>Please insert your e-mail.<br></b>';
		echo '<input id="userMail" type="text" name="userMail"><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 = 'mijnmail@mail.com';
			$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('mijnmail@mail.com')."\r\n";
			$headers .= "CC: ".htmlspecialchars('mijnmail@mail.com')."\r\n";
			mail($to, $topic, $message, $headers);
		}
	}
	else
	{
		echo '<form name="sendEmail" action="mail.php" method="POST">';
		echo '<b>Topic:</b><br>';
		echo $question . ': ';
		echo '<input type="text" name="topic"><br><br>';
		echo '<input id="mailTextBox" type="text" name="Mail"><br>';
		echo '<b>Please insert your e-mail.<br></b>';
		echo '<input id="userMail" type="text" name="userMail"><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 = 'mijnmail@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('mijnmail@mail.com')."\r\n";
			mail($to, $topic, $message, $headers);
		}
	}
}
?>

Dit keer alleen niet met een dubbele isset maar gewoon met het 2x versturen van een formulier..
 
Laatst bewerkt:
Is er iemand die mij hiermee kan helpen ik zit echt helemaal vast..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan