Page 1 sur 1

Impression formatée

Posté : 11 avr. 2021, 22:12
par Figuedi
Bonjour,

Est il possible d'ouvrir un fichier excel, de le remplir avec la base de donnée et de lancer l'impression, le tout piloté en PHP ?

Re: Impression formatée

Posté : 11 avr. 2021, 23:49
par Figuedi
Bon j'ai l'impression de ne rien comprendre.
J'ai téléchargé phpspreadsheet.
Mais bon pas compris comment ça marchait je l'ai dezippé et monté sur mon serveur via filezilla. J'aurais pissé dans mon violon j'aurai aumoins eu du bruit là que dalle que chi
Il m'a donc fallu télécharger et installer le composer Windows (mais apres je ne sais meme pas quoi en faire) Y a des fois je me dis oh bonne mère c'est quoi ce bor..l de m...e peuve,t pas faire un truc simple ils mettent un github dedans y a des fichiers mais il faut les build avec un builder qui n'est pas fourni et qui est ailleurs il faut ouvrir un command prompt mais pas le même un truc qui s'appelle terminal.

Franchement ils peuvent pas faire un truc simple .

mais bon je creuse je creuse j'ai l'impression d'être dans minecraft à force de creuser

Re: Impression formatée

Posté : 12 avr. 2021, 12:18
par Ryle
Salutations !

Php s'exécute côté serveur. Il te permet d'interroger une base de données pour en lire les enregistrements et formater ceux-ci pour les enregistrer dans un fichier excel. Phpspreadsheet est une librairie qui peut être intégrée dans ton code et permet de faciliter la création du fichier excel. Ils recommandent d'utiliser 'composer' pour gérer les dépendances de php, mais tu peux aussi télécharger les sources sur github et tout installer à la main pour l'adapter à la structure à ton projet.

Ça n'est cependant pas une solution click & play et il y a sans doute pas mal de chose à faire pour l'inclure. Je ne pense pas que des compétences musicales ou minières soient nécessaires, bien qu'elles pourraient être un plus ;)

A noter cependant qu'un serveur php distant ne pourra pas lancer l'impression de quoi que ce soit sur ton imprimante (et dans un sens c'est tant mieux, ça m'ennuierait que mon imprimante crache toute une rame de papier parce que j'ai ouvert un site internet en php ;))

Re: Impression formatée

Posté : 12 avr. 2021, 12:37
par Figuedi
Oui bien vu pour l'impression automatique qui ne peut pas se faire c'est normal.

J'ai fait mon projet sur excel à la base, tu importes automatiquement des doc rangés dans un classeur, il passe à la moulinette les enfants les filles, les garçons, et l'age, puis il propose d'afficher que les combattants de 2012 triés par poids pour que l'organisateur du tournoi clique sur les 3,4 ou5 nom qui créera une feuille de poule et qu'il imprimera d'un simple click

ça marche super, sauf qu’après 10ans de présidence de mon club j'en ai un peu marre, du coup j'ai fait un site internet pour le Judo, (facile beaucoup de temps car deux ans sans sports :cry: :cry: :cry: )
Et je me suis lancé comme défi de faire la même chose en ligne comme ça même pas besoin de moi (bon j'aurai pu peaufine mon fichier excel mais bon ...)

Du coup voila j'en suis à remplir la feuille de poule vierge avec la selection et proposer un bouton pour imprimer, si je ne trouve pas la fonction imprimer je ferais l'enregistrement là aussi il n'y aura surement pas d'automatisme car en effet si un site pouvait remplir un disque dur client en 10 s ce serait plus tot bof.

Ce qui me laisse une interrogation quelle est la différence entre une appli Web et un site internet car peut etre que j'ai fais fausse route depuis le début.

En tout cas merci pour ses explications. J'ai quand même réussi à installer spreadsheet et j'ai même réussi à prendre un valeur de ma base SQL et de la rentrer au bon endroit dans ma feuille de poule. Je sauvegarde meme la poule automatiquement dans le serveur, faudra que je fasse un bouton massdownload (j'imagine que ça doit pouvoir se faire)

Re: Impression formatée

Posté : 12 avr. 2021, 13:00
par or 1
https://www.w3schools.com/jsref/met_win_print.asp pour imprimer, du javascript et non du php.

Re: Impression formatée

Posté : 12 avr. 2021, 16:30
par Figuedi
Voila pour info mon module d'impression si quelqu'un cherche par mot clef il aura au moins une soluce.
Concernant l'impression en js, ben ouais va falloir que je m'y colle merci pour le lien
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
require('_connexion_pdo.php');

require 'vendor/autoload.php';
// charge la feuille en mémoire
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$spreadsheet = $reader->load("./FP/FPvierge.xlsx");

foreach ($_POST as $val){
	foreach ($val as $valeur){	
		$query = "SELECT * FROM judo where poule ='$valeur'" ;
		try {
			$pdo_select = $pdo->prepare($query);
			$pdo_select->execute();
			$NbreData = $pdo_select->rowCount();    // nombre d'enregistrements (lignes)
			$rowAll = $pdo_select->fetchAll();      // tout dans le meme tableau
		} catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
		
		for($i=0;$i<$NbreData;$i++){
			// $i+6 on commence à la ligne 6 et à chaque nouveau judoka on va a la ligne d'après 
			$spreadsheet->getActiveSheet()
			->setCellValue('B'.($i+6), $rowAll[$i]['club']);
			$spreadsheet->getActiveSheet()
			->setCellValue('C'.($i+6), $rowAll[$i]['nom']);
			$spreadsheet->getActiveSheet()
			->setCellValue('D'.($i+6), $rowAll[$i]['prenom']);
			$spreadsheet->getActiveSheet()
			->setCellValue('E'.($i+6), $rowAll[$i]['poids']);
       }

		//enregistre le fichier
		$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
		$writer->save('./FP/'.$valeur.'.xlsx'); //récupère le nom de la poule
} }

Re: Impression formatée

Posté : 12 avr. 2021, 17:33
par Figuedi
Pour finir on peut forcer le format d'affichage toujours avec spreadsheet A4 la zone d’impression le fit to page, et autres ...
puis j'ai trouvé un code qui affiche tout le contenu de mon dossier a télécharger
comme ça ils auront plus qu'a télécharger et imprimer ou donner les fichiers à imprimer à quelqu'un qui a une grosse imprimante.
En tout cas merci, je n'ai pas pris le temps de regarder le JS mais bon ...
<?php
$rep = './FP/'; // dossier des fichiers
echo '<ul>';
	if($dossier = opendir($rep))
		{
		while(false !== ($fichier = readdir($dossier)))
			{
			if($fichier != '.' && $fichier != '..' )
				{
				echo '<li><a href="' . $rep . '/' . $fichier . '">' . $fichier . '</a></li>';
			}
		}
		echo '</ul><br />';
		closedir($dossier);
	}
	else echo 'Une erreur est survenue';
?>