Rafraichir une page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Rafraichir une page

par Ryle » 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>

par tpkennes » 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]

par Ryle » 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 :))

par tpkennes » 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]

par Ryle » 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 :)

par tpkennes » 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

par Ryle » 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 :)

Rafraichir une page

par tpkennes » 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.