Pb de transmission de variable ? [PHP]

Résolu
Bonjour,
Comme vous pouvez le constater sur cette page (seule l'index est en php ainsi que le pop up (j'ai pas reussi a faire autrement car j'utilise des variables de session et l'index est farci d'includes comme celui-ci:
<div id="frame">
             <?php
				if($_SESSION[$page]['Location']=="Liste_Prenoms") 
				{ 
				include $_SESSION[$page]['Location']."php"; 
				} 
				else 
				{ 
				include $_SESSION[$page]['Location']." $lang.htm"; 
				}   
			?>
		</div>

les autres sont comme la ligne en gras ci-dessus.
http://txiki.free.fr/index.php?page=Intro_prenoms&lang=Fr

J'ai pourtant bien
$id = $_GET["id"]; // La manipulation de $id est plus simple que celle de $_POST["id"]

mais en cliquant sur un prénom (lien Prénoms féminins du bas, celui du haut m'obligerai de renommer toutes mes pages en .php au lieu de .htm, et j'en ai plus de 900 et non pas de code php dans ces pages).

Le reste du code pour cette page Fiche_Prenom.php:
  echo "<table width='80%' bgcolor='#FFFFFF' border='0' cellspacing='0' cellpadding='4' align='center'>\n";
// première ligne on affiche le titre "Prénom basque" 
        echo "<tr text-align='center' padding='3px'>";
        echo "<td bgcolor='#FFFFFF'><strong>" .$row['Prenom']."</strong></td>";
        echo "</tr>\n";
// lecture et affichage des résultats sur plusieurs lignes selon les cas (équivalent français etc).    
  echo "<td bgcolor='#FFFFFF' text-align='left'>" .$row['Origine']."</td>"; // affiche l'origine du prénom.
  echo "</tr>\n";
  echo "<tr>";
  echo "<td bgcolor='#FFFFFF' text-align='center'>" .$row['Ephemeride']."</td>"; // affiche l'éphéméride du prénom s'il existe.
  echo "</tr>\n";
  echo "<tr>";
  echo "<td bgcolor='#FFFFFF' text-align='center'>" .$row['FrenchName']."</td>"; // affiche l'équivalent français du prénom s'il existe.
  echo "</tr>\n";
  echo "</table>\n";
    // fin du tableau.
mysql_close();
?>


Je ne vois rien qui gène à priori mais bon, je ne suis un expert en php non plus.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Configuration: Windows XP
Firefox 3.0.1

27 réponses

Résumé de la discussion

La discussion porte sur l'intégration dynamique de fiches de prénoms via des includes PHP dans une page index, avec passage de paramètres GET et gestion d'un grand nombre de pages en .htm. Plusieurs réponses soulignent des erreurs de syntaxe dans les echo HTML et l'emplacement des liens, tout en insistant sur des corrections et des méthodes plus simples. Des pistes proposent d'afficher les prénoms en liens dans une boucle, de corriger guillemets et apostrophes, et d'envisager une pagination ou une organisation en dossiers pour clarifier le code. En complément, un ensemble de fichiers et explications a été partagé en zip pour faciliter l'analyse et la reproduction des erreurs, et permettre une reprise du travail sans découragement.

Bobot (l’IA à votre service)
  1. bonsoir,
    personnellement je suis un peu gêné par le caractère _ entre Intro et prenom

    afit un affichage au début du pgm pour voir exactement ce qui est apssé dans le $_GET
    soit :
    echo "<pre>";print_r($_GET);echo "</pre>";
    1. Contributeur
      Salut giheller,
      Comme tu peux le voir ici http://txiki.free.fr/index.php?page=Intro_prenoms&lang=Fr (dernier lien prénom marqué popup) il m'affiche une erreur que je ne comprends pas. On dirait que la syntaxe est mauvaise et pourtant je ne vois le Pb.
      Voici le début du code concerné;
      // ===================================================
      // Affichage de la fiche prénom dans un tablea&u dynamique 
      // ===================================================
        echo "<table width='80%' bgcolor='#FFFFFF' border='0' cellspacing='0' cellpadding='4' align='center'>\n";
      // première ligne on affiche le titre "Prénom basque" 
              echo "<tr text-align='center' padding='3px'>";
              echo "<td bgcolor='#FFFFFF'><strong>" .$row['Prenom']."</strong></td>";
              echo "</tr>\n";
      // lecture et affichage des résultats sur plusieurs lignes selon les cas (équivalent français etc).    
        echo "<td bgcolor='#FFFFFF' text-align='left'>" .$row['Origine']."</td>"; // affiche l'origine du prénom.
        echo "</tr>\n";
        echo "<tr>";
        echo "<td bgcolor='#FFFFFF' text-align='center'>" .$row['Ephemeride']."</td>"; // affiche l'éphéméride du prénom s'il existe.
        echo "</tr>\n";
        echo "<tr>";
        echo "<td bgcolor='#FFFFFF' text-align='center'>" .$row['FrenchName']."</td>"; // affiche l'équivalent français du prénom s'il existe.
        echo "</tr>\n";
        echo "</table>\n";
          // fin du tableau.
      mysql_close();
      ?>


      Ah oui! regarde l'url quand tu passe le curseur sur un lien, il est bizarre, en bas de la pop up.

      Un œil extérieur pourrait peut-etre mieux le voir car moi, ????. je ne vois rien.
      Je te remercie par avance pour tes lumières.
      1. Contributeur
        Salut croy,
        Elle est bizarre ta question. Sur quel lien tu a cliqué? Si c'est le premier de la liste, c'est normal, il cherche une page Header Fr.htm (et Footer Fr.htm etc...).

        Mais la ligne 134 est:
        <!-- Début de la section footer (pied de page) -->

        C'est un commentaire. Tu est sur qu'il s'agisse de la page index ?
        1. Le lien indiqué dans ton message http://txiki.free.fr/index.php?page=Intro_prenoms〈=Fr donne une erreur en ligne 134

          Warning: main( Fr.htm) [function.main]: failed to open stream: No such file or directory in /mnt/123/sdb/9/1/txiki/index.php on line 134

          Warning: main() [function.include]: Failed opening ' Fr.htm' for inclusion (include_path='/mnt/123/sdb/9/1/txiki/include:.:/usr/php4/lib/php') in /mnt/123/sdb/9/1/txiki/index.php on line 134

          D'où ma question. Logique non ?
          1. Contributeur
            Ahhhh ! oui OK ! je mé gouré sur le lien. J'ai voulu donner le lien direct mais en fait il faut passer par ici:
            http://txiki.free.fr puis aller Prénoms puis là, Prénoms basques. C'est dans cette dernière page que se trouvent trois liens mais il faut utiliser le dernier celui se terminant par (pop up).
            Mon gros Pb est que je suis condamné a utiliser des pages en htm euuuh, vais voir si je modifie les header, menu et footer.
            1. Je ne vois pas d'erreur (ni sur le lien terminé par popup ni sur les liens dans le popup qui s'affiche).

              Ton pb est-il ce qui est affiché quand on clique sur un prénom : Array.....
              1. Contributeur
                Salut croy,

                Oui c'est bien ça mon Pb. J'ai mis un echo pour voir et c'est lui qui m'affiche ça:
                $id = $_GET["id"]; // La manipulation de $id est plus simple que celle de $_POST["id"]
                	echo "<pre>";
                	print_r($_GET);echo "</pre>"; 


                D'autre par je n'ai pas reussi a ouvrir la page dans le frame principal et c'est pour ça que j'utilise le popup mais ça ne me convient pas. Et dans ce pop up, quand on passe la souris sur un des prénoms, on dirait que le code n'est pas terminé car on vois ></a><bgcolor etc......

                Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                1. Contributeur
                  Bon, il se passe un truc bizarre à savoir qu'il n'a pas l'air de prendre en compte ceci dans l'index:
                  <?php
                  				if($_SESSION[$page]['Location']=="Liste_Prenoms") 
                  				{ 
                  				include $_SESSION[$page]['Location']." $lang.php"; 
                  				} 
                  				else 
                  				{ 
                  				include $_SESSION[$page]['Location']." $lang.htm"; 
                  				}   
                  			?>


                  J'ai rajouté $lang. (qui ne l'était pas au départ car la page se nommait simplement Liste_Prenoms.php.
                  Et comme on peut le constater ci-dessous, il cherche la page Liste_Prenoms Fr.htm au lieu de Liste_Prenoms Fr.php.

                  Warning: main(./Prenoms/Liste_Prenoms Fr.htm) [function.main]: failed to open stream: No such file or directory in /mnt/123/sdb/9/1/txiki/index.php on line 127
                  
                  Warning: main() [function.include]: Failed opening './Prenoms/Liste_Prenoms Fr.htm' for inclusion (include_path='/mnt/123/sdb/9/1/txiki/include:.:/usr/php4/lib/php') in /mnt/123/sdb/9/1/txiki/index.php on line 127


                  La ligne 127 est dans le code plus haut, la ligne soulignée. Je commence a tout mélanger et en plus n'étant qu'un autodidacte et débutant en php, vous imaginez ma rage, c'est une page qui me tient énormément à coeur ! Vous n'en avez pas idée à quel point !

                  Merci a celui/ceux qui me donnera un coup de main, me corrigera ce code mais avec des commentaires que je puisse comprendre ce que je fait, mal.

                  Merci infiniment d'avance !

                  Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                  1. Contributeur
                    Bonsoir à tous,
                    Est-il possible de dire dans un if si une page se nomme ou comme ci-dessous et comment ?

                    if($_SESSION[$page]['Location']=="Liste_Prenoms")


                    Il m'en faudrait une autre pour Fiche_Prenom. En fait il me faudrait trois pages, PrenomsMasculins.php, PrenomsFeminins.php et FichePrenom.php au total.

                    Autre chose que je ne comprends pas. Ma table est en utf8, mais à l'affichage, certains caractères espagnols comme le ñ ou d'autres se transforment en ?.
                    Comment faire le utf8 decode et surtout à quel endroit de la requête ?.

                    Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                    1. Contributeur
                      Bon, je crois que je me suis mal exprimé:

                      Ma question est celle-ci:
                      Comment peut-on faire pour dire que si une if($_SESSION[$page]['Location']=="Liste_Prenoms") ou/et Fiche_Prenom ou encore Liste_PrenomsM a la question 9

                      Merci a celui qui pourrait m'aider a terminer cette portion de code php.

                      Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                      1. Bonjour,
                        sans garantie sur cette idée mais personnellement je commencerai par enlevere les espaces qui trainent dans les noms de fichier et dans les chaines de caratères passées

                        Warning: main(./Prenoms/Liste_Prenoms Fr.htm) [function.main]: failed to open stream: No such file or directory in /mnt/123/sdb/9/1/txiki/index.php on line 127
                        et ici
                        include $_SESSION[$page]['Location']." $lang.php";

                        include $_SESSION[$page]['Location']." $lang.htm";

                        1. Contributeur
                          Salut giheller,
                          Ben j'ai pas l'habitude de nommer des fichiers avec des espaces mais dans cette structure c'était comme ça alors ! Et ça fonctionne très bien pour les autres pages.
                          Comment il va faire la différence si je ne met pas d'espace ? (toto Fr.php et toto An.php).
                          La variable lang est le Fr qui est séparé du nom du fichier.
                          Quelle pourrait etre l'autre méthode alors ?

                          Je crois que le mieux, encore, est de reprendre tout depuis le début et que vous me commentiez les lignes ou j'ai merdé, l'essentiel est quand même que je comprenne ce que je fais.
                          Index:
                          <?php
                            // Start Session
                            session_start();
                            
                            // Envoi Cookies
                            //include "Php/Init Cookies.php";
                          ?>
                          <!DOCTYPE HTML *******
                          <head>
                          <?php
                              if (empty($page)) echo "<TITLE>Accueil - Abarka</TITLE>";
                              else echo "<TITLE>$page - Abarka</TITLE>";
                            ?>
                          <meta *****
                          <meta http-equiv="imagetoolbar" content="no" /><!-- Empeche IE de mettre une barre sur les images //-->
                          <link href=******
                          <script language=JavaScript src="Styles_Scripts/site.js" type="text/javascript"></script>
                          <script language=javascript src="Styles_Scripts/transmenu.js" type="text/javascript"></script>
                          <script language="javascript" src="/Styles_Scripts/g_img.js" type="text/javascript"></script>
                          <script language="javascript" src="Styles_Scripts/ts_files/scroll.js" type="text/javascript"></script>
                          <script language="javascript" src="Styles_Scripts/popup.js" type="text/javascript"></script>
                          <script language="JavaScript" type="text/JavaScript">
                          <!--
                          function MM_reloadPage(init) {  //reloads the window if Nav4 resized
                            if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
                              document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
                            else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
                          }
                          MM_reloadPage(true);
                          //-->
                          </script>
                          </head> 
                          
                          <?php
                          
                            if (empty($page))
                            {
                              $page="Accueil";
                              $lang="Fr";
                          
                              // Initialisation
                              include "Php/Init Session Table.php";
                              include "Php/Init Preload Images.php";
                          
                              echo "<BODY onLoad=\"preloadImages($banner)\">";
                          
                              // Initialisation Settings
                              //include "Php/Init Settings.php";
                          
                             }
                             else
                             {
                               echo "<BODY>";
                             }
                           ?>
                          
                          <div id="conteneur"><!-- le conteneur global du site sera centré //-->
                                 <!-- Début de la section header -->
                                 <div id="header">
                                   <?php
                                     include"Html Pages/Share/Header $lang.php"; 
                                   ?>
                                 </div>
                                 <!-- Fin de la section header -->
                          
                                 <!-- Début de l'image de la bannière -->
                          	<div id="bandeau">
                                     <IMG title="Abarka"  style="margin: 0px" width="730" height="164"
                                       <?php
                                         echo "src=\"".$_SESSION[$page]['Banner']."\"";
                                       ?>
                                     alt="Abarka"><br />
                          	</div>
                                 <!-- Fin de l'image de la bannière -->
                          
                                 <!-- Début de la section du menu dynamique -->
                                       <div id="menu">
                          			   <div id="wrap">
                                         <div>
                                           <?php
                                             include "Html Pages/Share/Menu $lang.php";
                                           ?>
                                         </div>
                                         <SCRIPT language=javascript>
                                           if (TransMenu.isSupported())
                                           {
                                             TransMenu.updateImgPath('Modules/TransMenu/');
                                             var ms = new TransMenuSet(TransMenu.direction.right, 0, 0, TransMenu.reference.topRight);
                                             TransMenu.subpad_x = 1;
                                             TransMenu.subpad_y = 0;
                          
                                             document.getElementById("menu01").onmouseover = function()
                                             {ms.hideCurrent();} 
                                             <?php
                                               echo "IncludeSubMenu$lang();"; 
                                             ?>
                           
                                             TransMenu.renderAll();
                                           }
                                           init1=function(){TransMenu.initialize();}
                                           if (window.attachEvent){window.attachEvent("onload", init1);}
                                           else {TransMenu.initialize();}
                                         </SCRIPT>
                                       </div>
                          			</div>
                                 <!-- Fin de la section du menu dynamique -->
                          
                                 <!-- Début du contenu principal -->
                          		<div id="frame">
                                       <?php
                          				if($page=="Liste_Prenoms") 
                          				{ 
                          				include $_SESSION[$page]['Location']." $lang.php"; 
                          				} 
                          				else 
                          				{ 
                          				include $_SESSION[$page]['Location']." $lang.htm"; 
                          				}   
                          			?>
                          		</div>
                                  <!-- Fin du contenu principal -->
                          
                          	<div id="footer">
                                  <!-- Début de la section footer (pied de page) -->
                               <?php
                                 include "Html Pages/Share/Footer $lang.php";
                               ?>
                          	</div>
                                   <!-- Fin de la section footer (pied de page) -->
                          
                          </div>
                          </body>
                          </html>


                          NOTE: dans la ligne en gras, je dois pouvoir lui indiquer trois pages en php (Liste_PrenomsF.php, Liste_PrenomsM.php et enfin Fiche_Prenom.php. J'ai essayé avec OR mais ça ne marche pas.
                          if(($page=="Liste_Prenoms") OR ($page=="Fiche_Prenom"))

                          Ça me semble pourtant correct non ? En fait il me faudrait:

                          if((($page=="Liste_PrenomsF") OR ($page=="Fiche_Prenom" OR ($page=="Liste_PrenomsM")))
                          Le bonheur est la seule chose que l'on peut donner sans l'avoir.

                          Je vous passerez ensuite, si nécessaire, le code de Liste_Prenoms!
                          1. Ok pour les espaces si on y tient pourquoi pas
                            mais la # totoFR.php et totoAn.htm elles est présente dans le nom du fichier.
                            je ne m'inquiétais des espaces que pour les passages des noms entre pgms.
                          2. Contributeur
                            @gihellerSalut giheller,
                            ? ? ?
                            J'ai rien compris !
                          3. @txikiles noms de fichiers totoFR.php ou toto FR.php ne différent que par l'espace.
                            si on fait référence au fichier avec un espace ey que son nom à un espace il n'y apas de souci.
                            le problème que je cherchais est de répondre à la question :
                            que se passe-t-il dans un include ? ou que se passe-t-il en passant un espace dans une chaine de caratères entre deux pgms.

                            mais le problème n'est peut être pas là.
                          4. Contributeur
                            @gihellerBonjour a tous, vous les patients avec moi et je vous en remercie infiniment.
                            Le fichier est appelé ainsi:
                            <a href="index.php?page=Liste_PrenomsF&lang=Fr"> (dans la page Intro_Prenoms) mais il faut aussi que le fichier Init Session Table.php qui se trouve dans le répertoire Php soit renseigné ainsi:
                            $_SESSION[Intro_Prenoms]['Banner']="./Modules/Banners/Livres.jpg";
                              $_SESSION[Intro_Prenoms]['Location']="./Prenoms/Intro_Prenoms";
                              $_SESSION[Fiche_Prenom]['Banner']="./Modules/Banners/Livres.jpg";
                              $_SESSION[Fiche_Prenom]['Location']="./Prenoms/Fiche_Prenom";
                              $_SESSION[Liste_PrenomsF]['Banner']="./Modules/Banners/Livres.jpg";
                              $_SESSION[Liste_PrenomsF]['Location']="./Prenoms/Liste_PrenomsF";


                            Le fichier se nomme: Liste_PrenomsF Fr.php (pour la liste des prénoms féminins).
                            Regarde ci-dessous, ce que m'affiche le navigateur dans la barre d'url:
                            http://txiki.free.fr/Fiche_Prenom?Prenom=Aberria%3E%3C/a%3E%3C/td%3E%3Ctd%20bgcolor=

                            J'ai supprimé une quote (quelqu'un m'avait dit de le mettre à cause d'un lien bizarre quand on passait la souris sur un prénom) mais le Pb c'est qu'en mettant cette quote, je n'avais plus de lien du tout dans la liste. c'est ici:
                            echo "<a href='Fiche_Prenom?Prenom=".$row['Prenom']."[']></a>";
                            . Si je met cette quote (entre crochets, je ne peux pas le mettre en gras) je n'ai plus de lien.

                            Bref, il ne me trouve pas la page de la fiche détaillée.
                            Et pourquoi je ne peux pas afficher les lettres de l'alphabet, également en lien comme ici:
                            https://www.euskaltzaindia.eus/index.php?option=com_ecoeoda&task=bilaketaPortada&Itemid=472&lang=eu/neskak.asp

                            On peut y accéder par le logo vert de chez eux que j'ai mis sur la page.
                            Aaaaah ! je bataille grave ! et je ne voudrais surtout pas m'y énerver dessus !
                        2. bsr

                          En fait il me faudrait:

                          if((($page=="Liste_PrenomsF") OR ($page=="Fiche_Prenom" OR ($page=="Liste_PrenomsM")))


                          En effet pourquoi faire simple quand on peut faire compliquer ? LOL

                          Nan le mieux c'est d'écrire (en supposant que lorsque tu écris ...index.php?page=nom_de_la_page nom_de_la_page renvoie à une page php)

                          		<div id="frame">
                                       <?php
                          if (empty($lang)) $lang="Fr";
                          				if(!empty($page)) 
                          				{ 
                          				include $_SESSION[$page]['Location']." $lang.php"; 
                          				} 
                          				else 
                          				{ 
                                                                                          $page="Accueil";
                          				include $_SESSION[$page]['Location']." $lang.htm"; 
                          				}   
                          			?>
                          		</div>


                          Et supprime $page="Accueil"; tout au début de ta page index.php
                          1. Contributeur
                            Merci php mais ton histoire ne fonctionne plus pour les autres pages.
                            En tous cas, plus rien ne marchait et pour cause ! j'avais un & au lieu de $ pour la la variable lang. Ca c'est moi tout chié! la syntaxe et moi, on n'est pas très copain.
                            Je ne sais plus qui m'avait suggéré de mettre une cote à cause de mon lien "bizarre" mais maintenant, j'ais bien la liste des 20 premiers prénoms mais sans lien pour accéder à sa fiche détaillée.
                            J'ai les boules, grave !!!!!!!!!!!!!!!

                            Merci aussi a l'autre, qui m'a suggéré les || au lieu des OR et mille excuses pour les parenthèses en trop, je ne suis pas très ordonné et c'est un gros handicap ! .

                            D'ailleurs, si quelqu'un veut toute la structure du site original, je pourrait la lui envoyer, zippée (il n'est pas très gros, quelques pages). C'est un cas d'école. Le type qui a pondu ça est un as, c'est lui qui a fait le simulateur de vol de l'A380, entre autre.

                            Je continue mes recherches ! malgré ma rage. J'y tiens beaucoup trop, à cette section du site. Le reste c'est du pipi de chat ! Qu'est-ce que je serais fier de moi si j'y arrivais !!!!!!!!!!!!

                            Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                          2. Contributeur
                            Salut php et encore merci pour ta patience,
                            Non, toutes les pages sont en htm sauf celles des prénoms (féminins et masculins) ainsi que Fiche_Prenom.

                            Donc ici
                            $page="Accueil";
                            il faudrait que je puisse en mettre trois possibles en php (Liste_PrenomsF.php, Liste_PrenomsM.php et Fiche_Prenom.php).

                            Je crois que je vais etre obligé d'ajouter un espace avec Fr alors que je m'en tape dans le cas présent, pour ces trois pages au moins !.
                          3. @txikiHum ouais je pensais que toutes tes pages étaient en PHP et possèdaient le postfixe Fr
                            Mais je vois que ce n'est pas le cas .

                            Et tu me donnes l'impression d'essayer des trucs au petit bonheur la chance en espèrant que ça va fonctionner T'Oh ! ;-) Je te le dis tout de suite cette méthode n'a aucune chance d'aboutir

                            Il faut mettre un peu d'ordre dans tout ca : apparemment tu as des pages avec l'extension .html, d'autres avec .php et certaines portent en plus l'indication de la langue en Fr ou autre. Et tu essais de tout cassé dans un seul paramètre : page C'est là que coince naturellement. Il va falloir normaliser les appels à ta page index.php

                          4. Contributeur
                            @PhPAh non, non,
                            Toutes les pages sont suffixées en .htm. Elles sont en double: l'une en Toto Fr.htm, la même en Toto Es.htm (pour la version espagnole par exemple) mais ce sont les même pages sauf que le contenu est écrit dans une autre langue.

                            Depuis, j'ai modifié ça en remplaçant le Header Fr.htm par Header Fr.php. Même chose pour le menu et le footer. L'appel de ces pages a aussi été modifié dans l'index au niveau des includes.

                            Jusqu'ici tout allait très bien !

                            C'est quand j'ai voulu intégrer des pages en php (à cause du code contenu dans ces pages) que ça a commencé a foirer. Et comme je le dis, il n'y en a que trois.

                            Hum ouais je pensais que toutes tes pages étaient en PHP et possèdaient le postfixe Fr

                            J'y ai pensé mais pourquoi suffixer ces pages en php si elles ne contiennent pas de code php ? (j'en ai plus de 900).
                            C'est quoi le postfixe ?

                            Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                        3. bon je n'ai pas regardé le code, ni même le problème, je regarderais ça en rentrant...
                          tout ce que j'ai vu :
                          if((($page=="Liste_PrenomsF") OR ($page=="Fiche_Prenom" OR ($page=="Liste_PrenomsM")))

                          te manques une paranthèses ferrmante au deuxieme OR...
                          Puis les 3 parentheses ouverture:fermetures ca sert a rien, 2 suffisent?

                          Sinon pour l'opérateur OR, perso je préfères mettre ||
                          me semble avoir déjà eu des problèmes avec OR... je la mettrais plutot comme ça :

                          if(($page=="Liste_PrenomsF") || ($page=="Fiche_Prenom") || ($page=="Liste_PrenomsM"))
                          {

                          }
                          1. bonsoir,

                            l'écriture :
                            <a href="index.php?page=Liste_PrenomsF&lang=Fr">

                            ne donne pas un nom de page contenant Liste_Prenoms FR
                            mais un mon de page = Liste_Prenoms

                            le lang=FR a pour effet de passer FR dans la variable $_GET['lang']

                            $a = "Liste_Prenoms".$lang.".php";
                            <a href="index.php?page=<?php echo $a; ?>">

                            fonctionnerait peut être
                            1. Contributeur
                              Salut giheller,
                              Oui, oui, ça je le sais. C'est le même principe pour toutes les pages du site. La variable lang est là pour, par exemple, si tu te trouve sur la page toto en français et que tu veux l'avoir dans une autre version, aller directement dans la page toto de l'autre langue sans repasser par l'accueil.

                              Excuse moi pour ce retard mais je viens de me lever (16h00) et là, je dois sortir 10 mn.
                              1. alors je ne cômprends pas le problème, je vais relire depuis le début

                                exemple ton premier message dit :
                                les autres sont comme la ligne en gras ci-dessus.
                                http://txiki.free.fr/index.php?page=Intro_prenoms&lang=Fr

                                J'ai pourtant bien
                                $id = $_GET["id"]; // La manipulation de $id est plus simple que celle de $_POST["id"]

                                et là tu ne passe aucune variable appelée id mais une qui s'appelle lang !!!

                                1. Contributeur
                                  http://txiki.free.fr/index.php?page=Intro_prenoms〈=Fr (simple page htm contenant un lien vers une page qui elle, contient du code php).
                                  Cette page est en htm, elle contient le lien vers Liste_PrenomsF Fr.php (contient le code php).

                                  $id = $_GET["id"]; // La manipulation de $id est plus simple que celle de $_POST["id"] ça c'est quand on clique sur un prénom pour avoir la fiche complète.

                                  J'ai un gros doute: la variable id contient bien tous les champs de cet id dans la table, non ?
                                  Voici la structure de la table (au cas où) !
                                  -- Structure de la table `prenomsfeminins`
                                  -- 
                                  
                                  DROP TABLE IF EXISTS `prenomsfeminins`;
                                  CREATE TABLE `prenomsfeminins` (
                                    `ID` int(11) NOT NULL auto_increment,
                                    `Lettre` char(1) character set latin1 collate latin1_general_ci NOT NULL default '',
                                    `Prenom` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '',
                                    `Origine` text character set latin1 collate latin1_general_ci NOT NULL,
                                    `Ephemeride` varchar(16) collate latin1_general_cs default NULL,
                                    `FrenchName` varchar(40) collate latin1_general_cs default NULL,
                                    PRIMARY KEY  (`ID`),
                                    UNIQUE KEY `Prenom` (`Prenom`)
                                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=1251 ;
                                  
                                  -- 
                                  -- Contenu de la table `prenomsfeminins`
                                  -- 
                                  
                                  INSERT INTO `prenomsfeminins` VALUES (1, 'A', 'Abantza', 'Invocation Marianne dans la localité de Barrón (Araba). Jusqu''au XIXe l''ermitage se trouvait situé au centre de ce village. Actuellement, en revanche, l''unique relique qui reste de la vierge (Andramari) du XVIIe est conservée dans l''église paroissiale. Elle est sortie le jour précédent la Saint Jean pour bénir les champs.', NULL, NULL);


                                  Tiens je croyais que j'étais en utf8 ! ! ? ? !!
                                  C'est un export en sql depuis PhpMyadmin. bref.

                                  Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                                  1. Bsr

                                    Après quelques réflexions voici comment je ferais pour résoudre ton problème de pages

                                    Ex index.php (page volontairement simplifiée pour l'exemple)

                                    <?php
                                    // Démarre la session
                                    session_start();
                                    
                                    // Paramètrage : correspond à ton include "Php/Init Session Table.php"
                                    
                                    // La page d'accueil est une page html. Elle est multilingue : la séquence %s sera remplacée par $lang
                                    $_SESSION["Accueil"]["Location"]="accueil%s.htm";
                                    
                                    // La page Fiche Prénom est une page php. Elle est multilingue : la séquence %s sera remplacée par $lang
                                    $_SESSION["Fiche_Prenom"]["Location"]="Fiche_Prenom%s.php";
                                    
                                    // La page d'erreur est une page php. Elle n'est PAS multilingue : il n'y pas de séquence %s 
                                    $_SESSION["Erreur"]["Location"]="erreur.php";
                                    
                                    
                                    
                                    
                                    // On récupère la valeur du paramètre lang 
                                    // Si la paramètre n'a pas été renseigné dans l'url alors $lang vaut par défaut "Fr"
                                    $lang=(!empty($_GET["lang"])) ? $_GET["lang"] : "Fr";
                                    
                                    // On récupère la valeur du paramètre page
                                    // Si la page n'est pas renseignée on utilise par défaut "Accueil"
                                    $page=(!empty($_GET["page"])) ? $_GET["page"] : "Accueil";
                                    
                                    // Retourne le nom l'url à inclure ou celui de la page d'erreur si la page n'a pas été définie dans le paramétrage
                                    function getLocation($page,$lang)
                                    {
                                    	$page = (isset($_SESSION[$page])) ? $page : "Erreur";
                                    	if (!empty($lang)) $lang=" ".$lang;
                                    	// Remplace éventuellement la séquence %s par la langue (seulement si la séquence %s a été explicitement définie dans le paramétrage)
                                    	return sprintf($_SESSION[$page]["Location"],$lang);
                                    }
                                    ?>
                                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                                    	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                                    <html  xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> 
                                    <head> 
                                        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
                                    <title>Index</title>
                                    <style>
                                    *
                                    {
                                    	font-family : arial;
                                    	font-size : 12pt;
                                    }
                                    </style>
                                    </head>
                                    <body>
                                    <div>
                                    <?php
                                    include(getLocation($page,$lang));
                                    ?>
                                    </div>
                                    </body>
                                    </html>


                                    Utiliser le tableau $_SESSION n'a pas vraiment d'intérêt mais bon puisque c'est déjà comme ça je l'ai conservé

                                    Ici toute l'astuce réside dans le paramétrage et la fonction getLocation()
                                    Tu noteras que dans le paramètrage j'indique clairement si la page est une page html ou php dans chaque variable Location. De plus il suffit dj'ajouter la séquence %s juste avant l'extension pour faire en sorte que la page tienne compte du langage

                                    J'utilise également une page erreur.php qui contient
                                    Erreur : aucune page définie pour [page="<?php echo $page;?>"] et [lang="<?php echo $lang;?>"]


                                    Il te reste donc à adapter ta page index.php
                                    A modifier le paramètrage dans ta page Init Session Table.php
                                    et à remplacer tes includes par include(getLocation($page,$lang));
                                    1. Contributeur
                                      Salut php,
                                      ouh la la !

                                      Déjà je vais essayer de comprendre ton système. Mais là, ça devient compliqué pour moi. Boudiou !

                                      Pourquoi tu utiliserai une page Erreur ? Et surtout que doit-elle contenir ?

                                      Autre question con: que représente %s j'ai jamais vu ça moi !

                                      Je vais réfléchir pour comprendre ce que tu essaie de me dire. et décoder ces lignes.

                                      Merci infiniment en tous cas pour ta patience (ainsi qu'aux autres évidemment) !

                                      Le bonheur est la seule chose que l'on peut donner sans l'avoir.
                                  • 1
                                  • 2