Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 15/01/2008, 12h39   #1
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Par défaut [POO] énigme au niveau des inclusions

Hello !
je sais manipuler les include depuis longtemps.
J'ai un soucis particulier :
Vu que j'utilise beaucoup de dossiers dans le site, pour me simplifier la navigation j'ai collé une variable $url dans une session qui retourne l'url racine du site.
Pour mes css si je passe
Citation:
href="<?php echo $url.'CSS/_main.css'; ?>"
ça marche au poil !( CSS étant le nom du dossier qui contient mes css.

Génial, je me dis, j'en fait autant pour include !
Citation:
<?php include $url.'fonctions/fonctions_main.php'; ?>
Aucun message d'erreur, OK !
Plus bas j'appelle une fonction contenue dans le fichier fonctions_main.php
Citation:
<?php
function br()
{ echo'<br>'; }
appelée ainsi : <?php br(); ?>
C'est simple ! !
Ben erreur Call to undefined function !
Je pige pas !
Si je fais un echo du contenu de include (je suis en local)
j'affiche
127.0.0.1/intermediaire_z/fonctions/fonctions_main.php
(j'ai volontairement viré le http:// pour éviter de créer un lien dans le post)
Pour l'instant je démarre le site, je suis sur index.php

Pourquoi ça ne veut pas marcher ??

Merci
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h31   #2
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Salut
peut etre que l'include de fichier distant est desactivé ?
sinon tu peux également déclarer une variable chemin qui contient le chemin physique et tu utilise cette variable pour l'inclusion.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h48   #3
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Merci !
l'include de fichier distant est desactivé ?
Je ne pense pas, j'ai la même chose sur le serveur.
Je vais bien trouver une astuce.
En fait mon problème : je gère mal la navigation !
Si je suis dans le dossier 1
je ne sais pas aller dans le dossier 2
ni retourner à la racine !
Pourtant j'ai des heures de vol, mais je n'ai pas eu l'occasion d'utiliser.

Quelle serait la bonne fonction pour recupérer l'url complète de la racine
genre monsite.fr/index.php
Je la mets en variable session.
C'est à cause du travail en local et les verif sur serveur => ce sera automatique !

Au fait, comment faire :
je suis dans le dossier 1
mes CSS sont dans le dossier 2
Comment appeler ma CSS ???

Je refais un site assez copieux où tout est en vrac dans la racine (sauf images, swf.... en dossier).

Le site va faire au moins 40 fichiers ! !
Si je ne ventile pas en dossiers, c'est la pagaille.
=> gestion immobilières, les annonces sont sur Mysql.
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h11   #4
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
personnellement, quand je suis dans ton cas, je définis une variable pour la localisation des CSS, des images, des fichiers JS.
Et pour mes fichiers je redéfinis le include_path dans ma fonction init.
comme ca, je fais un include est cela est geré tout seul.

Apres pour récupérer l'emplacer j'utiliser $_SERVER. Comme ca, je n'ai pas besoin de saisir manuellement l'url du site.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h15   #5
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Sorry, là je patauge ! (fatigué !)
Tu peux me fournir un exemple développé ?
Je passe des heures sur Google, je n'en peux plus !
Ce serait super sympa de me faire gagner 3 heures de recherche !
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h28   #6
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
La j'ai pas le code.
Mais de tetes je dirais :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<?php
 
 
var_dump($_SERVER);
$url_de_base = "http://" . $_SERVER['SERVER_NAME'] . "/";
define ("URL_CSS",$url_de_base . "CSS/");
define ("URL_IMG",$url_de_base . "public/IMAGES/fr/");
 
 
// appelle d'une image
?>
<img src="<?php echo URL_IMG?>titi.jpg" />
 
<?
define ("SEPARATOR",":"); // : pour unix ; pour windows
$chemin_de_base = $_SERVER['DOCUMENT_ROOT'];
 
ini_set('include_path',ini_get('include_path').SEPARATOR
. $chemin_de_base . "module1" . SEPARATOR
. $chemin_de_base . "module2"
);  
 
 
include ("mon_fichier.php"); //
?>
enfin voici dans les grandes lignes.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h33   #7
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
MERCI ! !

Je teste et je reviens !
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 15h47   #8
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Usine à gaz !
J'avoue que mes connaissances...

Concrètement
chemin css = CSS/_main.css
chemin fonctions = fonctions/fonctions.php

J'abuse (tu peux me jeter je comprendrai !)
script pour appeler ma feuille de style (dans n'importe quel dossier) ?
script pour include fonstions.php (dans n'importe quel dossier) ?

Après, je ferme le PC pour 3 jours !
Je suis sur ce truc depuis hier soir (avec 4H de sommeil ! !)
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 16h29   #9
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Bah
dans mon application, je faisais toujours l'inclusion d'un fichier de configuration. Donc c'est ce fichier qui gérer ca. Donc oui, ces modifications étaient accessibles dans toute l'application.

Code :
1
2
3
4
 
Concrètement
chemin css = CSS/_main.css
chemin fonctions = fonctions/fonctions.php
oui c'est comme ca, sauf que pour le css tu dois rajouter
Code :
1
2
3
 
<link rel="stylesheet" type="text/css" media="screen"
             href="<?php echo CSS;?>_main.css" />
Citation:
Usine à gaz !
J'avoue que mes connaissances...
C'est ma solution que tu trouves lourdes ou c'est ton application ?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 16h51   #10
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Mon application tourne déjà, mais c'est le foutoir !
Le client ne savait pas où il allait, pas de cahier des charges !
j'ai donc fait des modifs au fur et à mesure.
Le site fonctionne, mais je ne veux pas garder un tel script
Bonjour les modifs à venir la dedans...
pour info la maquette est là => intermediaire.info/1

Je ne critique pas ton script ! !
Je ne le comprends pas, mes connaissances en PHP sont limitées.
Je n'utilise que des choses simples, pas le temps de bosser plus loin dans l'immédiat.
Autodidacte (54 ans !)

Ton script me retourne au moins 30 lignes d'erreur.
Ce que viens de m'indiquer ne marchera pas si je suis dans un dossier, je pense.
Vais essayer...

Tu peux laisser tomber, je vais décrocher, je suis à plat.
Merci de ta patience.

J'ai une roue de secours pour bosser en local et sur serveur
if $ip= 127.0.0.1 => j'applique une url
else URL du serveur.

Merci encore, je ne ferme pas le post (j'ai une alerte mail)

Rappel pour être clair :
ce que je veux faire, c'est simplifier la navigation et pouvoir accéder à mes feuilles css contenues dans le dossier CSS à dans n'importe quel fichier
Idem pour inclure des fonctions (dans le dossier "fonction")
dans n'importe quel dossier.
exemple le fichier index dans le dossier admin. (ccs et fonctions ? ?)

Je compte utiliser une variable de session pour passer l'url racine.
J'ai réussi pour l'appel css, pas pour include !

Merci encore

Ma devise :
quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins de ce que l'on croit savoir !
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 17h08   #11
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
ok, bon les erreurs je pense que c'est normal vu que j'ai écrit le script de tête. Mais sinon je vais essayer de donner l'exemple un peu plus détaillé.

Donc j'ai un fichier conf.php, il est situé à la racine (par exemple).
le fichier est à peu pres celui-ci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<?php
 
session_start(); // comme ca pas besoin de le faire ailleurs
 
//définition des variables pour les css et les images
$url_de_base = "http://" . $_SERVER['SERVER_NAME'] . "/";
define ("URL_CSS",$url_de_base . "CSS/");
define ("URL_IMG",$url_de_base . "public/IMAGES/fr/");
 
// definition du chemin pour les includes
define ("SEPARATOR",":"); // : pour unix ; pour windows
$chemin_de_base = $_SERVER['DOCUMENT_ROOT'];
 
// include_path défini les chemins ou apache/php va chercher tes scripts
// en supposant que ton application soit structuré en 
// deux dossiers modules et classes tu as le code suivant
ini_set('include_path',ini_get('include_path').SEPARATOR
. $chemin_de_base . "modules" . SEPARATOR
. $chemin_de_base . "classes"
);  
 
// apres tu définir ici tes élements de connexions a la bd ou autres
 
?>
Ce fichier est à inclure au début de chacune de tes pages.
Apres dans un fichier qui serait situé dans modules/test tu pourrais avoir le fichier suivant
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<?php
// surtout pas d'espace avant la ligne d'au dessus pour faire fonctionner le session_start
include("../../conf.php"); // pour insérer le fichier précédent
?>
<html>
<head>
	<title>ma page de test</title>
	<!-- pour insérer le fichier css -->
	<link rel="stylesheet" type="text/css" media="screen" href="<?php echo URL_CSS;?>_main.css" />
 
 
</head>
<body>
	<?php
	include("ma_class_test.php"); // disons que la classe est dans le dossiers class
	$maclasse = new test();
	echo $maclasse->toString();
 
	include("mes_fonctions_mails.php");
	if (verifie_mail(aaa@aaa.com)) { echo "ok";}
	else { echo "raté;"}
	?>
	affichons une image
	<img src="<?php echo URL_IMG;?>mon_image.png" alt="mon image"/>
</body>
</html>
en espérant que cela t'aide un peu plus.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 17h18   #12
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Quelle patience et quelles compétences !

disons que la classe est dans le dossiers class
quelle classe ?
Je me sens de plus en plus nul !
Après je recopie, j'étudierai plus tard, je ne vois plus clair !
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 17h30   #13
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
bah en fait vu que je ne connais pas la structure de ton projet, j'en ai juste proposée une pour l'exemple. Je parlais de classes, au cas ou tu aurais utilisé de la POO dans le projet.
Si tu as juste des fichiers de fonctions ignore ce morceau et interesse toi plus a la suite.

Code :
1
2
3
4
 
include("ma_class_test.php"); // disons que la classe est dans le dossiers class
$maclasse = new test();
echo $maclasse->toString();
Apres les compétences ca vient tout seul, je me suis formé aussi sur le tas, mais il y a trois ans.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 17h42   #14
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Vraiment trop cool !

Index.php (racine)
------- Dossier CSS => contient style.css
------- Dossier fonctions=> contient fonctions php

--------Dossier Admin => contient admin.php

Dans admin.php je veux style css dans le HEAD et include fonctions.php.
Sans me taper des chemins relatifs !

Je testerai plus tard ! !

Ce forum est géant !
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 17h52   #15
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Donc a priori tu peux faire

conf.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<?php
session_start(); // comme ca pas besoin de le faire ailleurs
 
//définition des variables pour les css et les images
$url_de_base = "http://" . $_SERVER['SERVER_NAME'] . "/";
define ("URL_CSS",$url_de_base . "CSS/");
define ("URL_IMG",$url_de_base . "public/IMAGES/fr/");
 
// definition du chemin pour les includes
define ("SEPARATOR",":"); // : pour unix ; pour windows
$chemin_de_base = $_SERVER['DOCUMENT_ROOT'];
 
// include_path défini les chemins ou apache/php va chercher tes scripts
// en supposant que ton application soit structuré en
// deux dossiers modules et classes tu as le code suivant
ini_set('include_path',ini_get('include_path').SEPARATOR
. $chemin_de_base . "modules" . SEPARATOR
. $chemin_de_base . "classes"
);
include ("fonctions/fonctions.php");
?>
<html>
<head>
	<title>mon appli</title>
	<!-- pour insérer le fichier css -->
	<link rel="stylesheet" type="text/css" media="screen" href="<?php echo URL_CSS;?>style.css" />
et admin.php
Code :
1
2
3
4
5
6
7
8
 
<?php
include("../conf.php"); // pour insérer le fichier précédent
?>
 
le reste ici
</body>
</html>
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 04h00   #16
Membre régulier
 
Inscription : octobre 2006
Messages : 324
Détails du profil
Informations personnelles :
Âge : 59
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2006
Messages : 324
Points : 70
Points : 70
Réponse tardive, fallait décrocher !
Je voudrais te rendre hommage :
Ta patience est exemplaire, je ne trouve ce genre d'écoute que sur ce forum, les autres ont vite fait de te jeter !
Tu m'as mis face à mes manques : dès que j'ai un peu de temps je me remets à potasser les fonctions avancées. Tu m'en a donné l'envie !

Finalement, j'ai potassé les chemins relatifs, et ça suffira en attendant des compétences plus appronfondies.
Je me refuse à utiliser des script que je ne maitrise pas totalement !
Je ne suis pas pour les solutions de facilité...

So long man
Merci

Dan
tremeur53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 09h56   #17
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Il n'y a pas de problèmes.
Si tu prefere utiliser ta propre solution, ce n'est pas plus mal. C'est comme ca que l'on progresse.

Bon courage pour la suite.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel 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 07h58.


 
 
 
 
Partenaires

Hébergement Web