|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
Salut,
Ça fait bien 1 h que je fouille sur les forums pour essayer de trouver une discussion me permettant de régler mon problème mais je ne trouve rien. J'espère que vous pourrez m'aider. Je suis débutante en php et j'ai un souci avec des include multiples sur ma page php....je m'explique J'utilise une galerie php (sans base de données) que j'ai trouvé sur internet et adapté à mon site. Comme j'ai plusieurs pages et plusieurs séries de photos à présenter, j'ai créé plusieurs galeries. (par contre, les fichiers js et css sont communs à toutes mes galeries ainsi que mon gallery_include.php) Généralement, je n'utilise qu'une galerie par page et tout fonctionne correctement. Mon problème se présente lorsque je tente de refaire un include pour insérer une seconde galerie dans la même page! Du coup, mes images d'arrière-plan qui défilaient disparaissent et la seconde galerie ne s'affiche même pas! Lorsque j'ouvre la page source sur internet ça m'écrit ça Citation:
Pour être plus claire voici mes pages Celle qui fonctionne (1 seul include) http://www.yanpigeon.com/yan4/airbrush.php Celle qui ne fonctionne plus (2 includes) http://www.yanpigeon.com/yan4/airbrush2.php Que puis-je faire? J'ai testé avec un include_once à la place d'un simple include mais ça n'a pas marché. Je suis réellement dépassée et j'espère qu'un de vous pourra m'aider rapidement. Merci d'avance Lorraine |
|
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 89 ![]() |
Salut,
à vrai dire... comme ça, pas évident de te filer un coup de main. L'include peut etre utiliser de plusieurs façon, dans différents objectifs, là apparemment tu inclus un fichier de définition de fonction. essai de mettre tout en include_once il faudrait nous en montrer un peu plus, tout dépend de comment tu construit ta/tes page(s) . tu pourrait aussi créer un fichier d'entête qui s'occuperait d'inclure toute ta librairie de fonctions php. Et dans les différentes pages de ta navigation (si tu as différents fichiers php pour tes différentes pages!) tu inclus ce fichier d'entête comme ça tu est sur que l'ensemble n'est inclus une seule foi lors de l'appel d'un de tes fichiers. quelques petits bout de code, la structure de ton site pourrait nous aider à y voir plus clair! |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
mmm mon code est long mais je crois que je vais le mettre au complet (en espérant que vous n'allez pas me détester
Code :
Est-ce que le problème pourrait être causé par le fait que mes 2 galeries utilisent des fichiers js et php communs? Pourtant sur mes autres pages ça s'affiche bien! merci |
||
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 89 ![]() |
en première lecture rapide, changer les include en include_once dans cette page ne résoudra pas le pb si dans les pages que t'inclus ligne 188 (gallery_airbrush_caro.php) et ligne 202 (gallery_airbrush_mur.php) tu as surement des include simple sur les mêmes librairies php.
tu as compris l'idée de l'include, grossièrement cette fonction php te permet d'inclure un fichier dans un autre. tu peux avoir des fichiers php dans lesquels tu ne fait que définir des fonctions, c'est ce qui doit être fait dans les fichiers gallery. quand tu inclus ces fichiers tu rend accessible dans ton code ces fonctions mais tu ne dois le faire qu'une seule foi. essai de changer les include de ces deux fichiers en include_once pour voir si cela change la donne! |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
(au passage : utilise les balises code, le # au dessus de la zone de texte, cela rendra les posts plus lisible)
Excuse-moi, je veux bien le faire mais je ne comprends pas ce que tu veux dire par là...et pardon si un modérateur me lit ![]() J'ai ouvert mes 2 fichiers php (gallery_airbrush_caro.php et gallery_airbrush_mur.php) et je n'ai aucun include à l'intérieur. Ces 2 fichiers appellent bien des fonctions pour la création de ma galerie et des miniatures. Le tout est en javascript. J'imagine qu'en javascrip un include ne s'écrit pas de la même façon qu'en php. Est-ce possible? Quand aux includes de ma page airbrush2.php je les ai changé pour des include_once dans les 2 cas et cela n'a rien changé malheureusement. À part le fait que ça a brisé ma page au niveau du fond ...comme ici http://www.yanpigeon.com/yan4/airbrush2.php |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
est-ce que ça pourrait avoir un lien avec ceci?
<div id="div_content"> Dans les 2 galeries, le $div_content est nommé pareil. |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 89 ![]() |
aucun problème pour les balises code, c'était juste pour info (en fait quand tu clique sur le dièse ça va insérer deux balise dans ton texte [code [/code, elle s'utilise comme le html : il suffit juste de mettre le code entre les deux balises)
en effet, les id doivent être unique dans l'ensemble généré, tu peux avoir plusieurs class nommées de façon identiques mais tu ne peux avoir deux balises portant le même id sans engendrer des erreurs de traitement. il y a pas mal de javascript utilisé, avoir deux div avec le même id peut engendrer quelques désagréments! les id sont utilisés par le javascript pour faire différents traitement sur la page côté client (entre autres, ils sont également utilisé pour la css : le style de ta page mais ne nous dispersons pas!). les include sont utilisé par le moteur php côté serveur. les deux n'interviennent pas au même moment et ne sont pas interprété par le même acteur. php est interprété par le serveur et va être utilisé afin de générer la page qui sera envoyé au navigateur. la page contiendra le javascript/css qui sera interprété par le navigateur. je crois que j'ai trouvé la librairie que t'utilise, je jetterais un coup d'oeil demain sur la façon de l'utiliser pour en savoir un peu plus |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
C'est super gentil
merci ça me perd un peu toutes ses balises! J'imagine que je n'ai qu'a changer son nom et ça devrait régler mon problème mais je ne sais pas trop laquelle changer sans tout détruire. |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Salut
Citation:
L'inconvénient, c'est si cette fonction build_gallery() est strictement identique, ça va te faire 2 fonctions identique inutilement, donc des traitements supplémentaires (et une maintenance de code en plus). Donc observe d'abord si cette fonction build_gallery() (et uniquement la fonction) qui se trouve dans ces 2 fichiers est strictement identique ou pas. -> Si les codes sont différents, alors les nommer autrement sera obligatoire. -> Si les codes sont vraiment identiques, le mieux serait de sortir cette fonction, de l'enlever au niveau des 2 fichiers. Ensuite et si tel est le cas, il y a au moins 2 solutions : - Soit créer un nouveau fichier (genre build_gallery.php) et y mettre cette fonction commune, puis dans ta page l'inclure 1 seule fois. - Ou alors, peut être as tu déjà un fichier rassemblant des fonctions exploitées par ton application et qui serait systématiquement inclus (une librairie de fonctions en faite), y placer/rajouter cette fonction dans ce fichiers peut être plus simple. Fait un petit point la dessus.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#10 | ||||||||||||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 89 ![]() |
Bonjour,
je vais dans le sens de RunCodePhp(), centralise tes fonctions dans un (ou plusieurs) fichiers php cela te simplifiera la lecture quand tu repassera sur ton code par la suite. Le premier point à régler est de se débarrasser de ce problème de déclaration de fonction. Après, je suppose que dans ta fonction build_gallery() tu construit dynamiquement l'affichage de la galerie photos a afficher. Par contre en ce qui concerne l'utilisation de la librairie, je pense que j'ai trouvé la bonne : jbgallery, sur son principe d'utilisation, j'ai mis un peu la tête dans le code qu'il a fournis avec les sources. la page est découpé en plusieurs morceaux, comme tu l'as déja compris vu que tu as adapté en conséquence les différentes parties ![]() Chaque <div id=""></div> définis le contenu d'une zone de ta page, par exemple : Code :
En ce qui concerne les galeries : tu as compris que l'affichage dans la zone à droite était définis par : Code :
Code :
pour l'affichage d'une galerie : c'est un peu plus complexe car il y a le côté dynamique en plus (le fond de page qui change automatiquement), c'est composé de deux parties. la première : la structure/composition de la galerie telle qu'elle est affichée dans la zone de droite (ici on est dans une zone <div id="docs"><div class="cnt" id="blabla1"> <div class="wrapper">) c'est composé de cette façon : Code :
elle est composé de cette façon : Code :
voila pour l'explication du fonctionnement de cette librairie. maintenant si j'ai bien compris ce qui tu voulais faire : tu aimerais avoir une fonction php qui te renvoi dynamiquement une galerie a afficher? ce que devra te renvoyer ta fonction est un bloc : Code :
tu définira le contenu et le comportement de la fonction dans un fichier particulier ( maLirairieFonctionPerso.php, par exemple). dans ta page qui sera appelé, à un endroit de ton code tu l'inclus une seule fois : include_once('root/chemin/maLirairieFonctionPerso.php'); et ensuite quand tu veux insérer dans ta page une galerie particulière tu appele ta fonction : fonctionGalerie(1); si tu veux insérer une autre galerie, tu fais un autre appel : fonctionGalerie(2); etc... chaque appel à ta fonction renverra le bout de code vu précédemment. après, ce que contiendra la fonction et le traitement à réaliser, difficile d'aller plus loin mais cela ouvre beaucoup de perspective, on peut facilement imager une petite base de données derrière qui te permet de gérer la composition des différentes galeries. avec ajout d'une interface d'administration qui te permet d'organiser l'ensemble (ça y est je suis déja partit dans un délire! ) cette librairie est intéressante et donne envie de faire mumuse avec ! il y a un potentiel intéressant. Après, tout le jeu consiste à composer la page dynamiquement en fonction de l'action de l'utilisateur (ce qui n'est pas forcément si évident quand on démarre avec une page qui intègre beaucoup de dynamique et mélange plusieurs langage!) J'espère que j'ai pu t'être utile! si j'ai pas été clair sur certains points (je m'en excuse) n'hésite pas à poser des questions! |
||||||||||||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
haha je n'en espérais pas tant
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 7 ![]() |
Alors, suite à vos conseils voici ce que j'ai trouvé.
--------------------- @RunCodePhp En effet, les 2 fichiers (gallery_airbrush_caro.php et gallery_airbrush_mur.php) sont absolument identiques! Tout simplement pcq j'ai dupliqué l'original et que j'ai changé leurs noms afin qu'ils pointent vers les différents dossiers contenant mes photos. C'est clair que le bug se situe là comme tu l'as dit! En gros voici la structure du fichier 1- déclarations des variables avec pointage vers les dossiers des photos et des miniatures qui doivent être affichées. Ensuite on tombe directement dans la fonction build_gallery mais cette fonction englobe toutes les autres fonctions (création de la structure de la galerie - affichage du menu - création des miniatures). dans mon fichier airbrush2.php le id de mon div appelant ma galerie s'appelle div_content dans mon fichier de la galerie (celui appelé dans mon inclusion) il y a une variable appelée $div_content Est-ce que ça a un lien? --------------------- @Djef-69 En effet, j'utilise bien jbgallery pour l'affichage des images de fond qui apparaissent. J'ai trouvé cette galerie ici ----> http://maxb.net/scripts/jbgallery/ par contre pour l'affichage de ma galerie de photos je l'ai trouvé ici http://galeriephp.free.fr/# Au début, quand j'ai créé ma page, rien ne fonctionnait. Le problème a été réglé en mettant à jour les différents modules. P-t que je me trompe mais est-ce que tu me donnes une solution pour l'affichage des images de fond? En fait je ne cherche pas à afficher une seconde galerie de fond de page mais bien a afficher une seconde galerie dans mon bloc airbrush. J'ai déjà la galerie carrosserie d'affichée et je cherche à afficher une galerie murale juste en dessous du texte murale. --------------------- Ce code offre un océan de possibilité! Dommage que je ne le maîtrise pas du tout mais c'est clair que je vais tenter de m'y replonger plus sérieusement. J'ai pris des cours de programmation de base en html et css et ça ...rien de plus facile! J'ai appris le c++, le java mais dès que je suis rentrée dans le javascript et le php j'ai abandonné! Par contre, je suis capable de comprendre la structure (appel de fonctions, incrémentations, affichage, variables). Je crois que je me suis lancée dans quelque chose de trop compliqué et je m'excuse de vous avoir embrigadé dans mes rêves de grandeur haha. Par contre, vous m'avez aidé à mieux comprendre ce qui n'allait pas. Je crois que la meilleure chose à faire pour moi est d'envoyer le tout à un programmeur que je connais et que je vais payer pour qu'il me règle tout ça! Est-ce que vous croyez que c'est un problème qui pourrait aisément être réglé en 2h? Et puis à côté je vais repotasser mon php! Connaissez-vous un bon bouquin, bien expliqué pour réapparendre le php du début? Je crois que je me suis découragée trop vite avec ce langage! en tout cas, un grand merci à vous 2! |
|
|
00
|
|
|
#13 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 89 ![]() |
de rien, c'était avec plaisir
![]() si tu as mangé du java, php est bien différent, y'a une chose qu'il faut comprendre, avec ce langage, c'est que tu as peu de persistance, l'objectif de son utilisation est de construire dynamiquement une page html que tu va envoyer au client (navigateur) (entre autres choses mais restons concentré sur un point!) En java, tu instancie un conteneur auquel tu vas rajouter les composants/écouteurs&Cie, au final tu aura un objet qui encapsule l'ensemble des composants. je comprend pourquoi tu as fait une fonction "globale" (à ne pas prendre dans son sens informatique! ) chargé de la construction de la galerie/menu etc... en web, techno php, à chaque appel du client le serveur web vas reconstruire ta page en fonction de différents paramètres et renvoyer le résultat au navigateur. Ce résultat sera composé d'html/css/javascript que le navigateur sera en mesure d'interpréter. l'url permet d'indiquer quel fichier sera le point de départ. Il peut être un fichier php qui ne contient que de l'html! et cela fonctionnera si celui-ci contient le nécessaire à destination du navigateur qui lui ne peut interpréter de toute façon que de l'html/css/javascript! c'est pourquoi j'ai décomposé la page en petit morceaux qui sont à emboîter! au début je pensais de la fonction était chargé de construire une galerie et simplement la galerie, pas l'ensemble de la page. je ne sais pas si je suis très clair... après, tu utilise une deuxième librairie pour l'affichage de la galerie et, j'ai l'impression que cette galerie utilise div_content pour intégrer la galerie en javascript et ça doit être ce qui coince vu que tu ne peut avoir 2 div avec le mm id! et donc pas 2 galeries dans une même page à moins de surcharger le code de la librairie afin de pourvoir afficher deux galeries sur une même page (mais avant de se lancer la dedans il suffit peut être de voir s'il n'y a pas une possibilité de le faire nativement avec la librairie) au final empiler les librairies complexifie un peu le problème. pour les images de fond, euh... je sais pas... je t'ai donné simplement la façon de l'utiliser pour l'implémenter. pour les tuto php je ne peux que te renvoyer dans la section php de ce site qui contient énormément d'info! il y a également une section librairie très riche. ne te décourage pas, fait les choses petit à petit, tu verra php est agréable à utiliser et pour répondre à ta question, régler le problème en 2h je pense que c'est de l'ordre du possible (le temps de rentrer dans la structure du code et débloquer ce qui coince cela reste conditionné par la deuxième librairie), tout dépend de l'objectif, si on intègre une refactorisation du code et création d'une architecture fonctionnelle je tabulerais sur 1/2 voir une journée si on intègre la partie contact et gestion de l'info-lettre. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com