Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 11h49   #1
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 155
Points : 35
Points : 35
Par défaut passage de variable entre classe

Bonjour à tous et merci a ceux qui pourront m'aider

je vous montre d'abord mon code et poserais ma question ensuite :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
 
$immat=$_POST['immat'];
$km=$_POST['km'];
$temps=$_POST['temps'];
$listeGrais=$_POST['listeGrais'];
$listeAlim=$_POST['listeAlim'];
$listeAllum=$_POST['listeAllum'];
$listeTrans=$_POST['listeTrans'];
$listeCycle=$_POST['listeCycle'];
$listeDivers=$_POST['listeDivers'];
 
$com=$_POST['com'];
 
 
 
if (isset($immat) && $immat!="" && isset($km) && $km!="" && isset($temps) && $temps!="" ) //on verrifie que tous les champs ont bien ete complete
{
 
	if($com=="")
{
$com="aucun commentaire";
}
				$dateus=date("Y-m-d");
		include "./connexion_bd.php";
 
 
		mysql_query("INSERT INTO devis VALUES('NULL','".$dateus."','".$_POST['km']."','".$_POST['immat']."','".$_POST['listeGrais']."','".$_POST['listeTrans']."','".$_POST['listeDivers']."','".$_POST['listeAlim']."','".$_POST['listeAllum']."','".$_POST['listeCycle']."','".$_POST['temps']."','".$_POST['com']."')");
 
require('fpdf.php');
 
class PDF extends FPDF
{
 
 
//En-tête
function Header()
{
 
    //Police Arial gras 15
    $this->SetFont('Arial','B',15);
    //Titre
    $this->Cell(30,10,'Devis pour '.$immat.'',1,0,'C');
    //Saut de ligne
    $this->Ln(20);
voila j'ai des variables en debut de code, et lorsque je veux les reutiliser dans ma classe pdf, par exemple $immat, je n'y ai pas acces et ma generation de pdf ne fonctionne plus...

comment pourrais-je rendre accesible mes variables dans toute ma page de code ?

merci
tilily est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 15h01   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Le plus simple de passer les variables dont tu as besoin en paramètre de la méthode qui va les utiliser.
Code :
1
2
3
4
5
6
7
8
9
function Header($p_immat)
{
 
    //Police Arial gras 15
    $this->SetFont('Arial','B',15);
    //Titre
    $this->Cell(30,10,'Devis pour '.$p_immat.'',1,0,'C');
    //Saut de ligne
    $this->Ln(20);
et ensuite lors de l'appel :
Code :
1
2
3
4
5
 
$immat=$_POST['immat'];
 
$pdf = new PDF();
$pdf->Header($immat);
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 15h08   #3
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 155
Points : 35
Points : 35
Citation:
Envoyé par Celira Voir le message
Le plus simple de passer les variables dont tu as besoin en paramètre de la méthode qui va les utiliser.
Code :
1
2
3
4
5
6
7
8
9
function Header($p_immat)
{
 
    //Police Arial gras 15
    $this->SetFont('Arial','B',15);
    //Titre
    $this->Cell(30,10,'Devis pour '.$p_immat.'',1,0,'C');
    //Saut de ligne
    $this->Ln(20);
et ensuite lors de l'appel :
Code :
1
2
3
4
5
 
$immat=$_POST['immat'];
 
$pdf = new PDF();
$pdf->Header($immat);
je vais essayer merci

par contre, j'ai pas mal de parametres a passer est-ce genant ?
et $p_immat correspond à $_POST['immat'] ? comment il s'y retrouve pour comprenre ?
tilily est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 15h14   #4
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 155
Points : 35
Points : 35
bon il me mets une erreur

<br />
<b>Warning</b>: Missing argument 1 for PDF::Header(), called in F:\appliate\devis\data\php\fpdf.php on line 340 and defined in <b>F:\appliate\devis\data\php\devisData.php</b> on line <b>37</b><br />
<br />
<b>Notice</b>: Undefined variable: p_immat in <b>F:\appliate\devis\data\php\devisData.php</b> on line <b>54</b><br />
tilily est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 15h28   #5
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par tilily Voir le message
bon il me mets une erreur

<br />
<b>Warning</b>: Missing argument 1 for PDF::Header(), called in F:\appliate\devis\data\php\fpdf.php on line 340 and defined in <b>F:\appliate\devis\data\php\devisData.php</b> on line <b>37</b><br />
<br />
<b>Notice</b>: Undefined variable: p_immat in <b>F:\appliate\devis\data\php\devisData.php</b> on line <b>54</b><br />
L'erreur me semble assez explicite; Il manque un parametre lors de l'appel de PDF::Header().

Ensuite plusieurs remarque :

- Passer le contenu de $_POST dans différentes variables pourquoi pas , sauf que si c'est juste pour faire beau ça ne sert à rien. Tu utilise de la mémoire inutilement.

- Tu fais une insertion de données dans ta bases sans avoir sécurisé tes données. Fait donc une recherche sur les injections sql pour voir de quoi il retourne.
Mais dans ton cas quelques chose du genre :
Code :
$immat=mysql_real_escape_string($_POST['immat']);
pourrais être une bonne idée (et du coup la variable $immat devient cette fois utile).

Pour ton problème une solution simple peut consister à passer en paramètre le tableau $_POST au constructeur de ta classe. C'est moins précis que la solution de Celira mais plus rapide à mettre en oeuvre.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 15h33   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Ah oui forcément... il semble que Header soit appelé automatique par FPDF et donc que le passage de paramètre ne fonctionne pas...

Dans ce cas là, je suppose que tu peux surcharger le constructeur et stocker tes variables en tant qu'attribut de la classe... (ce qui est en gros est la solution sugérée par notre ami grunk )
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 15h35   #7
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 155
Points : 35
Points : 35
merci pour ces precisions...


j'ai reussi a inserer mes données directement avec $_POST['immat']...je viens de lire que ca avait la meme portée que global

$this->Text(100,45,'Devis N°'.$_POST['immat'].'');

et ca fonctionne très bien
tilily est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web