Bonjour,

J'aurais besoin de votre aide pour solutionner un problème rencontrer avec le code de mon petit programme de génération automatique de document pdf.

Voici un résumé du projet :

J'ai 3 tables dans SQL : conseiller, signataire, defunt.

Une liaison entre signataire (signataire_id) et conseiller(ID) via clef etrangere

et idem entre signataire(ID) et defunt(signataire_id)

Je dois renseigner (via form) chaque table. La table defunt est renseigné via ma page defunt2.php,

qui renvoie vers une page pageDocument.php (sur laquelle je selectionne le document à générer), qui elle même renvoie vers ma page pouvoir.php (qui génère le pdf via fpdf).

C'est la que la coince : j'ai l'erreur "Warning: Trying to access array offset on value of type bool in C" sur la page pouvoir.php.

A priori, cela vient d'un fecth() qui renvoie false en ligne 69

Toute aide est la bienvenue... Merci

Voici la page pouvoir.php
<?php
require('session.php');
require('connexionBdd.php');
require('../fonctions/fonctions.php');          


function RoundedRect($x, $y, $w, $h, $r, $style = '')
{
    $k = $this->k;
    $hp = $this->h;
    if($style=='F')
        $op='f';
    elseif($style=='FD' || $style=='DF')
        $op='B';
    else
        $op='S';
    $MyArc = 4/3 * (sqrt(2) - 1);

    $this->_out(sprintf('%.2F %.2F m',($x+$r)*$k,($hp-$y)*$k ));
    $xc = $x+$w-$r ;
    $yc = $y+$r;
    $this->_out(sprintf('%.2F %.2F l', $xc*$k,($hp-$y)*$k ));

    $this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
    $xc = $x+$w-$r ;
    $yc = $y+$h-$r;
    $this->_out(sprintf('%.2F %.2F l',($x+$w)*$k,($hp-$yc)*$k));
    $this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
    $xc = $x+$r ;
    $yc = $y+$h-$r;
    $this->_out(sprintf('%.2F %.2F l',$xc*$k,($hp-($y+$h))*$k));
    $this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
    $xc = $x+$r ;
    $yc = $y+$r;
    $this->_out(sprintf('%.2F %.2F l',($x)*$k,($hp-$yc)*$k ));
    $this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
    $this->_out($op);
}

function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
{
    $h = $this->h;
    $this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $x1*$this->k, ($h-$y1)*$this->k,
        $x2*$this->k, ($h-$y2)*$this->k, $x3*$this->k, ($h-$y3)*$this->k));
}

function headerPdf(){
    $this->Image('',10,6,17);
    $this->SetFont('Times','B',18);
    $this->SetY(8);
    $this->MultiCell(0,7,"",0,'C');	
}

function footer() {
    $this->SetY(-20);
    $this->SetFont('Arial','',8);
    $this->MultiCell(0,3,"",0,'C');
}


if(isset($_GET['id']))
    $ids = $_GET['id'];
else   
    $ids = 0;

$requeteDefunt = $con->query("SELECT * FROM defunt WHERE id=$ids");
$DEFUNT = $requeteDefunt->fetch();
var_dump($DEFUNT);

$civiliteDefunt = $DEFUNT['civiliteDefunt'];
$nomDefunt = $DEFUNT['nomDefunt'];
$nomNaissanceDefunt = $DEFUNT['nomNaissanceDefunt'];
$prenomDefunt = $DEFUNT['prenomDefunt'];
$dateDecesDefunt = $DEFUNT['dateDecesDefunt'];
$heureDecesdefunt = $DEFUNT['heureDecesDefunt'];

$infoPouvoir = $con->query("SELECT *
                    FROM signataire,conseiller,defunt
                    WHERE defunt.signataire_id=signataire.ID 
                    AND signataire.conseiller_id=conseiller.ID
                    AND signataire_id=$ids");
$POUVOIR=$infoPouvoir->fetch();

$civiliteDeclarant = ucfirst($POUVOIR['civiliteDeclarant']);
$nomDeclarant = strtoupper($POUVOIR['nomDeclarant']);
$prenomDeclarant = strtoupper($POUVOIR['prenomDeclarant']);
$adresseDeclarant = strtolower($POUVOIR['adresseDeclarant']);
$cpDeclarant = $POUVOIR['cpDeclarant'];
$villeDeclarant = strtoupper($POUVOIR['villeDeclarant']);
$qualiteDeclarant = strtoupper($POUVOIR['qualiteDeclarant']);
$adresseConsFuneraire = strtolower($POUVOIR['adresseConsFuneraire']);
$cpConsFuneraire = $POUVOIR['cpConsFuneraire'];
$villeConsFuneraire = strtoupper($POUVOIR['villeConsFuneraire']);


require_once('../fpdf/fpdf.php');

$PDF=new FPDF('P','mm','A4');
headerPdf("Content-Type: text/html; charset=iso-8859-1");
$PDF->AddPage();

$PDF->SetY(30);
$PDF->SetFont('Arial','B',13);
$PDF->RoundedRect(10, 30,190, 8, 4, 'D');
$PDF->Cell(0,8,"POUVOIR OU MANDAT",0,1,'C');

$PDF->SetX(30);
$PDF->SetY(50);
$PDF->SetFont('Arial','',12);	
$PDF->Cell(0,6,"Je soussigné(e) ".' '.$civiliteDeclarant.' '.$nomDeclarant.' '.$prenomDeclarant,0,1,'L');

$PDF->SetY(58);
$PDF->Cell(0,6,"demeurant ".' '.$adresseDeclarant.' '.$cpDeclarant.' '.$villeDeclarant,0,1,'L');

$PDF->SetY(66);
$PDF->Cell(0,6,"Agissant en qualité de ".' '.$qualiteDeclarant,0,1,'L');

$PDF->SetY(74);
$PDF->Cell(0,6,"et ayant qualité pour pourvoir aux funérailles de ",0,1,'L');

$PDF->SetY(82);
$PDF->SetFont('Arial','B',12);	
$PDF->Cell(0,6,$civiliteDefunt.' '.$nomDefunt.' née '.$nomNaissanceDefunt.' '.$prenomDefunt,0,1,'C');

$PDF->SetY(90);
$PDF->SetFont('Arial','',12);
$PDF->Cell(0,6,"décédé(e) le ".' '.$dateDecesDefunt." à ".$heureDecesDefunt,0,1,'L');

$PDF->SetY(98);
$PDF->Cell(0,8,"",0,1,'L');

$PDF->SetY(106);
$PDF->Cell(0,6,$adresseConsFuneraire.' '.$cpConsFuneraire.' '.$villeConsFuneraire,0,1,'C',);

$PDF->SetY(122);
$PDF->MultiCell(0,6,".",0,'J',false);

$PDF->SetY(155);
$PDF->MultiCell(0,6,"",0,'J',false);

$PDF->SetY(175);
$PDF->Cell(0,6,"Fait à ".' '.$villeConsFuneraire.'        le  '.date('d/m/Y'),0,1,'L',);


$PDF->SetY(190);
$PDF->SetFont('Arial','B',12);  
$PDF->Cell(0,6,"Signature suivi de la mention - Pour valoir ce que de droit",0,1,'L',);



$PDF->Output();
?>


Voici le code pageDocument.php
<?php
	require_once('session.php');
?>

<?php
	include("../fonctions/fonctions.php");
	
	if(isset($_GET['ids']))
		$ids=$_GET['ids'];
	else
		$ids=0;
      
?>

<!DOCTYPE html>
<html>
	<head>
    
	</head>				
	<body>
    <?php include("../pages/menu.php"); ?>
        <span class="titre1">Séléctionner le document à imprimer</span>
		<div class="grid">


					<p class="grid-item">
                        <a  	href="pouvoir.php?id=<?php echo $ids?>">
                            Pouvoir/Mandat
                        </a>
                    </p>
                
</p>
 
            </div>

	</body>	
</html>


Voici le code de la page defunt2.php
<?php
	require_once('session.php');
?>

<?php
		include("../fonctions/fonctions.php");
		
		require('connexionBdd.php');

        if(isset($_GET['motCle']))
		$motCle=$_GET['motCle'];
	else
		$motCle="";

	if(isset($_GET['signataire_id']))
		$idSignataire=$_GET['signataire_id'];
	else
		$idSignataire=0;//Tous les signataires

    if(isset($_GET['conseiller_id']))
		$idConseiller=$_GET['conseiller_id'];
	else
		$idConseiller=0;//Tous les conseillers

	
		

		$and_nom_prenom=" AND (de.nomDefunt like '%$motCle%' OR prenomDefunt like '%$motCle%')";		

		$and_signataire="";

		if($idSignataire==0)//Tous les signataires

			  $and_signataire=""; 
			  
		else //$idSignataire!=0: La requete doit prendre en compte le signataire séléctionnée

			$and_signataire=" AND co.conseiller_id=$idSignataire"; 


		$and_conseiller="";
		if($idConseiller==0)  $and_conseiller=""; //Tous les conseillers



        

	

		$requete_defunt="SELECT 
				de.ID, de.dateDecesDefunt,de.heureDecesDefunt,de.lieuDeces,de.nom_medecin,de.civiliteDefunt,de.nomDefunt,de.nomNaissanceDefunt,de.prenomDefunt,de.adresseDefunt
        ,de.villeDefunt,de.cpDefunt,de.dateNaissanceDefunt,de.villeNaissanceDefunt,de.statutDefunt,de.nationaliteDefunt,de.nbrEnfantDefunt,de.professionDefunt,de.statutProDefunt,de.statutDefunt2,de.docAdmin
        ,de.nomEnfant1,de.dateNaisEnfant1,de.lienEnfant1,de.adresseEnfant1,de.nomEnfant2,de.dateNaisEnfant2,de.lienEnfant2,de.adresseEnfant2,de.nomEnfant3,de.dateNaisEnfant3,de.lienEnfant3,de.adresseEnfant3
        ,de.nomEnfant4,de.dateNaisEnfant4,de.lienEnfant4,de.adresseEnfant4,de.nomEnfant5,de.dateNaisEnfant5,de.lienEnfant5,de.adresseEnfant5,de.nomEnfant6,de.dateNaisEnfant6,de.lienEnfant6,de.adresseEnfant6
        ,de.nomPereDefunt,de.prenomPereDefunt,de.profPereDefunt,de.statutPereDefunt,de.nomMereDefunt,de.prenomMereDefunt,de.profMereDefunt,de.statutMereDefunt,de.etatMat,de.conjointDefunt,de.dateNaisEpDefunt
        ,de.adresseConjoint,de.dateMarDefunt,de.villeMarDefunt,de.dateDivDefunt,de.villeDivDefunt,de.dateDecConjDefunt,de.villeDecConjDefunt,de.dateSoins,de.heureSoins,de.natureBois,de.tailleCercueil,de.dateTavmeb
        ,de.heureTavmeb,de.lieuRepCorps,de.heureArriveFune,de.dateTapmeb,de.heureTapmeb,de.lieuCerem,de.dateCeremonie,de.heureCeremonie,de.natCerem,de.typeCerem,de.nomCimetiere,de.villeCimetiere,de.dateInhumation
        ,de.heureInhumation,de.lieuCrema,de.dateArriveCrema,de.heureArriveCrema,de.dateCrema,de.heureCrema,de.destCendres,de.valConserurne,de.jourRemiseUrne,de.heureRemiseUrne,de.nomRetraitUrne,de.presFamille
        ,de.dateDispersionCendre,de.heureDispersionCendre,de.villeDepartUrne,de.villeArriveUrne,de.frontiereUrne,de.qualiteDeclarant3,de.objectifOuverture,de.dateInterventionMarbrerie
        ,de.heureInterventionMarbrerie,de.sectionConcession,de.rangConcession,de.numeroTombe,de.dernPersInhum,de.lienConcession,de.gravureDefunt,de.dateExhum,de.heureExhum,de.typeExhum1,de.nomExhum1,de.dateDecesExhum1
        ,de.lieuDecesExhum1,de.typeExhum2,de.nomExhum2,de.dateDecesExhum2,de.lieuDecesExhum2,de.typeExhum3,de.nomExhum3,de.dateDecesExhum3,de.lieuDecesExhum3,de.cimExhum,de.emplacementExhum,de.choixReinhum,de.newCimExhum
        ,de.newEmplacementExhum,de.nomMandataire,de.prenomMandataire,de.nomNaisMandataire,de.adresseMandataire,de.cpMandataire,de.villeMandataire,de.telMandataire,si.nomSignataire, co.nomConseiller
			FROM defunt de,signataire si,conseiller co
			WHERE de.signataire_id=si.ID AND si.conseiller_id=co.ID
				$and_nom_prenom
				$and_signataire 
				$and_conseiller";	
	
	//echo $requete_signataire;

	$result_requete_defunt=$con->query($requete_defunt);
	$tous_les_defunts=$result_requete_defunt->fetchAll();
	
	$nbr_defunt=count($tous_les_defunts);
	 
	$requete_signataires="SELECT * FROM signataire";
	$result_requete_signataires=$con->query($requete_signataires);
	$tous_les_signataires=$result_requete_signataires->fetchAll();
									
?>


<!DOCTYPE html>
<html lang="fr">

    <head>

    </head>

    <body>
<div id="wrapper">
    <?php include('menu.php'); ?>
    <div class="container">
        <div class="panel panel-success espace60">
            <div class="panel-heading">Rechecher les défunts</div>
            <div class="panel-body">
                <form class="form-inline" >
<!-- ******************** Début Formulaire de recherche des défunts ***************** -->

                    <div class="form-group">
                        <label> Signataire: </label>								
                            <select class="form-control" name="signataire_id"
                                    onChange="this.form.submit();"	>
                                <option value=0>Tous les signataires</option>
                                <?php  foreach($tous_les_signataires as $signataire) {?>		
                                <option 
                                    value="<?php echo  $signataire['ID'] ?>" 
                                    <?php if($signataire['ID']===$idSignataire) echo "selected"?> > 
                                    <?php echo  $signataire['nomSignataire'] ?> 
                                </option>							
                                <?php  } ?>							
                            </select>
                        
                        <input type="text" name="motCle" 	
                                    value="<?php echo $motCle ?>"				
                                    class="form-control"
                                    placeholder="Nom ou prénom">
                        
                        <label class="radio-inline">
                            <input type="radio"
                                    value="0"
                                    <?php if($idConseiller==0) echo 'checked'?>
                                    onChange="this.form.submit();"
                                    name="conseiller_id">Tous les conseillers
                        </label>
                        
                        <button class="btn"> 
                        <i class="glyphicon glyphicon-search"></i>
                        </button>
                    </div>
                </form>
<!-- ******************** Fin Formulaire de recherche des stagiaires ***************** -->

        
            </div>
        </div>
        
        <div class="panel panel-primary">
			<div class="panel-heading">Liste des défunts (<?php echo $nbr_defunt ?> défunts)</div>
			<div class="panel-body">
                <table class="table table-striped">
                    <thead>
                        <tr>
                            <th> Id </th> <th> Nom du déclarant </th> <th> Date décès </th> <th> Nom défunt </th> 
                            <th> Nom épouse </th> <th> prénom </th> <th> ville </th> <th> Actions</th>
                            
                        </tr>
                    </thead>
            
                    <tbody>
        
                        <?php foreach($tous_les_defunts as $le_defunt){?>
                        <tr>
                            <td><?php echo $le_defunt['ID'] ?> </td>
                            <td><?php echo $le_defunt['nomSignataire'] ?> </td>
                            <td><?php echo $le_defunt['dateDecesDefunt'] ?> </td>
                            <td><?php echo $le_defunt['nomDefunt'] ?> </td>
                            <td><?php echo $le_defunt['nomNaissanceDefunt'] ?> </td>
                            <td><?php echo $le_defunt['prenomDefunt'] ?> </td>
                            <td><?php echo $le_defunt['villeDefunt'] ?> </td>
                            <td>
                                <a class="btn"
                                    href="editerDefunt.php
                                        ?id		=<?php echo $le_defunt['ID'] ?>
                                        &signataire_id		=<?php echo $idSignataire ?>
                                        &conseiller_id	=<?php echo $idConseiller ?>" > 
                                        <span class="glyphicon glyphicon-pencil"></span>
                                </a>
            
                            <?php if($_SESSION['utilisateur']['ROLE']=="ADMIN"){?>
                                <a onclick="return confirm('Etes vous sur de vouloir supprimer ce défunt')"
                                href="supprimerDefunt.php?id=<?php echo $le_defunt['ID'] ?>" 
                                class="btn"> 
                                <span class="glyphicon glyphicon-trash"></span>
                                </a>
                            <?php } ?>	
                
                                <a class="btn"
                                    href="pageDocument.php
                                    ?id=<?php echo $le_defunt['ID'] ?>"> 
                                    <span class="glyphicon glyphicon-print"></span>  
                                </a>
                            </td>
                        </tr>
                        <?php } ?>
                </table>
            </tbody>
            <a href="nouveaudefunt.php" class="btn btn-primary">
                <span class="fa fa-plus"></span> NOUVEAU DEFUNT 
            </a>
        </div>
    </div>

</div>
</body>
</html>
Salut,

Du coup ton var_dump($DEFUNT); il donne quoi ? c'est cette ligne ce fetch le problem ? defunt est vide (ou false) ?

regardes si $_GET['id'] est bien rempli avec un vrai ID.

Et petit conseil, utilise des requêtes PREPARER car la, tu ouvres la porte à des injections SQL.

Si je trouve ton site je peux détruire ta base de données.

si dans ton url, je replace la données ID par ";drop database" ou ce genre de connerie.

Il faut gérer bien mieux la sécurité.

Regarder si $_GET['id'] est ISSET c'est bien, mais tu dois aussi vérifier si c'est un nombre réel, et tu dois utiliser ->prepare() pour injecter en sécurité.
Modifié par JENCAL (02 Jan 2023 - 11:55)