gerer une fenetre message
Le
J-F Portala

Bonjour et encore merci pour votre aide
sur le sujet de la page un peu longue.
Je l'ai coupé en plusieurs morceaux.
J'ai un autre petit souci.
Lorsque je fais une requête mysql ou autre, je préviens l'utilisateur du
résultat avec une petite fenêtre supplémentaire qui s'affiche,
soit temporairement , soit attendant une validation.
Pour cela j'utilise dans mon code la fonction:
include_once('FonctMsg.php') ;
if ( $probleme )
AfficheMessage("L'élement $elt existe déjà !!!",ERREUR_TEMPO) ;
else
AfficheMessage("Requête réalisée avec succès !!!",INFOS_TEMPO) ;
Voici le fichier fonctMsg.php
<?php
define("INFOS_OK",0) ;
define("INFOS_TEMPO",1) ;
define("ERREUR_OK",2) ;
define("ERREUR_TEMPO",3) ;
function AfficheMessage($msg,$type=INFOS_OK,$tempo 00,$loadpage = "")
{
if ( $type == INFOS_OK || $type == ERREUR_OK )
$tempo = 0 ; // permet de differencier la boite modale de la boite
temporisee
$page = addslashes("message.php?type=$type&message=$msg&tempo=$tempo") ;
print "<script type='text/javascript'><!--" ;
print "window.open('".$page."','Message','width(0,height0') ;";
print "--></script>" ;
}
function RechargePage($page)
{
print "<script type='text/javascript'><!--" ;
print 'location.replace("'.$page.'") ;';
print "--></script>" ;
}
?>
qui appelle la page message.php suivante
<!doctype html public "-//W3C//DTD HTML 4.0 //EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Message</title>
<link rel="stylesheet" type="text/css" href="css/msginfo.css">
<script type="text/javascript" src="js/fonctVerif.js"></script>
<script type="text/javascript">
<!--
function GestionMessage(tempo)
{
self.focus() ;
if ( tempo > 0 )
window.setTimeout('self.close()',tempo) ;
}
//-->
</script>
</head>
<body>
<?php
if ( isset($_REQUEST['type']) )
{
switch($_REQUEST['type'])
{
case INFOS_OK:
echo '<body class="infos" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msginfo">',stripslashes($_REQUEST['message']),'</div>' ;
echo '<input type="button" value="Fermer"
onClick="window.close();"' ;
break ;
case INFOS_TEMPO:
echo '<body class="infos" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msginfo">',stripslashes($_REQUEST['message']),'</div>' ;
break ;
case ERREUR_OK:
echo '<body class="erreur" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msgerreur">',stripslashes($_REQUEST['message']),'</div>' ;
echo '<input type="button" value="Fermer"
onClick="window.close();"' ;
break ;
case ERREUR_TEMPO:
echo '<body class="erreur" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msgerreur">',stripslashes($_REQUEST['message']),'</div>' ;
break ;
}
}
?>
</body>
</html>
Cela fonctionne avec IE mais avec firefox, la fenêtre apparait mais le
message est tronqué et la couleur de fond n'est pas utilisée (pas de CSS).
Est ce que c'est une coup de bol que cela fonctionne avec IE et c'est donc
normal que cela ne fonctionne pas avec FF.
Y a t il une méthode plus élégante ?
Merci de vos suggestions.
Jeff
sur le sujet de la page un peu longue.
Je l'ai coupé en plusieurs morceaux.
J'ai un autre petit souci.
Lorsque je fais une requête mysql ou autre, je préviens l'utilisateur du
résultat avec une petite fenêtre supplémentaire qui s'affiche,
soit temporairement , soit attendant une validation.
Pour cela j'utilise dans mon code la fonction:
include_once('FonctMsg.php') ;
if ( $probleme )
AfficheMessage("L'élement $elt existe déjà !!!",ERREUR_TEMPO) ;
else
AfficheMessage("Requête réalisée avec succès !!!",INFOS_TEMPO) ;
Voici le fichier fonctMsg.php
<?php
define("INFOS_OK",0) ;
define("INFOS_TEMPO",1) ;
define("ERREUR_OK",2) ;
define("ERREUR_TEMPO",3) ;
function AfficheMessage($msg,$type=INFOS_OK,$tempo 00,$loadpage = "")
{
if ( $type == INFOS_OK || $type == ERREUR_OK )
$tempo = 0 ; // permet de differencier la boite modale de la boite
temporisee
$page = addslashes("message.php?type=$type&message=$msg&tempo=$tempo") ;
print "<script type='text/javascript'><!--" ;
print "window.open('".$page."','Message','width(0,height0') ;";
print "--></script>" ;
}
function RechargePage($page)
{
print "<script type='text/javascript'><!--" ;
print 'location.replace("'.$page.'") ;';
print "--></script>" ;
}
?>
qui appelle la page message.php suivante
<!doctype html public "-//W3C//DTD HTML 4.0 //EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Message</title>
<link rel="stylesheet" type="text/css" href="css/msginfo.css">
<script type="text/javascript" src="js/fonctVerif.js"></script>
<script type="text/javascript">
<!--
function GestionMessage(tempo)
{
self.focus() ;
if ( tempo > 0 )
window.setTimeout('self.close()',tempo) ;
}
//-->
</script>
</head>
<body>
<?php
if ( isset($_REQUEST['type']) )
{
switch($_REQUEST['type'])
{
case INFOS_OK:
echo '<body class="infos" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msginfo">',stripslashes($_REQUEST['message']),'</div>' ;
echo '<input type="button" value="Fermer"
onClick="window.close();"' ;
break ;
case INFOS_TEMPO:
echo '<body class="infos" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msginfo">',stripslashes($_REQUEST['message']),'</div>' ;
break ;
case ERREUR_OK:
echo '<body class="erreur" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msgerreur">',stripslashes($_REQUEST['message']),'</div>' ;
echo '<input type="button" value="Fermer"
onClick="window.close();"' ;
break ;
case ERREUR_TEMPO:
echo '<body class="erreur" onblur="self.focus();"
OnLoad="GestionMessage('.$_REQUEST['tempo'].')">' ;
echo '<div
class="msgerreur">',stripslashes($_REQUEST['message']),'</div>' ;
break ;
}
}
?>
</body>
</html>
Cela fonctionne avec IE mais avec firefox, la fenêtre apparait mais le
message est tronqué et la couleur de fond n'est pas utilisée (pas de CSS).
Est ce que c'est une coup de bol que cela fonctionne avec IE et c'est donc
normal que cela ne fonctionne pas avec FF.
Y a t il une méthode plus élégante ?
Merci de vos suggestions.
Jeff
Attention, cela génère deux balises <body> !
--
Cordialement,
Pascal
pour corriger le phénomène.
Dans la version de base, je n'ai que la balise <body class=...
Merci de ton aide
Jeff
Ok, donc le pb viendrait d'ailleurs.
J'ai mal vu, ou il nous manque le contenu de cette ressource :
Au-delà, y a-t-il une version accessible en ligne ?
Sinon, peut-on avoir la copie du code généré côté client ? (les deux
fenêtres)
--
Cordialement,
Pascal
Jeff
Je viens de m'apercevoir que le problème viendrait plutot du texte affiché.
J'utilise
Création ...
pour afficher "Création."
Je pensais que c'était un problème de temps d'affichage entre les 2
fenetres, mais en écrivant
directement Création, j'ai tout le message. Cela ne pose pas de problème à
IE.
Je m'étais trompé sur l'origine du problème.
Encore merci de ton aide et je suis désolé de t'avoir sollicité sur un faux
problème
Cordialement
Jeff