在页面顶部使用PHP echo

3
我将尝试在页面顶部输出某些内容,同时在底部捕获一些东西。这是我的脚本:
 <html>
<head>
  <title>Westpop</title>
  <link rel="stylesheet" href="opmaak.css">
</head>
<body>
<div id="header"><a href="Index.php"></a></div>

 <?php 

    $host = "localhost";
    $gebruikersnaam = "root";
    $wachtwoord = "";
    mysql_connect($host, $gebruikersnaam, $wachtwoord);

    $demooistedatabase = "c5g4westpopintranet";
    mysql_select_db($demooistedatabase);

    $achternaam = $_POST["achternaam"];
    $voornaam = $_POST["voornaam"];
    $gbdatum = $_POST["geboortedatum"];
    $email = $_POST["email"];
    $geslacht = $_POST["geslacht"];
    $wachtwoord = $_POST["wachtwoord"];
    $woonplaats = $_POST["woonplaats"];
    $adres = $_POST["adres"];
    $telefoonnummer = $_POST["telefoonnummer"];
    $functie = $_POST["functie"];


    $achternaam = stripslashes($achternaam);
    $voornaam = stripslashes($voornaam);
    $gbdatum = stripslashes($gbdatum);
    $email = stripslashes($email);
    $geslacht = stripslashes($geslacht);
    $wachtwoord = stripslashes($wachtwoord);
    $woonplaats = stripslashes($woonplaats);
    $adres = stripslashes($adres);
    $telefoonnummer = stripslashes($telefoonnummer);
    $functie = stripslashes($functie);


    $query ="INSERT INTO vrijwilliger (voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)
                VALUES('$voornaam','$achternaam','$gbdatum','$geslacht','$wachtwoord','$woonplaats','$adres','$telefoonnummer','$functie',null,null,'$email')";

?>
<div id="registreer">
<center>
<br><br>
<?php

 $foutloos=true;


if(preg_match("/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $wachtwoord) === 0)
{
echo '<fblack>Wachtwoord moet minstens 8 tekens lang zijn, een kleine letter, grote letter én cijfer bevatten.<br><fblack>';
$foutloos = false; 
}

if(preg_match("/^[0-9]{10}+$/", $telefoonnummer) === 0)
{
echo '<fblack>Het telefoonnummer moet 10 cijfers bevatten.<br><fblack>';
$foutloos = false; 
}


if(preg_match("/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/", $gbdatum) === 0)
{
echo '<fblack>Geboorte datum moet op dit formaat ingevoerd worden: JJJJ-MM-DD<br><fblack>';
$foutloos = false; 
}

if(preg_match("/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i", $email) === 0)
{
echo '<fblack>Email moet hier op lijken: email@provider.com<br><fblack>';
$foutloos = false; 
}


if(preg_match("/^[A-Z][a-zA-Z -]+$/", $voornaam) === 0)
{
echo '<fblack>Voornaam is niet geldig ingevoerd, heeft u een hoofdletter gebruikt?<br><fblack>';
$foutloos = false; 
}


if(preg_match("/^[A-Z][a-zA-Z -]+$/", $achternaam) === 0)
{
echo '<fblack>Achternaam is niet geldig ingevoerd, heeft u een hoofdletter gebruikt?<br><fblack>';
$foutloos = false; 
}


if ($geslacht == '') 
{
echo '<fblack>U heeft uw geslacht niet aangegeven.<br><fblack>';
$foutloos = false; 
}


if(preg_match("/^[a-zA-Z]+\ +[0-9]+$/", $adres) === 0)
{
echo '<fblack>Het adres is verkeerd ingevoerd.<br><fblack>';
$foutloos = false; 
}


if(preg_match("/^[a-zA-Z\s]+$/", $woonplaats) === 0)
{
echo '<fblack>De woonplaats is verkeerd ingevoerd.<br><fblack>';
$foutloos = false; 
}

if ($foutloos == true)
{
mysql_query($query)
or die('<fblack>U staat al in ons systeem<A HREF="javascript:javascript:history.go(-1)"><br><br>Klik hier om terug te gaan</A><fblack>');
echo "<fblack>Uw registratie is succesvol verwerkt!<br>Log <a href='login.php' MEDIA=screen>hier</a> in<fblack>";
}
else
{

echo '<fblack><br><A HREF="javascript:javascript:history.go(-1)">Klik hier om terug te gaan</A><fblack>';
}

?>
</center>
</div>
<?php
include ("html_end.php");
?>

现在我想在页面顶部显示一个错误信息。那么,在捕获IF中的内容时,我该如何在顶部回显信息?

if ($foutloos == true)
{
mysql_query($query)
or die('<fblack>U staat al in ons systeem<A HREF="javascript:javascript:history.go(-1)"><br><br>Klik hier om terug te gaan</A><fblack>');
echo "<fblack>Uw registratie is succesvol verwerkt!<br>Log <a href='login.php' MEDIA=screen>hier</a> in<fblack>";
}
else
{
ECHO SOMETHING THAT HAS TO GO ABOVE THE PAGE
echo '<fblack><br><A HREF="javascript:javascript:history.go(-1)">Klik hier om terug te gaan</A><fblack>';
}

提前感谢您!


3
MVC 是你的好友... 你真的应该将逻辑与视图分离,避免混合标记和 PHP 代码。 - Fabrizio Calderan
1
MVC代表什么?我是一名学生,刚学习了PHP和SQL的基础知识。 - Gerlof Leuhof
Model-View-Controller(MVC)是一种现代模式,被许多框架和多种语言所采用(例如,在PHP中,最显著的例子是Zend Framework或Symfony)。 - Fabrizio Calderan
虽然MVC绝对是正确的选择,但对于初学者来说可能会感到压力山大。你可以从将逻辑和视图分离在一个文件中入手,将PHP代码放在文件顶部,HTML代码放在底部。 - TJHeuvel
4个回答

3
您希望将逻辑和视图分开。因此,将PHP放在顶部,然后将HTML放在底部,例如:
//This goes at the top, only PHP here!
$host = "localhost";
$gebruikersnaam = "root";
$wachtwoord = "";
mysql_connect($host, $gebruikersnaam, $wachtwoord);
//etc
 $query ="INSERT INTO vrijwilliger (voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email)                VALUES('$voornaam','$achternaam','$gbdatum','$geslacht','$wachtwoord','$woonplaats','$adres','$telefoonnummer','$functie',null,null,'$email')";
$foutmelding = false; //Start without error obviously, we check later if this value has been changed at all.

if(preg_match("/^[0-9]{10}+$/", $telefoonnummer) === 0) //Something is not right
{
    $foutmelding = "Je telefoon nummer klopt niet!"; //By setting this to a string it will evaluate to `true` later on, thus showing the error message.
}
//More error checking etc...

然后在你的视图中找到所有内容,例如HTML;
<?php if($foutmelding) { ?>
   Er is een fout opgetreden; <?php echo $foutmelding; ?>
<?php } else { ?> 
   Alles is goed gegaan, dankjewel!
<?php } ?>

2
使用PHP缓冲区。在达到PHP文件的结尾之前,不要发送缓冲区的内容。 http://php.net/manual/en/book.outcontrol.php
<?php
// Open buffer #1
ob_start();
print "Line 1\n";

// Open buffer #2
ob_start();
print "Line 2\n";

// Grab the contents of buffer #2
$buf2 = ob_get_contents();

// Close buffer #2
ob_end_clean();
print "Line 3\n";

// Grab the contents of buffer #1
$buf1 = ob_get_contents();

// Close buffer #1
ob_end_clean();

// Output the buffer contents
print $buf1;
print $buf2;
?>

这可能不太适合这个答案,但是缓冲区加一。 - GoodSp33d

0

您至少有两种方法可以实现此目的:

  • 服务器端 - 使用一些模板引擎,如Smarty,将演示层与业务层分离,如F.Calderan所建议的那样。
  • 客户端 - 在PHP脚本生成的HTML中添加一些JavaScript代码。使其在页面末尾执行并修改HTML的DOM。

0

如果您不想将项目重写为MVC,这里有一个快速解决方案:使用ob_start


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接