PDF à partir données SQL posant pb sur php 5.4.35

Petit nouveau ! | 4 Messages

08 janv. 2015, 12:19

Bonjour, j'avais un fichier pdfreport.php (ci-joint) qui fonctionnait avec une version moins récente de php, ne fonctionnant plus sous php 5.4.35 Celui-ci a pour but de créer un fichier PDF à partir de données sql.
Quelqu'un aurait une idée ? Je suis assez novice...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 janv. 2015, 13:35

Bonjour,

Il faudrait que tu sois plus précis que "ça ne fonctionne plus".
Quel est le problème ?
Quels sont les messages d'erreurs ? as-tu regardé dans les logs ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2278 Messages

08 janv. 2015, 13:44

@rthur m'a doublé pendant que je lisais le contenu du zip.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

08 janv. 2015, 15:05

Bonjour, en fait, je n'ai rien, une page blanche et aucun message d'erreur.

Mammouth du PHP | 688 Messages

08 janv. 2015, 15:22

activer l'affichage des erreurs ou regarder dans les logs si disponible
si ce n'est pas possible, mettre quasi tout le code en commentaire et ajouter petit à petit du code pour trouver d'où vient le problème.

Mammouth du PHP | 2278 Messages

08 janv. 2015, 16:07

ligne 90
$db =& JFactory::getDBO();
essayer
$db = JFactory::getDBO();
et 123
$db->setQuery("SELECT #__comprofiler.*,#__users.name FROM #__comprofiler LEFT JOIN #__users
ON #__users.id=#__comprofiler.user_id WHERE user_id in (".$this->_models["quickdetails"]->see.")");
$values = $db->loadAssocList();
ajouter
var_dump($values);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

08 janv. 2015, 16:33

Merci pour ces infos, malheureusement, toujours page blanche...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 janv. 2015, 20:14

Merci pour ces infos, malheureusement, toujours page blanche...
Si tu as une page blanche c'est qu'il y a une erreur, donc active les messages d'erreur (cf error_reporting() ) et regarde dans les logs PHP.
Tu as forcément un message d'erreur dedans.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2278 Messages

08 janv. 2015, 20:55

Si tu fais ce que dit @rthur tu verras des messages d'erreur comme celui-ci:
Fatal error: Call-time pass-by-reference has been removed in /var/www/html/pdfreport.php on line 205
Or fatal Error arrête l'execution du script.
En fait il y a d'autres lignes (182 186 204 221 336 353 503 657) semblables à celle-ci:
WordWrapText(&$text, $info['value'], $this->pdf); à corriger ainsi:
WordWrapText($text, $info['value'], $this->pdf);

Explication sommaire:
PHP passe les variables aux fonctions soit par valeur soit par adresse (par référence):
par reference on procède ainsi: http://php.net/manual/fr/language.references.pass.php
<?php
function bidule(&$var) {
  $var++;
}
$a=5;
bidule ($a);
// $a vaut 6 maintenant
?>
Et la variable assée par référence revient modifiée par la fonction.
C'est ce que faisait WordWrapText avec en plus une façon différente d'écrire:
<?php
function bidule($var)   { // ou (&$var), je ne me souviens plus
  $var++;
}
$a=5;
bidule (&$a);
// $a vaut 6 maintenant
?>
Le wordwrap actuel passe par valeur et retourne une chaîne qu'il faut affecter.
*
Cec i dit, après modifs, j'ai une autre erreur:
Restricted accessqui provient de la ligne 2 montrant que du point de vue de php tout va bien mais que ce script doit être appelé à partir d'une page où _JEXEC est défini, ce que je contourne en ajoutant avant la ligne 2 celle-ci:
define('_JEXEC', 1);
pour apprendre qu'il me manque JFACTORY... qui permet l'accès à la base de données... mais ça ne doit pas etre insurmontable.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

15 janv. 2015, 19:30

Merci bcp pour ces messages, clairs et qui prennent du temps à rédiger !
Les choses avancent, en suivant toutes vos remarques, j'ai maintenant qq chose qui s'affiche, un message d'erreur (en pièce jointe).
La page php qui doit générer le pdf est appelée depuis le traitement des résultats d'un formulaire, via un composant (QuickForm) installé sur Joomla.
Vous m'avez précisez d'activer le report des erreurs, mais comment le faire ? Où dois-je placer error_reporting() ?
Merci Beaucoup !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.