Convertir un code php du mode procédural en PDO
Résolu/Fermé
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
-
21 juil. 2020 à 16:30
Mikebiz Messages postés 28 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 17 décembre 2020 - 22 juil. 2020 à 13:52
Mikebiz Messages postés 28 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 17 décembre 2020 - 22 juil. 2020 à 13:52
A voir également:
- Convertir un code php du mode procédural en PDO
- Voici du code ascii : - Guide
- Mode sécurisé samsung - Guide
- Mode d'emploi - Guide
- Convertir youtube en mp3 avec audacity - Guide
- God mode - Guide
4 réponses
jordane45
Messages postés
38309
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
21 juil. 2020 à 16:41
21 juil. 2020 à 16:41
Bonjour,
Je pense que tu melanges plusieurs choses....
D'un côté : Style procédurale et Style Objet ( qui est une "forme" d'écriture du code )
De l'autre : Mysqli .. et Pdo. (qui sont des "drivers" permettant de se connecter à une BDD )
De plus, pourquoi vouloir changer ton code en style objet ?
Ou pourquoi vouloir le convertir en PDO ?
Quel rapport avec la génération d'un fichier PDF ?
Je pense que tu melanges plusieurs choses....
D'un côté : Style procédurale et Style Objet ( qui est une "forme" d'écriture du code )
De l'autre : Mysqli .. et Pdo. (qui sont des "drivers" permettant de se connecter à une BDD )
De plus, pourquoi vouloir changer ton code en style objet ?
Ou pourquoi vouloir le convertir en PDO ?
Quel rapport avec la génération d'un fichier PDF ?
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
21 juil. 2020 à 17:18
21 juil. 2020 à 17:18
Bonsoir Jordan45
En fait, j'ai deja un fichier listeinterimaire qui est en style procédurale et qui marche bien. Ce fichier recupère le nom, le poste, le salaire, le début du contrat, la fin du contrat et l'entreprise de l'intérimaire. Pour imprimer cette liste il fallait passer par un pdf, donc avec fpdf j'ai pu élaborer le pdf mais problème c'est qu'il affiche l'id du client au lieu du nom du client(entreprise). le bout de code que j'ai posté précédemment me permet de récupérer dans mon fichier listeinterimaire le nom du client à partir de son id or le code pour pdf que j'ai récupéré sur le net est en PDO, je n'y connais rien. C'est pourquoi je souhaite convertir le code existant en style procédural en PDO. Voici ci-dessous mon code pdfinterimaire que je souhaite modifier :
En fait, j'ai deja un fichier listeinterimaire qui est en style procédurale et qui marche bien. Ce fichier recupère le nom, le poste, le salaire, le début du contrat, la fin du contrat et l'entreprise de l'intérimaire. Pour imprimer cette liste il fallait passer par un pdf, donc avec fpdf j'ai pu élaborer le pdf mais problème c'est qu'il affiche l'id du client au lieu du nom du client(entreprise). le bout de code que j'ai posté précédemment me permet de récupérer dans mon fichier listeinterimaire le nom du client à partir de son id or le code pour pdf que j'ai récupéré sur le net est en PDO, je n'y connais rien. C'est pourquoi je souhaite convertir le code existant en style procédural en PDO. Voici ci-dessous mon code pdfinterimaire que je souhaite modifier :
<?php require "fpdf.php"; $db = new PDO('mysql:host=localhost;dbname=planninga2i','root',''); class PDF extends FPDF { function header(){ $this->Image('img/login_logo.png',10,6); $this->SetFont('Arial','B',14); $this->Cell(276,5,'A2I - PLANNING',0,0,'C'); $this->Ln(); $this->SetFont('Times','',12); $this->Cell(276,10,'Liste des Interimaires',0,0,'C'); $this->Ln(20); } function footer(){ $this->SetY(-15); $this->SetFont('Arial','',8); $this->Cell(0,10,'Page '.$this->PageNo().'',0,0,'C'); } function headerTable(){ $this->SetFont('Times','B',12); $this->Cell(55,10,'Nom et Prenoms',1,0,'C'); $this->Cell(40,10,'Entreprise',1,0,'C'); $this->Cell(60,10,'Poste Occupe',1,0,'C'); $this->Cell(25,10,'Salaire',1,0,'C'); $this->Cell(35,10,'Debut de Contrat',1,0,'C'); $this->Cell(35,10,'Fin de Contrat',1,0,'C'); $this->Cell(30,10,'Telephone',1,0,'C'); $this->Ln(); } function viewTable($db){ $this->SetFont('Times','',12); $stat = $db->query('SELECT * FROM interimaire'); while($data = $stat->fetch(PDO::FETCH_OBJ)){ $this->Cell(55,10,$data->nominterimaire,1,0,'L'); $this->Cell(40,10,$data->client,1,0,'L'); $this->Cell(60,10,$data->posteinterimaire,1,0,'L'); $this->Cell(25,10,$data->salaireinterimaire,1,0,'L'); $this->Cell(35,10,$data->debutcontrat,1,0,'L'); $this->Cell(35,10,$data->fincontrat,1,0,'L'); $this->Cell(30,10,$data->contactinterimaire,1,0,'L'); $this->Ln(); } } } $pdf = new PDF (); //$pdf->AliasNtPages(); $pdf->AddPage('L','A4','0'); $pdf->headerTable(); $pdf->viewTable($db); $pdf->Output(); ?>
jordane45
Messages postés
38309
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 21 juil. 2020 à 17:43
Modifié le 21 juil. 2020 à 17:43
Donc c'est bien ce que je disais....
Tu ne veux pas changer ton code en style "procédurale" ... mais le convertir en PDO.
Quoi qu'il en soit, je pense que c'est inutile.
Il suffit, dans ton code original, de faire une jointure dans ta requête SQL...
En remplaçant :
par
Tu ne veux pas changer ton code en style "procédurale" ... mais le convertir en PDO.
Quoi qu'il en soit, je pense que c'est inutile.
Il suffit, dans ton code original, de faire une jointure dans ta requête SQL...
En remplaçant :
$stat = $db->query('SELECT * FROM interimaire');
par
$sql = "SELECT I.* , C.client FROM interimaire I LEFT JOIN client C ON C.idclient = I.client"; $stat = $db->query($sql);
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
21 juil. 2020 à 18:06
21 juil. 2020 à 18:06
Merci Jordan45, c'est parfait, le code marche comme je le souhaite. Cependant peux-tu m'expliquer la première requete pour mes besoins futur?
Que veux dire "Select I.*" ?
C.client ?
FROM interimaire I. ?
Merci encore
Que veux dire "Select I.*" ?
C.client ?
FROM interimaire I. ?
Merci encore
yg_be
Messages postés
23343
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 551
21 juil. 2020 à 19:30
21 juil. 2020 à 19:30
I et C sont déclarés et utilisés comme synonymes de "interimaire" et de "client".
pour faciliter l'écriture et la lecture.
pour faciliter l'écriture et la lecture.
jordane45
Messages postés
38309
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 21 juil. 2020 à 20:25
Modifié le 21 juil. 2020 à 20:25
I et C sont des "alias".
C'est pour faciliter l'écriture...
J'aurai pu simplement écrire :
Mais c'est plus simple d'utiliser des alias
C'est pour faciliter l'écriture...
J'aurai pu simplement écrire :
SELECT interimaire .* , `client`.client FROM interimaire LEFT JOIN client ON client.idclient = interimaire.client
Mais c'est plus simple d'utiliser des alias
SELECT I.* , C.client FROM interimaire I LEFT JOIN client C ON C.idclient = I.client
Mikebiz
Messages postés
28
Date d'inscription
vendredi 3 juillet 2020
Statut
Membre
Dernière intervention
17 décembre 2020
>
jordane45
Messages postés
38309
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
22 juil. 2020 à 13:52
22 juil. 2020 à 13:52
Bien compris. Merci beaucoup Jordan45.
jordane45
Messages postés
38309
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 21 juil. 2020 à 20:38
Modifié le 21 juil. 2020 à 20:38
Et au passage,
si tu avais réellement voulu convertir ton code mysqli en PDO, ça aurait donné ça
PS: pense à mettre le sujet en RESOLU
si tu avais réellement voulu convertir ton code mysqli en PDO, ça aurait donné ça
//préparation de la requête et des variables $sql = "SELECT client FROM client WHERE idclient=:idclient"; $datas = array(':idclient'=>$client); //Execution de la requete try{ $requete = $db->prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } $res = $requete->fetch(PDO::FETCH_OBJ); $client = $res->client;
PS: pense à mettre le sujet en RESOLU