Fichiers PHP et HTML séparés : retour au HTML

Fermé
cede - 8 déc. 2008 à 13:26
 cede - 10 déc. 2008 à 06:28
Bonjour à toutes et à tous.

J'ai un petit soucis avec le PHP et le HTML.

J'ai créé un fichier HTML avec un formulaire très simple (pour tester) qui demande d'encoder un login (pour rechercher un utilisateur dans une base de donnée).

Je fais différents tests (champ vide, ou alors contenant des chiffres) dans un fichier PHP séparé (ainsi que dans un fichier de fonctions javascript, également séparé, mais qui ne pose pas de problème pour retourner dans la page HTML et au champ incriminé)

Voiçi le code de la fonction de vérification en javascript (fichier check_functions.je) :

function check_employee_login(employee_login)
{
if (document.getElementById('employeelogin').value == '')
{
alert('Vous devez entrer un login pour cet employé');
document.getElementById('employeelogin').select(); !!! J'aimerais bien pouvoir utiliser la même chose plus loin !!!
}
}

J'aimerais pouvoir, depuis mes test en PHP (complémentaires de ceux en javascript), si une erreur est détectée, revenir dans la page HTML d'origine, avec le focus sur le champ fautif et son contenu sélectionné pour pouvoir faire une correction le plus facilement possible.

Voiçi mon code :

Le fichier HTML:

<html>

<head>

<script language="javascript" src=check_functions.js>
</script>

<title> Ajouter un employé</title>

</head>

<body>

<h1> Ajouter un employé : </h1>

<form action="enregistrer_employe.php" method="post">

<!-- Le login de l'employé -->
<label> Employee's login : </label>
<input type="text" name=employeelogin id=employeelogin maxlenght="10" onBlur=check_employee_login(event.srcElement.value)><br><br>

<input type="submit" value="Enregistrer">
<input type="reset" value="Effacer">

</form>

</body>

</html>

Maintenant, le fichier PHP qui va effectuer les vérifications :

<?php

function alert_PHP($error_message)
{
echo "<script>alert(\"$error_message\")</script>";

La fenêtre d'alerte s'ouvre bien, mais, une fois "OK" cliqué, je reste sur une page blanche alors que je voudrais retourner dans ma page HTML avec le formulaire.

ICI, je voudais bien renvoyer l'employé qui veut se connecter à la page HTML et au champ fautif avec sa valeur sélectionnée, comme depuis une erreur détectée depuis le fichier check_functions.js, function check_employee_login(variable)

}

/* Validation du login de l'employé :
- Ne doit pas être vide
- Doit contenir que des lettres
- Doit avoir au minimum 6 caractères
- Doit avoir au maximum 10 caractères
*/
$_REQUEST['employeelogin'] = trim($_REQUEST['employeelogin']);
if (empty($_REQUEST['employeelogin']))
alert_PHP("ERREUR : vous devez entrer un login pour cet employé !");
if ((eregi(":alpha:{6,10}", $_REQUEST['employeelogin'])) == "false");
alert_PHP("ERREUR : le login de l'employé ne peut contenir que de 6 à 10 lettres !");

ICI : si tous les tests sont OK --> écriture dans la base de donnée. Cette partie ne me pose pas de problèmes.

?>

Voilà, je ma casse la tête sur ce problème depuis trop longtemps, alors, j'ai décidé de vous appeller au secours.

Un tout grand merci d'avance pour votre aide.

Christian.
A voir également:

1 réponse

Utilisateur anonyme
8 déc. 2008 à 14:18
Bonjour,

le formulaire doit mettre en oeuvre les vérifications en javascrip par exemple.
dans ces vérifications si tout est bon on met un document.submit();

sinon on fait un return false;

ci joint un exemple pour envoyer un mail

<html>

<head>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1152">
<LINK REL="stylesheet" HREF="monstyle.css" TYPE="text/css">

<title>A2X Sonorisation</title>
</head>
<SCRIPT LANGUAGE="JavaScript">
/*
SCRIPT EDITE SUR L'EDITEUR JAVASCRIPT
http://www.editeurjavascript.com
*/
function VerifForm(formulaire)
{
adresse = formulaire.expediteur.value;
zonemessage = formulaire.message.value;
var place = adresse.indexOf("@",1);
var point = adresse.indexOf(".",place+1);

if (zonemessage == "" ){
alert('zone texte du message invalide!!');
return(false);
}

if ((place > -1)&&(adresse.length >2)&&(point > 1))
{
formulaire.submit();
return(true);
}
else
{
alert('Entrez une adresse e-mail valide!!');
return(false);
}
}
</SCRIPT>

<body background="fond.jpg" >
<!--fichier mail.php-->
<?php
$envoi=$_POST['envoi'];
$destinataire="xxx"."@"."wanadoo.fr";
$expediteur=$_POST['expediteur'];
$sujet="contact";
$message=$_POST['message'];

if (! isset($envoi)) {
?>
<center><b>Contact </b></center>
<form name="formulaire" method="post" action="mail.php" onSubmit="return(VerifForm(this));">
<table border=0 width=80% cellspacing=3 cellpadding=3 align='center'><tr>
<td> Destinataire </td>
<td><input readonly type=text name='destinataire' size=30 value='nom'></td>
</tr><tr>
<td> Expéditeur </td>
<td><input type=text name='expediteur' size=30 value=''> (entrez votre adresse électronique).</td>
</tr><tr>
<td> Sujet </td>
<td><input readonly type=text name='sujet' size=30 value='A2x Sonorisation - contact'></td>
</tr><tr>
<td> Votre message </td>
<td><textarea rows=10 cols=50 name='message' value='Voici mon message\n'></textarea></td>
</tr><tr>
<td>Validation : </td>
<td><input type='submit' name='envoi' value='Envoyer' ></td>
</tr>
<tr> <td colspan='2'>Aucune des informations entrées ici n'est conservée dans une base.
</td></tr>
</table>
</form>
<?php
}
else {

/* pour neutraliser les \ ajoutés à la transmission devant les ' et les " */
$message=stripslashes($message);
$sujet=stripslashes($sujet);
$entete="From: $expediteur\r\nReply-To: $expediteur\r\nX-Mailer: PHP/";

/* expédition et compte-rendu */
$ok=mail($destinataire, $sujet,$message,$entete);
if ($ok){
echo "Envoi du message réussi !";
echo "<br><input type='button' value=' Terminer ' onclick='javascript:window.close()'>";
}
else {
echo "L'envoi a échoué ..";
echo "<br><input type='button' value=' Terminer ' onclick='javascript:window.close()'>";
}
}
?>

0
Bonjour Giheller.

Un tout grand merci pour cette solution, qui fonctionne très bien, mais qui n'est pas celle que je cherchais.

De mon côté, j'ai finalement trouvé comment faire les deux test séparément, chacun dans un fichier différent.

Encore un grand merci pour l'aide apportée.

Christian.
0