PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 22-04-2010 10:48:42

andarius40
Membre
Inscription : 22-04-2010
Messages : 3

fonction de test avec retour via include

Bonjour,


j'utilise les includes pour intégrer les pages.

avec un tableau dans index.php afin de vérifier les pages a inclure.

Si la page n'existe pas alors la page d'accueil est charge.

j'obtiens donc des liens du type :

index.php?page=nom

et dans le tableau index.php :

'nom' => 'nom.inc.php'


J'ai un formulaire avec une fonction gérant les champs saisie, dont la vérifications se fait en php .

Lorsque la vérification est faites et que je rappelle le formulaire avec les résultats (bon ou les erreurs)

cela me recharge le formulaire sous la page d'accueil.

Voici le code des pages :

index.php

<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="fr" lang="fr">

<head>

  <title>Astuces informatique</title>

  <meta http-equiv="content-type" content="text/html; charset=utf-8" ></meta>
  <link rel="stylesheet" href="./styles/index.css" media="screen" type="text/css" ></link>

   <link rel="stylesheet" href="./styles/menu.css"media="screen" type="text/css" ></link>
   <link rel="stylesheet" href="./styles/style.css" media="screen" type="text/css" ></link>
   <!-- une feuille de style pour l'impression. elle rend
    le texte noir sur blanc et éliminant les couleurs de fond -->
    <link rel="stylesheet" href="impression.css" media="print" />


  <script type="text/javascript" src="./scripts/menu.js"></script>
  <script type="text/javascript" src="./scripts/pages.js"></script>

</head>

<body>
<div id="banniere">
<span class="centrer">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="700" height="90">
  <param name="movie" value="flashvortex.swf" />
  <param name="quality" value="best" />
  <param name="menu" value="true" />
  <param name="allowScriptAccess" value="always" />
  <embed src="./flash/flashvortex.swf" quality="best" menu="true" width="700" height="90" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allowScriptAccess="always">
  </embed>
  </obj>
</span>
</div>


<div id="menu">
<?php
include('menu.inc.php');
?></div>

<div id="pages">
<?php
// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
  $pageOK = array('accueil' => 'accueil.inc.php',
              'mathematiques' => 'theorie_mathematiques.inc.php',
              'calculettephp' => 'theorie_initialize_calculette_conversion.inc.php',
                'calculconversion' => 'theorie_calcul_conversion.inc.php',
                'theorie_calculette_conversion.inc.php' => 'theorie/theorie_calculette_conversion.inc.php',
                'calculettejava' => 'theorie_mathematiques.inc.php',
              'reseaux' => 'theorie_reseaux.inc.php',
                'theoriereseau' => 'theorie_introduction_reseau.inc.php',
              'theorieethernet' => 'theorie_ethernet.inc.php',
              'theorietcpip'  => 'theorie_tcpip.inc.php',
              'theorieipv4' => 'theorie_ipv4.inc.php',
              'theorieipv6' => 'theorie_ipv6.inc.php',
              'wifi' => 'theorie_wifi.inc.php',
              'os' => 'theorie_os.inc.php',
              'virtualisation' => 'theorie_virtualisaion.inc.php',

              ); 

// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
    if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) )
         {
           include($pageOK[$_GET['page']]);  
     }
    else
     {
           include('accueil.inc.php'); // page par defaut
         }
        }
 
?>
</div>

</body>

</html>

La page d'initialisation du formulaire :

<?php

require_once ('theorie_calculette_conversion.inc.php');

conversion("","","","","","hidden","hidden","submit");

?>

le formulaire :

<?php
function conversion ($nombre, $resultat_binaire, $resultat_decimale, $resultat_hexadecimale, $message, $type, $type_resultat, $type_bouton)
{
global $nombre;
global $resultat_binaire;
global $resultat_decimale;
global $resultat_hexadecimale;
global $message;
?>
<h1>Calculette PHP</h1>
<?php
include('theorie_math_menu.inc.php');
?>
<form method="POST" action='theorie_calcul_conversion.inc.php'>
<p class="centrer">
<input type="<?=$type?>" name="message" size="36" value="<?=$message?>"></input>
<br />
<br />
<b>Nombre</b>
<input type="text" name="Nombre" size="30" value="<?=$nombre?>"></input>
<br />
<br />
Type du nombre :
<br />
<select name="choix">
<option value="1" >Binaire</option>
<option value="2" >decimale</option>
<option value="3" >Hexadecimale</option>
</select>
<br />
<br />
<input type="reset" name="reinitialise" action='index.php?page=theorie_initialize_calculette_conversion.inc.php'></input>
<input type="<?=$type_bouton?>" name="conversion" value="Conversion"></input>
<br />
<br />
<br />
<br />
<input type="<?=$type_resultat?>" name="message" size="36" value="<?=$resultat_binaire?>">
<br />
<input type="<?=$type_resultat?>" name="message" size="36" value="<?=$resultat_decimale?>">
<br />
<input type="<?=$type_resultat?>" name="message" size="36" value="<?=$resultat_hexadecimale?>">
<br />
<br />
</form>
</p>
<?php
}
?>

la page de controle :

<?php

require_once ('index.php');
require_once ('theorie_calculette_conversion.inc.php');

$nombre=$_POST['Nombre'];
$choix=$_POST['choix'];

$nombre = strtoupper ($nombre);

function verifier_base ($nombre, $base)
{
  global $rep1;
 
  switch($base)
  {
  case "2":
    $taille = strlen($nombre);
    $chiffre = "23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $var = (strcspn ($nombre, $chiffre));
       
    if ($var != $taille)
    {
    $rep1="1";
    }
    else
    {
    $rep1="0";
    }
    break;
   
  case "10":
    $taille = strlen($nombre);
    $chiffre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $var = (strcspn ($nombre, $chiffre));
       
    if ($var != $taille)
    {
    $rep1="1";
    }
    else
    {
    $rep1="0";
    }
    break;
   
  case "16":
      $taille = strlen($nombre);
    $chiffre = "GHIJKLMNOPQRSTUVWXYZ";
    $var = (strcspn ($nombre, $chiffre));
       
    if ($var != $taille)
    {
    $rep1="1";
    }
    else
    {
    $rep1="0";
    }
    break;
  }
}
 
if (($choix)=="1")
{
  verifier_base($nombre, 2);
 
 $resultat_binaire = $nombre;
 $resultat_decimale = number_format(base_convert($nombre,2,10),'',',',' ');
 $resultat_hexadecimale =strtoupper( base_convert($nombre,2,16));
}

if (($choix)=="2")
{
  verifier_base($nombre, 10);

 $resultat_binaire = base_convert($nombre,10,2);
 /*$taille = strlen($resultat_binaire_0);
 $i = "0";
 for ($i="0"; $i = $taille; $i=$i+4)
 {
  $resultat_binaire[i]=$resultat_binaire[i]+" ";
 } */

 $resultat_decimale = number_format($nombre, '', ',', ' ');
 $resultat_hexadecimale =strtoupper(base_convert($nombre,10,16));
}

if (($choix)=="3")
{
  verifier_base($nombre, 16);

 $resultat_binaire = base_convert($nombre,16,2);
 $resultat_decimale = base_convert($nombre,16,10);
 $resultat_hexadecimale = strtoupper($nombre);
}

if ($rep1=="1")
{
  $type="text";
  $message="non binaire";
  $type_resultat="hidden";
  $type_bouton="submit";
 
  conversion ($nombre, $resultat_binaire, $resultat_decimale, $resultat_hexadecimale, $message, $type, $type_resultat, $type_bouton);
}

if ($rep1=="2")
{
  $type="text";
  $message="non decimale";
  $type_resultat="hidden";
  $type_bouton="submit";
 
  conversion ($nombre, $resultat_binaire, $resultat_decimale, $resultat_hexadecimale, $message, $type, $type_resultat, $type_bouton);
}
 
if ($rep1=="3")
{
  $type="text";
  $message="non hexadecimale";
  $type_resultat="hidden";
  $type_bouton="submit";
 
  conversion ($nombre, $resultat_binaire, $resultat_decimale, $resultat_hexadecimale, $message, $type, $type_resultat, $type_bouton);
}

if (($rep1)=="0")

$type = "hidden";
$type_resultat = "text";
$type_bouton = "hidden";

 echo ( conversion ($nombre, $resultat_binaire, $resultat_decimale, $resultat_hexadecimale, $message, $type, $type_resultat, $type_bouton));
?>

Voici le lien vers le site :
site

Merci de votre aide

Hors ligne

#2 22-04-2010 10:56:18

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : fonction de test avec retour via include

Petite Astuce :
Pour les pages "fonctions" ou "requêtes" qui ne nécessitent pas un affichage, je te conseille de les mettre dans des pages autonomes, en dehors de ta structure.
Ainsi, outre un tri aisé (on voit vite les fichiers contenu, les fichiers contenant, et les fichiers "usines à gaz"), cela te permettra plus tard de réutiliser certains de tes codes pour d'autres pages sans faire de doublons....


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#3 22-04-2010 11:30:59

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : fonction de test avec retour via include

Désolé Andarius, mais... c'est quoi ta question?


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#4 22-04-2010 13:44:41

andarius40
Membre
Inscription : 22-04-2010
Messages : 3

Re : fonction de test avec retour via include

La question

Comment faire pour rappeler le formulaire avec la fonction contenant les variables de reponse

et que la page s'insère correctement dans l'index.php  avec contrôle de la page par le tableau de vérification des pages.

Hors ligne

#5 22-04-2010 13:45:31

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : fonction de test avec retour via include

Salut,

Jc a écrit :

Désolé Andarius, mais... c'est quoi ta question?

Ca je crois :

Lorsque la vérification est faites et que je rappelle le formulaire avec les résultats (bon ou les erreurs)

cela me recharge le formulaire sous la page d'accueil.

Et d'après moi, la réponse est dans la ligne 3 du script de controle :

require_once ('index.php');

=> ca inclus l'index, avec la page d'accueil par defaut puisqu'il n'y a pas de paramètre page passé en GET.

Ma question subsidiaire est : tu voulais obtenir quoi au juste ?

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#6 22-04-2010 13:48:23

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : fonction de test avec retour via include

andarius40 a écrit :

et que la page s'insère correctement dans l'index.php  avec contrôle de la page par le tableau de vérification des pages.

Erf, j'ai ma réponse entre temps smile

Donc pour que la page s'insère dans l'index, il ne faut pas inclure la page dans l'index, forcément, ca ne peut pas fonctionner smile Il faut inclure la page de controle dans l'index.

Il faut donc que l'action du formulaire soit l'index, et que la page qui va etre incluse soit celle qui fasse la conversion (enfin le controle si j'ai tout suivi).

Mais attention, le formulaire est envoyé en method POST, par conséquent tester une variable GET pour avoir le paramètre page ne fonctionnera pas.

Il faut donc également que le formulaire transmettre un paramètre page (au hasard, via un champs input de type hidden) et que le test fait sur $_GET['page'] soit aussi appliqué a $_POST['page'] (avec un elseif par exemple).

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#7 22-04-2010 20:44:10

andarius40
Membre
Inscription : 22-04-2010
Messages : 3

Re : fonction de test avec retour via include

Dans le tableau de la page index.php j'ai :

   'calculettephp' => 'theorie_initialize_calculette_conversion.inc.php',                        (initialisation du formulaire)
   'calculconversion' => 'theorie_calcul_conversion.inc.php',                                      (formulaire)
   'theorie_calculette_conversion.inc.php' => 'theorie_calculette_conversion.inc.php',  (fonction de contrôle)

Si j'ai bien compris dans le formulaire je mets un champs texte de type hidden

Sur la fonction de contrôle j'envoie via $GET[index.php?page=calculconversion]

Qui remplira le champs texte du formulaire.

Ce qui fait qu'index.php va pouvoir comparer la page avec les valeurs de son tableau.

merci encore de l'aide

Hors ligne

Pied de page des forums