PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-05-2012 18:50:57

tarakhammam
Membre
Inscription : 14-05-2012
Messages : 4

[Résolu] lien "imprimer page en cours"

Bonjour,
Ma question est probablement simple à résoudre, mais mes connaissance en php sont très, très, très limitées...
Alors voilà : sur mon site en php, j'ai un menu en include dont un des éléments est un lien "imprimer".
J'aimerais qu'un clic sur ce lien ouvre une petite fenêtre proposant d'imprimer la page en cours.
Seulement, je ne sais comment faire pour justement identifier la page en cours, de façon à ce que la petite fenêtre propose la bonne page (en pdf) à imprimer.
Une âme charitable pourrait-elle me guider vers la solution ?
Un grand merci par avance...

Hors ligne

#2 14-05-2012 20:29:04

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] lien "imprimer page en cours"

Bonjour


  window.print();
 

Si cela ne suffit pas, il faut passer par une fonction avec en paramètre le contexte d'appel (ici la page concernée).

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 14-05-2012 21:32:54

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] lien "imprimer page en cours"

Saluton,
Je doute, mon cher Jc, qu'un window.print() soit capable de proposer la page en cours à imprimer en format pdf.
Mais j'ai peut-être loupé une étape.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 14-05-2012 23:11:59

tarakhammam
Membre
Inscription : 14-05-2012
Messages : 4

Re : [Résolu] lien "imprimer page en cours"

Euh, ben oui, window.print, c'est pas vraiment ce que je cherche à faire...
Ce que je veux, c'est proposer d'imprimer non pas directement la page en cours, qui ne permettra pas d'obtenir un bon résultat à l'impression, mais de télécharger(?) un pdf de cette page avec une mise en page conçue pour l'impression - ou pourquoi pas de lancer une impression directe de la page en cours mais en contrôlant la mise en forme pour l'impression.
Le contrôle de la mise en forme, en proposant un pdf ou une page html adaptée, ça je sais faire.
Ce que je ne sais pas faire c'est le code - ? la fonction SERVER['REQUEST_URI'] ? -  qui permettra d'identifier sur quelle page se trouve l'utilisateur qui souhaite imprimer la page en question.
Évidemment, ce code, cette fonction, serait activée en cliquant sur le lien "imprimer" du menu.
J'espère me faire comprendre...
Quelqu'un peut-il m'aider ?

Hors ligne

#5 14-05-2012 23:13:28

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] lien "imprimer page en cours"

Tu as tout as fait raison MK.
Le problème affiché n'est pas d'imprimer en PDF mais le contexte de la page à imprimer, point sur lequel j'ai répondu.
Soit on récupère le code envoyé au spooler par print pour en faire un pdf (avec par exemple un générateur de pdf via le fichier d'impression), soit comme j'ai dit, on créé une fonction js avec en paramètre le contexte de la page à imprimer.

Le seul problème qui va arriver et je le vois arriver gros comme une maison, c'est que visiblement l'appli a été développé par un dev qui ne fait pas du js pour des "raisons de sécurité" et qui à tout développé en 100%php. Du coup comme le fichier d'impression est en include, le contexte sera absent, et la seule manière de contourner le problème sans réecrire le code, va être de passer le contexte par l'URL, ce qui est nimp dans le sens où normalement on ne doit pas charger l'URL pour ce genre de paramètres (inutile). Mais cela va quand même compliquer le code. Faudrait voir l'appli, car cela vaut peut être mieux de sortir l'include et redévelopper un bout de code pour gérer le contexte proprement^^.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 14-05-2012 23:18:47

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] lien "imprimer page en cours"

EDIT: Si votre contexte de page est clairement distinct dans l'URL et dans TOUS les cas de figure, alors oui votre problème est résolu relativement facilement. wink
Regardez plutôt du côté de __FILE__  et utilisez dirname() et basename() ou directement avec un simple strpos()>0 pour résoudre ce contexte.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 15-05-2012 06:52:25

tarakhammam
Membre
Inscription : 14-05-2012
Messages : 4

Re : [Résolu] lien "imprimer page en cours"

bonjour JC
Tout d'abord merci pour votre disponibilité, même si ce que vous développez reste dans l'ensemble obscur pour moi.
Je vous explique : j'ai un site relativement simple. Il comporte en tout et pour tout 21 pages html. J'ai fait l'effort de comprendre et utiliser du php uniquement ce qui m'était nécessaire pour adapter son fonctionnement aux standards actuels (?). J'ai donc un index.php avec en include l'en-tête DTD de mes pages, puis mes pages elles-mêmes, chacune de ces pages ayant en include le menu (en css). Le tout avec les fonctions php requises.
Donc oui, pas de js (je sais pas faire), et rien de bien compliqué en php. Mes compétences (en autodidacte) sont l'html et guère plus.
Vous dites : "Si votre contexte de page est clairement distinct dans l'URL...". C'est à dire ? Voici l'url de la page d'accueil (pour l'instant en localhost) : http://localhost/racontetapis/index.php?page=accueil. Est-ce ce que vous nommez une url simple ?
Puis vous parlez de __FILE__, dirname() et basename() ou strpos()>0. J'ai été m'informer sur ces termes et la mise en œuvre de ces fonctions est hors de ma portée.
Ne pourriez-vous me détailler la fonction requise et me dire où la mettre ?
Merci par avance.

Hors ligne

#8 15-05-2012 08:36:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] lien "imprimer page en cours"

Une première piste serait peut-être de dédier une feuille de style au media print.
Tu liras utilement cet article de l'Open-Web Group : "Maîtriser l'impression CSS".


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 15-05-2012 10:10:42

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] lien "imprimer page en cours"

Bonjour,

Pour essayer de faire simple au niveau de l'URL vous avez deux contextes


// 1) le nom de votre page courante est inclus dans l'Url de base
// ex: [url]http://www.monsite.com/directory_x/mapage_courante.php[/url]
// Vous pouvez alors retrouver le contexte avec un simple
IF (strpos(__FILE__,'mapage_courante.php')>0){
     // gestion du contexte
}
// 2) le nom de vote page courante est passé en paramètre dans l'URL de base
// ex: http://localhost/raconteapis/index.php?page=accueil
// alors le contexte se retrouve avec un
$contexte=$_GET['page'];
If ($contexte==="accueil"){
   // traitement
}
 

Voilà, j'espère vous avoir aidé.

++

Dernière modification par Jc (15-05-2012 21:37:43)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#10 17-05-2012 02:27:24

tarakhammam
Membre
Inscription : 14-05-2012
Messages : 4

Re : [Résolu] lien "imprimer page en cours"

bonjour Jc
J'étais absent, me voici revenu...
Finalement, tel que mon menu est construit, il y a des problèmes techniques à faire ce que je souhaitais.
J'en suis donc revenu à ce que j'avais déjà prévu, à savoir que le lien "imprimer" ouvre une page avec les miniatures des pdf téléchargeables pour l'impression.
Quoiqu'il en soit, un grand merci !

Hors ligne

Pied de page des forums