2009-12-21 5 views
1

Je suis en train de coder un petit script qui va prendre des données de forme et faire quelque chose avec. Si cela échoue, il affiche à nouveau l'erreur et le formulaire. S'il réussit, il affichera un message de réussite.PHP Mixer le code du serveur avec la sortie HTML

Le code de backend utilise des classes qui lancent des exceptions en cas d'erreur avec les données de formulaire. Les appels aux classes seront enveloppés dans un try {} catch {}.

Quel serait le meilleur moyen de montrer le formulaire deux fois?

je besoin de quelque chose comme:

If form submitted: 

    Try: 
     Add the account via class 
    Catch: 
     Echo the error 
     Show the form 

    Echo succcess 

Else: 
    Show the form 

Répondre

1

Encode le code HTML de la forme dans une variable, et écho à la variable aux deux endroits.

$form = "<form>...</form"; 

if ($_POST) { 
    if (addAccount($fname,$email)) { 
    print "Success"; 
    } else { 
    print "Errors"; 
    print $form; 
    } 
} else { 
    print $form; 
} 
+0

Je pensais que ce serait la voie à suivre – dave

+0

Vous pourriez même préférer la syntaxe HEREDOC pour la déclaration de variable de formulaire pour rendre le code HTML plus lisible. Voir: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – Sampson

2

Pour les formes simples, j'ai écrit comme ceci:

<?php 

    if (isset($_POST['submit'])) 
    { 
    $errorFound=0; 

    if (empty($_POST['form_variable'])) 
    { 
    $errorFound=1; 
    $error_str="empty string"; 
    } 

    if (!$errorFound) // if no errors, process the form! 
    { 
    //process whatever you do with it - redirect to another page 
    } 

    } 
?> 
<form action="name.php"> 
<div> <input name='form_variable'> 
<?php if ($errorFound) {echo $error_str} ?> 
</div> 
<input type=submit name=submit> 
</form> 

Ce qui se passe est que si elle n'a jamais soumis, il aller directement à un formulaire html et d'affichage, mais si vous avez soumis et il y a une erreur , cela obligera php à afficher à nouveau le formulaire avec echo'd error_st après le tag d'entrée.

1

Vous pouvez faire toutes ces choses très facilement avec smarty comme moteur de template. Son exactement même que votre question

{Si le formulaire de $ eq soumis)}

{si le succès de $} Ajoutez le compte via la classe {else} Echo l'erreur Afficher la forme

Echo succcess {/ if} else} { afficher la forme {/ if}

Ou si vous voulez juste de le faire en php signifie seulement il suffit de faire le « Netro x "méthode. C'est bon.

et ceci est un autre concept appelé heredoc en php. vous pouvez inclure votre code HTML en php de manière très simple.