Page 1 sur 1

Compréhension du code

Posté : 07 juin 2012, 09:56
par Doken
Bonjour.
Je suis débutant en PHP (sachant que je suis en première année de BTS info) mais j'ai du mal à en comprendre les subtilités...
Je suis actuellement en stage et je suis face à un site intranet particulièrement conséquent.

J'aurais souhaité un peu d'aide afin de comprendre certaines parties du code.

Voici ce sur quoi je butte :
A partir d'une page où l'on renseigne diverses informations, ces dernières sont renvoyées dans un tableau qui est ensuite converti en PDF.
Voici la page qui renseigne toutes les informations :
<?php
include("../pdf/phpToPDF.php");

$date=@$_GET['date'];

$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',10);

$PDF->Image("../imgs/logoCSM.jpg", 160, 0);



require '../init.php'; 
$contenuTableau = array();


//while($row=mysql_fetch_object($req)){
						
	array_push($contenuTableau,'','','');
//}


// Définition des propriétés du reste du contenu du tableau.	



//$PDF->Write(10, $titre);
//Décalage de 8 cm à droite
$PDF->Cell(1);
//Texte centré dans une cellule 20*10 mm encadrée et retour à la ligne
$PDF->setXY(10,10);
$PDF->Cell(0,0,"GARDES DU $date",0,1,'C'); 
$PDF->setXY(0,20);

$reqServ=verifReq("SELECT * FROM cdgservice");
// Définition des propriétés du tableau.
$proprietesTableau = array(
	'TB_ALIGN' => 'L',
	'L_MARGIN' => 25,
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => '0',
	);

// Définition des propriétés du header du tableau.	
$proprieteHeader = array(
	'T_COLOR' => array(255,255,255),
	'T_SIZE' => 10,
	'T_FONT' => 'Arial',
	'T_ALIGN' => 'C',
	'V_ALIGN' => 'T',
	'T_TYPE' => 'B',
	'LN_SIZE' => 5,
	'BG_COLOR_COL0' => array(174, 141, 75),
	'BG_COLOR' => array(174, 141, 75),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.2,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);

$contenuTableau = array();
$contenuHeader = array(
	80, 62
	"Service", "Intervenant"
);

function cleanTxt2($txt){
	$origine = array("<br />", "é", "è", "Ã", "àª", "à®", "à´", "à§");
	$change   = array("", "é", "è", "à", "ê", "î", "ô", "ç");
	$txt=str_replace($origine, $change, $txt);
	return $txt;
}


function cleanGrille($txt){
	$origine = array("4", "3", "2", "1","false");
	$change   = array("A", "B", "C", "D", "n/a");
	$txt=str_replace($origine, $change, $txt);
	return $txt;
}

while($rowServ=mysql_fetch_object($reqServ)){
	$reqLiaison=verifReq("SELECT d.idInt,nom
						FROM cdgdegarde d,cdgintervenant i
						WHERE d.idInt=i.idInt 
						AND idServ='$rowServ->idServ' AND date='$date'");
	if(mysql_num_rows($reqLiaison)!=0){
		$nomSet=mysql_result($reqLiaison,0,'nom', 'telephone');
	}else{
		$nomSet="-";
	}
	array_push($contenuTableau,$rowServ->libServ,$nomSet);
}
// Définition des propriétés du reste du contenu du tableau.	
$proprieteContenu = array(
	'T_COLOR' => array(0,0,0),
	'T_SIZE' => 9,
	'T_FONT' => 'Arial',
	'T_ALIGN_COL0' => 'L',
	'T_ALIGN' => 'R',
	'V_ALIGN' => 'T',
	'T_TYPE' => '',
	'LN_SIZE' => 8,
	'BG_COLOR_COL0' => array(233, 233, 233),
	'BG_COLOR' => array(233, 233,233),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.1,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);

$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
//$PDF->Output();
$nomFichier="CDG$date";
$PDF->Output("fiches/$nomFichier.pdf", "F");
echo '
	<iframe src="fiches/'.$nomFichier.'.pdf" width="100%" height="100%"  frameborder="none"  scrolling="No">
	[Your browser does <em>not</em> support <code>iframe</code>,
	or has been configured not to display inline frames.
	You can access <a href="./fiches/'.$nomFichier.'.pdf">the document</a>
	via a link though.]</iframe>
';

?>
J'en comprends certains passages (les plus basiques, tableaux, styles) mais je n'arrive pas à comprendre le fonctionnement... Quel est le cheminement ? Comment est construit le code permettant au final d'afficher ceci :

Image

Je vous serais très reconnaissant pour l'aide apportée. Merci d'avance :)

Re: Compréhension du code

Posté : 07 juin 2012, 10:02
par xTG
Si tu as compris cela tu as compris la majorité.
$PDF=new phpToPDF(); // instanciation d'un objet phpToPDF
$PDF->AddPage(); // création d'une page vierge
// écriture du tableau dans la page
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
//$PDF->Output();
$nomFichier="CDG$date";
$PDF->Output("fiches/$nomFichier.pdf", "F"); // génération du fichier pdf
Il n'y a rien de plus, rien de moins. :)

Re: Compréhension du code

Posté : 07 juin 2012, 10:05
par Doken
Désolé, je me suis mal exprimé.

En fait, je ne comprends pas comment les données vont de la BDD au tableau, ni comment le modifier par conséquent.
J'ai tenté certaines choses, sans résultat...

Pour résumer, je dois ajouter une colonne "Téléphone" et prendre les numéros de ma BDD (sélectionnés selon le nom utilisé) pour les y inscrire dans le tableau.

Re: Compréhension du code

Posté : 07 juin 2012, 10:16
par xTG
Tu as une variable :
$contenuHeader = array(
        80, 62
        "Service", "Intervenant"
);
As-tu essayé de rajouter une colonne dedans à tout hasard ?
Après je ne connais pas cette librairie, mais ils doivent bien avoir un site et une documentation.
Tu devrais y trouver des exemples dedans.

Re: Compréhension du code

Posté : 07 juin 2012, 10:19
par Doken
Oui, j'y ai tenté quelque chose, en vain. Cette partie là ne change que le header tout en cassant le contenu du tableau.
J'essaie plusieurs choses mais je n'y arrive pas... J'ai tenté de récupérer le numéro de téléphone via requête SQL, sans résultat. :/

Fais-je fausse route ?

Re: Compréhension du code

Posté : 07 juin 2012, 10:21
par xTG
Commençons par le début alors si tu ne sais pas récupérer le téléphone.
Montres nous ta requête pour récupérer le téléphone qu'on te dise ce qui cloche.

Re: Compréhension du code

Posté : 07 juin 2012, 10:27
par Doken
Si je ne me trompe pas, c'est dans cette partie du code :
while($rowServ=mysql_fetch_object($reqServ)){
        $reqLiaison=verifReq("SELECT d.idInt,nom
                                                FROM cdgdegarde d,cdgintervenant i
                                                WHERE d.idInt=i.idInt
                                                AND idServ='$rowServ->idServ' AND date='$date'");
        if(mysql_num_rows($reqLiaison)!=0){
                $nomSet=mysql_result($reqLiaison,0,'nom', 'telephone');
        }else{
                $nomSet="-";
        }
        array_push($contenuTableau,$rowServ->libServ,$nomSet);
}
J'ai simplement rajouté la colonne telephone après nom :
while($rowServ=mysql_fetch_object($reqServ)){
        $reqLiaison=verifReq("SELECT d.idInt,nom, telephone
                                                FROM cdgdegarde d,cdgintervenant i
                                                WHERE d.idInt=i.idInt
                                                AND idServ='$rowServ->idServ' AND date='$date'");
        if(mysql_num_rows($reqLiaison)!=0){
                $nomSet=mysql_result($reqLiaison,0,'nom', 'telephone');
        }else{
                $nomSet="-";
        }
        array_push($contenuTableau,$rowServ->libServ,$nomSet);
}
Cette dernière se trouve aussi dans la table cdgintervenant. Je ne vois pas où est-ce qu'elle pourrait être appelée... A moins qu'il faille que je crée une nouvelle requête, et que je gère le numero de télephone à part ?

Re: Compréhension du code

Posté : 07 juin 2012, 10:35
par xTG
Ta requête est correcte mais c'est on utilisation de mysql_result() qui ne l'est pas.
Il faut faire ainsi :
if(mysql_num_rows($reqLiaison)!=0){
  $nomSet=mysql_result($reqLiaison,0,'nom');
  $telephoneSet=mysql_result($reqLiaison,0, 'telephone');
}else{
  $nomSet="-";
  $telephoneSet='-';
}
Ensuite pour les insérer je modifierai la variable header ainsi que rajouter le téléphone dans le array_push de la boucle. :)

Re: Compréhension du code

Posté : 07 juin 2012, 10:47
par Doken
Merci beaucoup, ça fonctionne. Qui plus est, j'ai compris comment.
Merci encore =)