Hallo,
Ik zit met het volgende probleem:

In een ledensysteem wil ik bij het aanmelden (registreren) een aantal (fout)meldingen in een td cel laten zien.

In de php code gaat dit goed met:

<?php echo resultBlock($errors,$successes); ?>


maar met:

<?php
	echo "<form name='resendActivation' action='".$_SERVER['PHP_SELF']."' method='post'>

	<table width='800'>
		<tr>
		   <td colspan='3' height='50'>&nbsp;</td>
		</tr>
		<tr>
		   <td align='right'><b>Gebruikersnaam:</b></td>
		   <td><input type='text' size='20' name='username'></td>
		   <td width='400' valign='top' rowspan='2'><?php echo resultBlock($errors,$successes); ?></td>
		</tr>
	</table>
</form>";
?>

niet.

Wat zie ik over het hoofd?
Kijk eens naar lijn 2, daar haal je de PHP-code netjes buiten je echo. Maar op lijn 11 gebruik je de PHP-tag terwijl je al in de PHP-modus zit.
<?php
echo "<form name='resendActivation' action='".$_SERVER['PHP_SELF']."' method='post'>

<table width='800'>
<tr>
<td colspan='3' height='50'>&nbsp;</td>
</tr>
<tr>
<td align='right'><b>Gebruikersnaam:</b></td>
<td><input type='text' size='20' name='username'></td>
<td width='400' valign='top' rowspan='2'>". resultBlock($errors,$successes). "</td>
</tr>
</table>
</form>";
?>

Had de pagina nog niet vernieuwd, maar wat Aar zegt dus inderdaad :)
Juist, dit was dus niet de eerste maal dat ik dit niet zag/wist.

Echter de meldingen komen niet in de <td> terecht (heb er al een div omheen gezet).
Waar komen ze dan wel terrecht, en wat doet die resultBlock()-functie allemaal? Kan je daar wat van laten zien?
De meldingen komen boven de table te staan.

Zal even opzoeken wat resultBlock() doet.
Zal waarschijnlijk in de output van de function zitten :)
resultBlock()


<?php
//Displays error and success messages
function resultBlock($errors,$successes){
	//Error block
	if(count($errors) > 0)
	{
		echo "<div id='error'>
		<a href='#' onclick=\"showHide('error');\">[X]</a>
		<ul>";
		foreach($errors as $error)
		{
			echo "<li>".$error."</li>";
		}
		echo "</ul>";
		echo "</div>";
	}
	//Success block
	if(count($successes) > 0)
	{
		echo "<div id='success'>
		<a href='#' onclick=\"showHide('success');\">[X]</a>
		<ul>";
		foreach($successes as $success)
		{
			echo "<li>".$success."</li>";
		}
		echo "</ul>";
		echo "</div>";
	}
}
?>
Moet een function niet een return geven ipv echo?
Ook met return lukt het maar deels, het kruisje blijft boven de table staan en er komt maar 1 melding in de <td>.
Zo ver ik weet mag je een DIV niet binnen een tabel gebruiken.

Verder wil ik je adviseren om de enkel- en dubbelquotes om te draaien, HTML vraagt om dubbelquotes.

dus b.v. echo'<div id="naam">';

ten slotte, gebruik geen inline opmaak voor HTML maar gebruik daarvoor een css document.

Reageren