I'm trying to concatenate PHP with HTML and I was wondering what the best practice for it is. So far, I have approached it like so: --EDITED TO DISPLAY FULL SCRIPT--
<?php include("header.php"); ?>
<div id="main">
<table id="mainTable">
<tr>
<td id="leftPane">
<div class="pgbody">
<div class="subblock">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<table width="100%" cellpadding="10" cellspacing="0">
<tr>
<td colspan="3" style="width:99%">
<label for="isVersion">InstallShield Version</label><br />
<select name="isVersion" onchange="javascript:setTimeout('__doPostBack(\'ddlVersion\',\'\')', 0)" id="isVersion" class="box">
<option value="2012Spring">2012 Spring</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2009 Express">2009 Express</option>
<option value="IS2008">2008</option>
<option value="IS2008 Express">2008 Express</option>
</select>
<tr>
<td colspan="3" style="width:99%">
<br />
<input type="checkbox" name="no_internet" value="no_internet"> no_internet
</td>
</tr>
<tr>
<td colspan="3" style="width:99%">
<br />
<input type="submit" name="submit" value="Submit">
</td>
</tr>
</tr></table>
<?php
if(isset($_POST['submit']))
{
echo "<h2>Response</h2><br />";
$isVersion = $_POST["isVersion"];
$output_script = "
<p>Hello, <br />
To activate InstallShield, please follow the steps below:<br /><br />
1. Launch a Command Prompt window and browse to the directory - 'C:\Program Files\InstallShield\\$isVersion\System' (or 'Program Files (x86)' on a 64 bit machine)<br />
2. You will need to pass the parameter '/return' to the executable 'TSconfig' as below<br />
'C:\Program Files\InstallShield\\$isVersion\System\TSconfig.exe /return'<br />
3. Providing the machine has a valid internet connection the license will deactivate and the message in the dialog will reflect this<br />
4. Re-launch InstallShield.exe and you will be presented with the same activation dialog as before<br />
5. Proceed with the activation normally<br />
6. The dialog should show a successful activation message and the product should remain activated at this stage.<br />
</p>";
?>
<div class="ResponseBox" style="background-position: 0 0;">
<div class="ResponseText">
<?php echo $output_script;
}
?>
<?php
elseif(isset($_POST['submit']) && $_POST['no_internet'])
{
echo "<h2>Response</h2><br />";
$isVersion = $_POST["isVersion"];
$no_internet = $_POST["no_internet"];
$output_script = "
<p>Hello, <br />
To activate InstallShield, please follow the steps below:<br /><br />
1. Launch a Command Prompt window and browse to the directory - 'C:\Program Files\InstallShield\\$isVersion\System' (or 'Program Files (x86)' on a 64 bit machine)<br />
2. You will need to pass the parameter '/return' to the executable 'TSconfig' as below<br />
'C:\Program Files\InstallShield\\$isVersion\System\TSconfig.exe /return /$no_internet'<br />
3. Providing the machine has a valid internet connection the license will deactivate and the message in the dialog will reflect this<br />
4. Re-launch InstallShield.exe and you will be presented with the same activation dialog as before<br />
5. Proceed with the activation normally<br />
6. The dialog should show a successful activation message and the product should remain activated at this stage.<br />
</p>";
?>
<div class="ResponseBox" style="background-position: 0 0;">
<div class="ResponseText">
<?php echo $output_script;
}
?>
</div>
</div>
</div>
</td>
<td id="rightPane">
<div class="PromoBox" style="background-position: 0 0;">
<div class="PromoText">
<?php
echo "<h2>Related KB Article: </h2><br />";
echo "<h3>Deactivation of IS - Q201081</h3>";
?>
</div>
</div>
</td>
</tr>
</tr>
</table>
</div>
As you can see the PHP and HTML concatenate one another as and when it is required. I am wondering, however if this is actually the best approach and should I use PHP to echo everything rather than doing it like above?
I am also trying to write an elseif block below this which gives me an error which states the elseif is unexpected, which is what makes me think that I'm approaching this whole thing wrong.
When I look at huge projects that people have made, I've noticed that barely anything is within each file, and most certainly not a lot of HTML is visible. Am I correct in assuming that most of it goes within objects or classes? Any suggestions or references will be greatly appreciated. Thanks in advance.
echoHTML. In your template files you should have mostly HTML, with some PHP variables printed at the right place. PHP is a templating language, all control structures have a templating version (if () : ... endif;for example) and you can even use shorthand PHP blocks (like<?=$x?>to print the value of$x) if they are turned on in the server. By the way, I voted close, the question is too broad and will invoke debate.<?=even works if short tags are off, seems like it's encouraged instead. I don't see the reason to deprecate the templating versions of the control structures either. I think I've read something about ASP-style and script PHP tags being deprecated, but never used those anyways...