Pb de transmission de variable ? [PHP]

Résolu/Fermé
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 23 août 2008 à 21:10
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 30 août 2008 à 19:03
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.

27 réponses

txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
28 août 2008 à 16:54
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
Utilisateur anonyme
28 août 2008 à 18:23
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.
-1
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515 > Utilisateur anonyme
28 août 2008 à 18:33
Salut giheller,
? ? ?
J'ai rien compris !
-1
Utilisateur anonyme > txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
28 août 2008 à 19:11
les 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à.
-1
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515 > Utilisateur anonyme
28 août 2008 à 19:42
Bonjour 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 !
-1
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
28 août 2008 à 17:21
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
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
28 août 2008 à 18:10
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.
-1
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
28 août 2008 à 18:46
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 !.
-1
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606 > txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
28 août 2008 à 21:10
Hum 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



-1
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515 > PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009
28 août 2008 à 22:40
Ah 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.
-1
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
28 août 2008 à 17:28
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
Utilisateur anonyme
29 août 2008 à 16:40
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
29 août 2008 à 16:55
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
Utilisateur anonyme
29 août 2008 à 17:07
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
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
29 août 2008 à 19:05
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