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=2000,$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 "\n<script type='text/javascript'>\n<!--\n" ;
print "window.open('".$page."','Message','width=280,height=150') ;";
print "\n-->\n</script>\n" ;
}
function RechargePage($page)
{
print "\n<script type='text/javascript'>\n<!--\n" ;
print 'location.replace("'.$page.'") ;';
print "\n-->\n</script>\n" ;
}
?>
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
> <body>
> <?php
> if ( isset($_REQUEST['type']) )
> {
> switch($_REQUEST['type'])
> {
> case INFOS_OK:
> echo '<body class="infos" onblur="self.focus();"
Attention, cela génère deux balises <body> !
--
Cordialement,
Pascal
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 :
<script type="text/javascript" src="js/fonctVerif.js"></script>
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 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