Page 1 sur 1
récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 18:33
par minwolf999
Bonjour, voilà j'ai une partie de mon code qui me permet de récupérer des données pour les mettre dans un pdf grâce à html2pdf. Cependant la méthode que j'utilise ne marche pas comme je le voudrais car je me retrouve régulièrement avec un chapitre (généré par $competenceLabel) qui s'écrit à la fin de la page et les compétences qui y sont liés s'affichent sur la page suivante. Avez vous une solution à me proposer ?
(Voici mon code qui génère ce qui va être afficher dans le pdf ici $results est le nom de la variable qui récupère les données de la bdd mysql)
Code : Tout sélectionner
foreach($results as $result){
$classe = $result['classe'];
$id = $result['id'];
$competences = [];
foreach ($results as $row) {
if (!array_key_exists($row['nomCategorie'], $competences)) {
$competences[$row['nomCategorie']] = [];
}
$competences[$row['nomCategorie']][] = $row;
}
$competencef ="";
foreach ($competences as $competenceLabel => $competenceRows):
$competencef .= "<h3><b><i>$competenceLabel</i></b></h3>";
var_dump($competenceLabel);
foreach ($competenceRows as $competence):
if (!empty($competence['imageCompetence'])){
$catcompetence = $competence['imageCompetence'];
}
$competencef .= "<blockquote>".ucfirst($competence['nomCompetence']). " "." "." "." "."<img src=$catcompetence width='75'>"."</blockquote>" ;
endforeach;
endforeach;}
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 21:53
par two3d
Ton indentation est chaotique... des fois tu utilise des accolades, des fois non pour tes foreach...
Ta concaténation sert à rien pour le </blockquote> de fin, de même pour tes espaces HTML :
src=$catcompetence : il te manque les ' autour de ta variable.
Ceci dit, j'ai pas compris ta question, tu souhaite que $competenceLabel soit affiché qu'une fois, à la fin ?
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 22:03
par minwolf999
Merci pour ton retour j'ai rajouter les ' autours de ma variables.
Alors en gros le morceaux de code ne fonctionne pas sans les accolades (ça ne fait pas une boucle alors que là oui).
Pour le </bolckquote> et les espaces : ils sont là pour servir à la présentation du pdf.
Ce que je cherche c'est un moyen de vérifier la taille que va faire la variable $competencef (en terme de ligne) afin de ne pas avoir un $competenceLabel qui s'affiche tous seul en bas de page du pdf
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 22:10
par two3d
Je te propose une solution un peu bancale ; regarde combien le PDF limite en nombre de caractère chaque ligne et tu compte le nombre de caractère de $competencef via mb_strlen().
Sinon, si la classe html2pdf le permet, vérifie combien de place prends ta variable $competencef.
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 22:23
par minwolf999
Alors je viens de regarder la proposition que tu m'as donnée mais celle-ci n'est pas applicable pour une raison qui est que chaque ligne n'est pas complète et varie de longueur d'une ligne à l'autre.
Également comme tous ce qui est écrit est stocké dans la variable $competencef ça ne sert à rien de la vérifier avec html2pdf (surtout que la variable est remplie dans une page contenant tous le php utiliser dans la création du pdf)
Est ce qu'il existe un équivalent à mb_strlen() qui au lieu de compter le nombre de caractère compte le nombre de ligne ?
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 22:34
par two3d
Te faut passer via une regex et compter le nombre de \n (retour chariot), ou \r\n : "(\\n|\\r\\n)"
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 22:40
par minwolf999
D'accord mais à vrai dire c'est la première fois que j'entends parler d'une regex as tu un lien expliquant comment ça marche (et s'utilise) ? car j'ai l'impression d'après les premiers résultats que google m'a donnée qu'il s'agit d'une bibliothèque (comme html2pdf)
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 09 déc. 2022, 22:54
par two3d
RegEx : EXpression REGulière
C'est complexe au premier abords mais très puissant quand on comprends, des tutos sympas ici :
https://lumadis.be/regex/tuto_pcre.php
https://www.php.net/manual/fr/pcre.pattern.php
Tu peux tester la validité de tes regex ici :
https://regex101.com/
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 12:10
par @rthur
Un autre outil sympa dans le même esprit que regex101 :
https://regexr.com/
Et pour apprendre & progresser en s'amusant avec les regex :
https://regexcrossword.com/
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 15:26
par minwolf999
Merci pour vos deux retour. Le lien
https://regexr.com/ m'a bien aider à trouver le code nécessaire pour trouver tous les sauts de ligne avec
Cependant je ne sais pas comment l'appliquer à ma variable $competencef.
Avez vous une explication de comment l'utiliser ?
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 17:09
par two3d
$texte = "bonjour
les
gens";
preg_match_all("#\n+#", $texte, $match);
var_dump(count($match[0])); //2
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 17:35
par minwolf999
Merci pour ce morceau de code qui m'aide a y voir plus clair pour comment ça marche.
Question : dans mon code tous les retours à la ligne que je veux compter ne sont pas des \n mais des <br> donc est ce qu'il suffit de remplacer le \n du code que tu m'a envoyer par un <br> ? Je ne pense pas que ça marche comme ça car j'ai toujours un résultat de 0 indiqué par le var_dump
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 17:43
par two3d
PHP peut mettre fermeture de balise, demande dans ta regex si ya un espace suivit d'un /
<br ?/?>
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 17:48
par minwolf999
A force de chercher j'ai trouver en faite le retour a la ligne est effectuer par la fermeture de la balise <blockquote> et non par un \n ou <br/> Merci beaucoup pour ton aide
Re: récupération de donnée mysql en direction d'un pdf avec html2pdf
Posté : 10 déc. 2022, 17:50
par two3d
OK, super, tu peux mettre en résolu, en haut à gauche
