Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
981 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  fermeture d'une fenetre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fermeture d'une fenetre

n°1771653
domi_bu
Posté le 10-08-2008 à 11:11:55  profilanswer
 

Bonjour
 
Je débute en PHP/HTML/MYSQL. Et j'ai un souci avec une fonctionnalité de fermeture de fenetre OU retour à la page précédente.
 
J'ai une page "liste.php" qui affiche une liste de noms. De cette page j'aimerai pouvoir appeler une page "detail.php" (pour visualiser/modifier) et une page "ajout.php" (pour pouvoir ajouter une ligne).
 
Sur les 2 pages appelées, je mets un bouton "valider" qui doit lancer la requete SQL et revenir à la page précédente.  
 
J'ai dû mal à ce niveau là, et j'utilise cette technique :
 
 
 <form name="frm" action = "detail.php?Identifiant=<?php print $Id ?>"  method = "POST" >
  <input type="text"   name="identifiant" size="3" value=<?php print $Id;?>    maxlength="3"  disabled >
  <input type="text"   name="nom" size="20"                                     value=<?php print $Nom;?>   maxlength="35">
  <input type="text"   name="prenom" size="20"                                          value=<?php print $Prenom;?>  maxlength="35">
  <input type="hidden"         name="identifiant_cache"                                          value=<?php print $Id;?> >
  <input type="button"         name="valider"                           value="valider" onclick="f_valider()">
 </form>
 
 
et la fonction f_valider est :
 
<script>
 function f_valider() {
   
// réafficher la page
 document.frm.submit();
// retour vers la fenetre appelante  
 opener.location.href="liste.php";
// fermeture de cette page
 window.close();
}
 
Ca ne marche pas, la page refuse de se fermer.
 
Est ce que c'est la bonne technique à utiliser ? Je pourrai rajouter un lien "revenir page précédente", mais du coup ma page perdrait en fonctionnalité.
 
Comment feriez vous ?  
 
Mille mercis pour vos conseils.  
 
Dominique
 
 
 
 
 

mood
Publicité
Posté le 10-08-2008 à 11:11:55  profilanswer
 

n°1771660
esox_ch
Posté le 10-08-2008 à 12:30:48  profilanswer
 

Mais non ...
Tu dans ton PHP, une fois que tu as fait ton édition, tu loades ton listing liste.php et tu affiches un petit message style "Edition effectuée" .
 
Faut pas faire ce genre de magouille en JS parce que tu sais jamais comment le navigateur du client va le prendre

n°1771664
domi_bu
Posté le 10-08-2008 à 13:33:19  profilanswer
 

Merci pour ta réponse...mais j'ai pas tout compris.
 
Comment faire pour automatiquement revenir à la fenetre précédente une fois que l'utilisateur aura cliqué sur le message "Edition effectuée" ?
 
Je voudrai éviter que l'utilisateur doive de nouveau cliquer sur un lien pour qu'il revienne à l'écran précédent.
 
 
DOminique

n°1771669
esox_ch
Posté le 10-08-2008 à 14:07:35  profilanswer
 

Simple, tu fais ce que tu dois faire pour faire l'édition et après :
 

Code :
  1. if ( /**un contrôle que l'édition s'est bien passée*/ )
  2. {
  3. header('status: 302');
  4. header('Location: list.php');
  5. }else
  6. {
  7. //Message d'erreur
  8. }


Message édité par esox_ch le 10-08-2008 à 14:08:17

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1771671
domi_bu
Posté le 10-08-2008 à 14:19:24  profilanswer
 

J'ai essayé : message d'erreur
 
 
Warning: Cannot modify header information - headers already sent by (output started at D:\Datas\Papa\PHP\www\test\ajout.php:2) in D:\Datas\Papa\PHP\www\test\ajout.php on line 28
 
 
Voici le code de la page :
 
 
<?php
   
// print "POST  ".$_POST["prenom"];
// print "POST  ".$_POST["nom"];
// print "POST  ".$_POST["identifiant_cache"];
   
  // si quelque chose a été posté
   
  if (isset($_POST["nom"]))
     {
     include "connection.txt";
     
     $Identifiant = $_POST["identifiant_cache"];
     $Nom = $_POST["nom"];  
     $Prenom = $_POST["prenom"];  
     // preparer la requete SQL
     
     $Requete = "INSERT table1 SET nom='$Nom', prenom='$Prenom'";
     // print $Requete;
     // exécution requête
     $Detail = mysql_query($Requete) or die("L'instruction SQL a échoué : ".$Requete);
     // fermeture connection
     mysql_close();
       
   header('status: 302');
   header('Location: liste.php');
     }
?>
 
<html>
<head>
 
</head>
<body>
   
 <H2>AJOUTER UNE PERSONNE</H2>
 
 <form name="frm2" action = "ajout.php"  method = "POST" >
 
  Nom : <input type="text"  name="nom"      size="20" value=" " maxlength="35">
  Prenom :<input type="text"  name="prenom"    size="20" value=" " maxlength="35">
   
  <input type="submit"  name="valider"        value="valider" >
 </form>
   
</body>
</html>
 
 
 
Un grand merci pour ton aide.
 
DOminique
 
 
 
 

n°1771672
esox_ch
Posté le 10-08-2008 à 14:23:23  profilanswer
 

Au risque de te paraître méchant .. T'as essayé de voir comment s'utilise header() ? Parce que ton erreur découle directement du fait que tu as copié/collé une partie de mon code (qui est là pour te mettre dans la bonne direction) sans réflechir ni savoir comment il doit être utilisé.
Du coups en copiant seulement une partie et ne sachant pas ce que tu fais ... bein voilà

n°1771677
domi_bu
Posté le 10-08-2008 à 14:33:20  profilanswer
 

J'ai pas fait un copier/coller sans réfléchir.  
 
J'essaye de comprendre , je lis ce site http://www.manuelphp.com/php/function.header.php
 
Mais j'ai HTML, PHP, MYSQL à digérer en même temps, alors soit indulgent stp. Il y a 2j je ne savais même pas que ces mots existaient...
 
DOminique

n°1771681
esox_ch
Posté le 10-08-2008 à 14:39:08  profilanswer
 

Donc,
 
Header marche (= ne te génère pas une erreur de headers already sent) si et seulement s'il n'y a aucun output envoyé précedemment.
Dans ton cas, le msg d'erreur dit "output started at D:\Datas\Papa\PHP\www\test\ajout.php:2" donc ça veut dire qu'à la ligne 2 il y a qqch qui est envoyé vers la sortie => Headers already sent.
Ce que je pense c'est que ton fichier commence par un retour à la ligne, suivi par le <?php ..  
Du coups le script envoie le retour à la ligne vers la sortie avant de commencer a lire le <?php => Erreur.
 
De plus, dans les quelques lignes que je t'ai écrit, je t'ai dit de faire un test pour voir si tout s'était bien passé au moment de l'édition, c'est typiquement pour éviter que si qqch se passe mal (=> Une erreur est envoyée vers la sortie) tu te manges en plus le headers already sent

n°1771687
domi_bu
Posté le 10-08-2008 à 14:56:46  profilanswer
 

GENIAL , CA FONCTIONNE .
 
C'était bien ça : mon script démarrait en ligne 2. J'étais bloqué depuis hier soir là dessus. Merci beaucoup de ton aide.  
 
Je sais maintenant afficher une liste en lisant une base de données, modifier une ligne, ajouter une ligne. Prochaine étape  : faire quelque chose de plus jolie, j'ai lu quelque part qu'il y avait un langage appelé CSS. J'y fonce...
 
DOminique


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  fermeture d'une fenetre

 

Sujets relatifs
Fermeture automatique de fenêtreRésolu [Javascript] Agir dans Popup après fermeture de la fenetre mère
"windows.h - 'empecher' fermeture fenetre" [opengl]griser la fermeture d'une fenetre
Script pour afficher la fenêtre "Fermeture de session Windows"Fermeture d'une fenêtre entraînant actualisation d'une autre
[batch] Interdire la fermeture d'une fenetreArreter le processus de fermeture d'une fenêtre.
Fermeture d'une fenêtre .dosdéfinir les dimensions d'une fenêtre et sa fermeture automatique
Plus de sujets relatifs à : fermeture d'une fenetre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR