Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

gerer une fenetre message

5 réponses
Avatar
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=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

5 réponses

Avatar
Pascal Poncet
Le 30/03/2011 14:42, J-F Portala a écrit :

<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
Avatar
J-F Portala
C'est une erreur de ma part due à des essais
pour corriger le phénomène.
Dans la version de base, je n'ai que la balise <body class=...

Merci de ton aide

Jeff
Avatar
Pascal Poncet
Le 30/03/2011 15:32, J-F Portala a écrit :
Dans la version de base, je n'ai que la balise<body class=...



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
Avatar
J-F Portala
Désolé, mais c'est encore un reliquat de tests.

Jeff
Avatar
J-F Portala
Bonjour,
Je viens de m'apercevoir que le problème viendrait plutot du texte affiché.
J'utilise
Cr&eacute;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