[PHP] affichage dans une <div>

Résolu
Bonjour,

j'ai un petit souci avec mon code php. Je voudrais afficher mon menu codé dans menu.php dans une div qui est dans index.php. Je vous laisse mon code parce que je ne trouve pas mon erreur.

<?php $menus=array(
		    'menu'=>'menu',
		    'menu_com' => 'menu_com'
		  );
	?>

<div id="menu">
		<?php
			if(isset($_GET['haut']) && array_key_exists($_GET['haut'],$menus))
                include $menus[$_GET['menu']].'.php';
             else
                echo"ca marche pas";
		?>
	</div>
Configuration: Windows XP
Firefox 2.0.0.12

7 réponses

  1. Il est évident que le pb vient du formulaire en amont.

    La suggestion de giheller dans le tout premier message (insérer un print_r) ne semble pas voir été suivie par sakura250006 et c'est dommage car elle permetrait de confirmer cela.

    Le source du frmulaire amont n'a pas été fpurni non plus

    Autant chercher une aiguille dans une botte de foin !
    0
    1. C'est pour ça que je lui pose la question. Mais vu que son isset et son array_key_exists portent tout deux sur $_GET['haut'], ça me semblerait logique. Ou l'inverse : les $_GET['haut'] à remplacer par $_GET['menu']
      1
      1. Comme dit plus haut j'ai écrit des fromulaires et ses deux versions fonctionnent. C'est ce qui me fait dire que c'est bien dans le formulaire que le pb semble se passer.
        j'ai changer aussi la method du from en POST et pas en GET mais cela ne doit pas gêner.
        0
    2. Ca ne serait pas "include $menus[$_GET['haut']].'.php';" plutôt ?
      0
      1. Bonjour,
        cela dépend du name de la clause select dans le formulaire, et ça on ne l'a pas.
        0
    3. Bonjour,

      J'ai écrit des trucs afin de tester ton code.
      j'arrive à faire focntionner les deux.


      j'en arrive à te poser quelques questions.
      le formulaire qui renvoit sur ce script php utilise-t-il la methos GET ou POST ?
      le name de select dans le fromulaire est-il bien haut ?
      ---------- formulaire ----------------
      <html>
      <form name='form' method='POST' action='menu.php'>
      <select name='page'>
      <option>menu</option>
      <option>menu_com</option>

      </select>
      <input type='submit' value='OK'>
      </form>
      </html>
      -----------------------------------------------------------------
      <?php $menus=array(
      'menu'=>'menu',
      'menu_com' => 'menu_com'
      );
      ?>

      <div id="menu">
      <?php
      if(isset($_POST['page']) && array_key_exists($_POST['page'],$menus))
      include $menus[$_POST['page']].'.php';
      else
      echo"ca marche pas";
      ?>
      </div>
      --------------------------------------------------------------------------

      0
      1. <?php
        		$pages=array(
        		   'accueil'=>'accueil',
        		   'epreuve'=>'epreuve',
        		   'construction'=>'construction',
        		   'connexion'=>'connexion' ,
        		   'indispo'=>'indispo' ,
        		   'inscrire' => 'inscrire'
        		);
        
        
        if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
                        include $pages[$_GET['page']].'.php';
                     else
                        include 'accueil.php';
        


        alors je comprends pas tout parce que ce code marche alors que l'autre qui est sur le meme modele ne veut rien savoir...
        0
        1. le dernier cas donné n'affiche -il pas toujours accueil .php ?
          0
      2. Salut,
        Je propose juste un truc pas sûr du tout(je suit pas bon en php) mais tu perds rien à tenter:
        Peut être le include aime pas la concaténation et faire comme ça.
        $url=$menus[$_GET['menu']].'.php';
        include $url;
        echo $url; // pour voir si ça vient de là
        

        M'enfin je voit pas trop pourquoi mais bon parfois suffit d'un rien.
        Voire:
        $menus[$_GET['menu']].".php";
        0
        1. Bonsoir,

          si tu ajoutes :
          print_r($_GET); echo "<br>";
          devant ton if tu verras que ton $_GET est vide la question à se poser est pourquoi ?
          0
          1. et bien je la pose lol
            parce que ca marche tres bien avec ma div centre et mon index

            merci de ta réponse
            0