Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/07/2011, 21h38   #1
Candidat au titre de Membre du Club
 
Homme
Développeur multimédia
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur multimédia
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 12
Points : 12
Par défaut Problème sur la fonction include

Bonjour chères développeurs, je suis en train de développer un site web dynamique, et qui dit dynamique dit aussi la génération automatique du contenue de la page.

Bref, j'ai une page d'accueil contenant une barre de navigation ( générée avec du php ) et j'ai une <div> centrale qui va contenir le texte associé à chaque page.

Lorsque je clique sur une rubrique de la barre de navigation, le lien de la rubrique fait appel à une autre page appelée "articles.php" avec une variable id comme identifiant de la page à afficher, l'astuce c'est que j'utilise la div pour afficher le contenue de la page "articles.php",

code de la barre de navigation :
Code :
1
2
3
4
5
6
<?php
$rub0=mysql_query("select * from rubrique0");
  while($rubrique0=mysql_fetch_array($rub0)){
      echo '<li><a href="index.php?id='.$rubrique0['id0'].'"> '.$rubrique0['nom'].' </a>';
}
?>
code de la div de la page accueil.php:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<div id="maincolumn">												  
 <?php 
    $src="articles.php";
      if(isset($_GET['id']))
	$src='articles.php?id='.$_GET['id'];
 
      else if(isset($_GET['id1']))
        $src='articles.php?id1='.$_GET['id1'];
 
      include($src); 
?>
</div>
Les liens, les nom des rubriques et les valeurs des gets tout est nikel, sauf la ligne de l'include "include($src);" me renvoie la div avec les erreurs suivantes :
------------------------------
Warning: include("articles.php?id=1") [function.include]: failed to open stream: No error in C:\wamp\www\intellia\front_beta\index.php on line 96

Warning: include() [function.include]: Failed opening '"articles.php?id=1"' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\intellia\front_beta\index.php on line 96
---------------------------------
sachant que include('articles.php?id=1'); ça marche mais lorsque je la remplace par la variable $src qui est varier en fonction du clique, ça n'a pas marché...

pardon moi pour la langueur du sujet , mais je me suis bloqué ici ...

en attente de votre aide et merci d'avance ....
eo-soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 22h18   #2
Nouveau Membre du Club
 
Homme Yann Vangampelaere
Développeur Web
Inscription : juillet 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Yann Vangampelaere
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2011
Messages : 30
Points : 37
Points : 37
Tu as essayer avec un chemin absolue ?
BByani est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/07/2011, 22h36   #3
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Ca ne fonctionne pas parce qu'on ne peut pas passer de paramètres get dans un include().

Fais tout simplement :

Code :
1
2
3
4
5
<div id="maincolumn">
<?php
 include('articles.php');
?>
</div>
Et tu traite l'affichage conditionnel dans le fichier articles.php en fonction de $_GET['id'] et $_GET['id1'] :

Code :
1
2
3
4
5
6
7
8
<?php if(isset($_GET['id']))
{
 echo(.........); 
}
else if(isset($_GET['id1']))
{
echo(.........); 
}?>
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 22h58   #4
Candidat au titre de Membre du Club
 
Homme
Développeur multimédia
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur multimédia
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 12
Points : 12
Citation:
Envoyé par philodido Voir le message
Ca ne fonctionne pas parce qu'on ne peut pas passer de paramètres dans un include().

Fait tout simplement :

Code :
include('articles.php');
Et tu traite l'affichage conditionnel dans le fichier articles.php en fonction de $_GET['id'] et $_GET['id1'].
-------------
Merci pour la solution ca marche nikel !

Mais juste pour le passage de paramètres dans l'include je me suis basé sur un cours trouvé sur un autre site.

Juste pour l'infos j'ai aussi trouvé une solution équivalente on utilisant les iframes, mais le problème de ces dernières c'est que ça leurs tailles (langueur) n'ai pas adapté en fonction de son contenue, mais c'est peut réglé via une fonction javascript appelé à chaque onload de la page :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<script language="javascript1.4">
 
function calcHeight()//Fonction pour adapter le hauteur de l'iframe à son contenue
{
  //récupère la hauteur de la page
  var the_height=document.getElementById('iframe_article').contentWindow.document.body.scrollHeight;
  //change la hauteur de l'iframe
  document.getElementById('iframe_article').height=the_height;
}
</script>
 
<?php 
	$src="articles.php";
		if(isset($_GET['id'])){
	     	 $src='articles.php?id='.$_GET['id'];
	 			}
		else if(isset($_GET['id1'])){
		  $src='articles.php?id1='.$_GET['id1'];
			}					
?>						
<iframe onresize=reSize() id=iframe_article width="100%" height="1" name="iframe_article" src="<?php echo $src;?>" scrolling="no" frameborder="1">
</iframe>
Et je vous remercie une autre fois pour votre aide...
eo-soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 23h00   #5
Candidat au titre de Membre du Club
 
Homme
Développeur multimédia
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur multimédia
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 12
Points : 12
Citation:
Envoyé par BByani Voir le message
Tu as essayer avec un chemin absolue ?
pas besoin d'un lien absolue puisque touts les fichiers se trouvent dans le même répertoire. Merci comme même
eo-soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 23h10   #6
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par eo-soft Voir le message
Mais juste pour le passage de paramètres dans l'include je me suis basé sur un cours trouvé sur un autre site.[/url]
Si tu regarde bien, il ne passe pas de paramètres get par la fonction include().

Pour les Iframes je vois pas trop l'utilité dans ton cas en plus tu vas ralentir inutilement ta page avec un js. Fais le tout simplement comme tu voulais au départ puisque maintenant ça marche nickel .
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 23h24   #7
Candidat au titre de Membre du Club
 
Homme
Développeur multimédia
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur multimédia
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 12
Points : 12
Citation:
Envoyé par philodido Voir le message
Si tu regarde bien, il ne passe pas de paramètres get par la fonction include().

Pour les Iframes je vois pas trop l'utilité dans ton cas en plus tu vas ralentir inutilement ta page avec un js. Fais le tout simplement comme tu voulais au départ puisque maintenant ça marche nickel .
Pour les paramètres, moi aussi je ne passe pas des get par le fonction include() mais plutôt une chaîne de caractères contenant le lien + la valeur id (le tout comme chaîne de caractères), mais bon comme t'as déjà mentionné les iframes c'est dépassé et le js ralentie la page, alors je fait appel à ta solution , c'est plus optimiser chapeau man
eo-soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 23h42   #8
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Tu passe effectivement bien une chaine de caractères dans la fonction include(). Mais c'est justement là le problème : la fonction interprète cette chaine comme étant un lien sans paramètre get (l'id, dans ton cas), du coup si tu lui envoi lien + id alors quelle s'attend juste à un lien, elle ne comprend plus rien, et le serveur te renvoi le message que tu avais au début : [function.include]: failed to open stream = La fonction include n'a pas réussit à ouvrir le flux.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h34.


 
 
 
 
Partenaires

Hébergement Web