Rafraichir une page

Petit nouveau ! | 4 Messages

02 avr. 2009, 09:36

Bonjour à tous,
Je suis nouveau sur ce forum et débutant en PHP :)
J'ai un probeme de rafraichissement que j'aimerai résoudre. J'espere que vous pourrez m'aider.

J'utilise un CMS qui s'appelle simpleGC et qui fonctionne avec des modules.
Donc en fait, je code uniquement un module que j'intègre au CMS.

Voilà à quoi ca ressemble lorsque je clique sur Administration SAP (notez l'URL http://localhost/webSAP/?page={AdministrationSAP})
Image

J'ai donc mis des listes déroulantes avec <select><option> ...etc
Lorsque je clique sur le bouton Ok à côté de Check, j'ai ceci (en fait c'est un appel à Check.php via include() :

Image

alors voilà mon problème, pour l'instant j'ai grosso-modo ce code (j'ai retiré qqes lignes de codes) :

echo '<form  method="post" action="'.$Path.'modules/AdministrationSAP/check.php" target="_blank">';
echo '<input type="checkbox" name="ping" value="oui" />';
echo '<input type="checkbox" name="sapinfo" value="oui" />';
echo '<input type="submit" value="Contrôler"/>';
donc dès que je clique sur le bouton Controler, une nouvelle page s'affiche et il effectue mon Ping qui va générer un tableau.

MAIS, ce que je veux, c'est que dès que je clique sur Controler, il effectue mon Ping puis réaffiche exactement la meme page.
J'ai essayé en mettant dans
<form action=$_SERVER["PHP_SELF"] method="post">
mais le probleme c'est que la page se réaffiche bien mais comme sur la capture d'écran N°1 alors que je voudrais la capture N°2, c'est-à-dire exactement la meme page

Que me conseillez-vous ?

Merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2009, 09:51

Quand tu cliques sur un bouton "OK" de la première page, tu envois un formulaire contenant certaines données (tes listes déroulantes et probablement également des champs cachés). Ces données font qu'il affiche le tableau en plus du formulaire.

Il faut donc que ton bouton contrôler fasse de même en renvoyant les données nécessaire à l'affichage du tableau. Tu peux pour cela repasser les données reçues et nécessaires, en champ caché pour que celles-ci soient renvoyées avec le formulaire lorsque tu cliques sur ton bouton :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

02 avr. 2009, 10:16

EDIT : oops j'avais marqué un message avant celui là où j'avais dit que j'avais pas tout compris ton message :? et je l'ai supprimé par erreur :!:

En fait, quand je clique sur le premier Bouton OK, c'est juste un appel à check.php avec un include();

en résumé mon fichier check.php :
ce script fonctionne comme je le souhaite lorsqu'il est lancé seul.

echo '<form method="POST">';
echo '<input type="checkbox" name="ping" value="oui" />';
echo '<input type="submit" value="Contrôler" name="bControl"/>';
echo '</form>';

if (isset($_POST['bControl'])) {
   if ($_REQUEST['ping'] == "oui" )
   {
           // je fais mon ping et j'update ma table dans ma database
   } 
   include("checktab.php");  // ce fichier va chercher les donnees dans ma database et créé le tableau des resultats
}
MAIS, il ne fonctionne pas lorsqu'il est intégré au CMS.
Pourquoi ? Dois-je sinon utiliser un systeme avec des frames ?
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2009, 14:16

Le problème, c'est qu'une fois intégré à ton cms, tu as besoin de prendre en compte les variables du cms dans tes liens et dans tes formulaires, pour que celui-ci puisse fonctionner.

En gros, en plus des paramètres dont tu as besoin toi pour exécuter ton script, tu dois également passer les paramètres dont ton cms à besoin pour ouvrir la page sur laquelle s'exécute ton script :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

02 avr. 2009, 17:07

N'existe-t-il pas une méthode pour "auto-valider" une option, c'est-à-dire que dans :
    
<select name="test">
    <option>Check</option>
    <option>bidule</option>
    <option>bidule</option>
</select>
    <input type="submit" value="Ok" />
Lorsque que je fais recharger ma page, il fait comme si Check est choisie.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2009, 17:46

Dans ton option, il te faut rajouter l'attribut selected afin qu'elle soit choisie par défaut quand tu arrives sur la page :

Code : Tout sélectionner

<option selected="selected">...</option>
En fait, le but est le même que tu procèdes ainsi ou par un champ caché : il faut renvoyer la valeur à ton cms :) (et c'est effectivement plus joli ainsi :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

03 avr. 2009, 09:03

et comment qui faut faire ? :) un petit exemple parce que je m'y connais pas grand chose en PHP.
en tout cas merci pour ton aide

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2009, 10:31

L'idée est en fait d'ajouter l'attribut selected="selected" dans l'option que tu souhaites voir sélectionné par défaut :

Code : Tout sélectionner

<option selected="selected">Check</option>
Pour cela, il te faut donc récupérer la valeur courante et tester pour chaque option si elle correspond à la valeur de l'option. Si c'est le cas, alors tu ajoutes l'attribut à l'intérieur de ton option grace à php.
<?php 
  if (isSet($_POST['test']) && $_POST['test']=='Check') // si j'ai une valeur pour "test" et que celle-ci est égale à "Check"
    echo 'selected="selected"'; // j'ajoute l'attribut et mon option sera présélectionnée
?> 
Un exemple concret pour sélectionner une couleur :
<select name="couleur"> 
    <option value="blue" <?php if (isSet($_POST['couleur']) && $_POST['couleur']=='blue') echo 'selected="selected"'; ?> >Un joli bleu</option> 
    <option value="red" <?php if (isSet($_POST['couleur']) && $_POST['couleur']=='red') echo 'selected="selected"'; ?> >Du rouge</option> 
    <option value="beurk" <?php if (isSet($_POST['couleur']) && $_POST['couleur']=='beurk') echo 'selected="selected"'; ?> >Jaune à pois verts et à rayures mauves</option> 
</select> 
A noter que l'attribut "value" que j'ai ajouté ici est facultatif. S'il n'est pas précisé, la valeur est celle du libellé de l'option :
    <option <?php if (isSet($_POST['couleur']) && $_POST['couleur']=='Jaune à pois verts et à rayures mauves') echo 'selected="selected"'; ?> >Jaune à pois verts et à rayures mauves</option>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...