Bonjour,
merci d'avoir pris le temps de répondre à mon problème !
Donc non je ne mélange pas tous, puisqu'en amont, je traite mon formulaire (test sur tous les champs requis, affichage des éventuels erreurs), Ensuite je redirige vers une page avec des messages de succès.
Alors peut être que je ne génère pas mon pdf au bon moment, d'ailleurs, je ne souhaites pas l'enregistrer, ni en base, ni sur le dd. Dès que l'utilisateur valide le formulaire, le pdf est généré puis envoyé par email, c'est une sorte de confirmation avec le résumé de ce qui a été dit dans le formulaire.
En fait le site est déjà fait, mais pas avec une architecture mvc, c'est pour ça que je reprend tous pour le faire avec codeigniter.
je mets le code de la fonction dans mon contrôler, peut être que ça peut aider à y voir plus clair.
function inter_new()
{
if (!$this->session->userdata('log_admin')) {
redirect('ct/log_admin');
}
$this->form_validation->set_rules('ticket', 'Ticket', 'trim|required|xss_clean');
$this->form_validation->set_rules('dinter', 'Date d\'intervention', 'trim|required|xss_clean');
$this->form_validation->set_rules('tech', 'Technicien', 'trim|required|xss_clean');
$this->form_validation->set_rules('ferme', 'Fermer le ticket', 'trim|xss_clean');
$this->form_validation->set_rules('garantie', 'Garantie', 'trim|xss_clean');
$this->form_validation->set_rules('description', 'Intervention', 'trim|required|xss_clean');
if ($this->form_validation->run()) {
$this->load->model('ct_model');
if(!isset($_POST['ferme'])){
$etat = 0;
}else{
$etat = 1;
}
if(!isset($_POST['garantie'])){
$garant = 0;
}else{
$garant = 1;
}
$data = array(
'IDTicket'=>$_POST['ticket'],
'DateInter'=>$this->ct_model->convertDate($_POST['dinter']),
'DescrInter'=>$_POST['description'],
'IDCapecom'=>$_POST['tech']
);
$this->ct_model->insertInter($data);
$data = array(
'Etat'=> $etat,
'Garantie'=> $garant,
'Inter'=>1
);
$this->ct_model->update_ticket($_POST['ticket'], $data);
$NameFile= 'files/inter/inter-'.date("HisdmY").'.pdf';
$this->load->helper(array('dompdf', 'file'));
// page info here, db calls, etc.
$data['client'] = $this->ct_model->getClientTicket($_POST['ticket']);
$html = $this->load->view('admin/pdf/inter_pdf', $data, true);
var_dump($html);
pdf_create($html, $NameFile);
$data['success'] = 'L\'intervention a bien été enregistrée, le détail sera envoyé au client.';
$data['table'] = $this->ct_model->getInter(0, 9);
$this->load->view('admin/inter/table', $data);
}else{
$this->load->model('ct_model');
$data['table'] = $this->ct_model->getTicket(0);
$data['tech'] = $this->ct_model->getTech();
$this->load->view('admin/inter/new', $data);
}
}
et voici le code de l'ancienne version
<?php
require '../../config/config.inc.php';
/************ HEADER ************/
include("../includes/header.php");
if(isset($_POST['valid']))
{
function convertDate($date)
{
$tabDate = explode('/' , $date);
$enDate = $tabDate[2].'-'.$tabDate[1].'-'.$tabDate[0];
return $enDate;
}
//récupération des valeurs des champs
$touvert = $_POST['ticket'];
$dateinter = $_POST['dinter'];
$tech = $_POST['tech'];
$ferme = $_POST['ferme'];
$garantie = $_POST['garantie'];
$description = $_POST['description'];
//creation de la requete sql
$sql5 = $cnx->query('INSERT INTO inters(IDInter, IDTicket, DateInter, DescrInter, IDCapecom, DateNow) VALUES ("", "'.$touvert.'", "'.convertDate($dateinter).'", "'.$description.'", "'.$tech.'", curdate())') or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
//update table ticket
$sql = "UPDATE tickets
SET Garantie ='$garantie',
Etat ='$ferme',
Inter = 1
WHERE IDTicket ='$touvert'";
//execution de la requete sql
$res = $cnx->query($sql) or die('Erreur SQL!<br>'.$sql.'<br>'.mysql_error());
//affichage des resultats, pour savoir si la modif à marchée:
if($res)
{?>
<p class="text-success bg-success">Vous avez mis à jour la liste des tickets pour voir la modification cliquez <a href="../gticket/TBGticket.php">ici</a>, ou retournez dans la gestion des <a href="TBGinter.php">interventions !</a></p>
<?php }else {?>
<p class="text-danger bg-danger">La modification à échouée, <a href="TBGinter.php">Retour</a></p>
<?php }
//envoi du pdf pour confirmation de l'intervention:
//génération pdf + envoi par mail en pj
$client = $cnx->query("SELECT Nom, Adresse1, CodePostal, Ville FROM clients
INNER JOIN utilisateurs ON utilisateurs.IDClient = clients.IDClient
INNER JOIN tickets ON tickets.IDUtilisateur = utilisateurs.IDUtilisateur
WHERE tickets.IDTicket =".$touvert) or die('Erreur SQL!<br>'.$client.'<br>'.mysql_error());
$row = $client->fetch(PDO::FETCH_ASSOC);
$nom = $row['Nom'];
$adresse1 = $row['Adresse1'];
$cp = $row['CodePostal'];
$ville = $row['Ville'];
$ticket = $cnx->query("SELECT DateNow, ProblemeIDTF, NomUser, Email, NomSite FROM tickets, utilisateurs, sites
WHERE tickets.IDUtilisateur = utilisateurs.IDUtilisateur AND tickets.IDSite = sites.IDSite AND IDTicket='".$touvert."'") or die('Erreur TICKET!<br>'.$ticket.'<br>'.mysql_error());
$row2 = $ticket->fetch(PDO::FETCH_ASSOC);
$demandeur = $row2['NomUser'];
$datenow = $row2['DateNow'];
$probleme = $row2['ProblemeIDTF'];
$site = $row2['NomSite'];
$capecom = $cnx->query("SELECT Nom FROM utilisateurcapecom WHERE IDCapecom = '".$tech."'") or die('Erreur TICKET!<br>'.$capecom.'<br>'.mysql_error());
$row3 = $capecom->fetch(PDO::FETCH_ASSOC);
ob_start();
?>
<style type="text/css">
table{width:100%; vertical-align: top; font-family: helvetica; font-weight: 12px; line-height: 6mm; padding: 10mm 5mm;}
h2{color: #092B35; font-size: 18px;}
strong{font-size: 14px; }
</style>
<page>
<table>
<tr>
<td style="width:50%"><img style="margin-bottom: 10px" src="../../images/logo.png"/><br>
27, Rue des Garennes<br>
57155
Marly<br>
Tél. 03 87 63 56 73<br>
Fax 03 87 55 03 01
</td>
<td style="width:50%; text-align: right"><h2><?php echo $nom;?></h2>
<?php echo $adresse1;?><br>
<?php echo $cp;?><br>
<?php echo $ville;?>
</td>
</tr>
</table>
<table style="line-height: 10mm">
<tr>
<td style="width: 100%; text-align:center; border:1px solid #000; padding:0"><h3>Support technique</h3></td>
</tr>
<tr>
<td><strong>Objet: Intervention du : <?php echo $dateinter ?></strong></td>
</tr>
<tr><td><br></td></tr>
<tr>
<td><strong>Résumé du ticket ouvert :<br></strong></td>
</tr>
<tr>
<td>
Demandeur : <?php echo $demandeur; ?><br>
Date du problème : <?php echo date("d/m/Y", strtotime($datenow));?><br>
Site : <?php echo $site;?><br>
Problème rencontré : <?php echo $probleme;?><br><br>
</td>
</tr>
<tr>
<td><strong>Résumé de l'intervention :<br></strong></td>
</tr>
<tr>
<td>
Interventon sur le ticket n°<?php echo $touvert; ?><br>
Date d'intervention : <?php echo $dateinter ;?><br>
Technicien : <?php echo $row3['Nom']; ?><br>
Description : <?php echo $description;?><br>
<?php
if($garantie == 1)
{?>
Garantie : Oui<br>
<?php }else {?>
Garantie : Non<br>
<?php }
if($ferme == 1)
{?>
Etat du ticket : ouvert<br>
<?php }else {?>
Etat du ticket : Fermé<br>
<?php }
?>
</td>
</tr>
</table>
</page>
<?php
$contentPDF = ob_get_clean();
try{
//convertion HTML => PDF
require_once('../../html2pdf/html2pdf.class.php');
require_once('../../pjmail/pjmail.class.php');
$pdf =new HTML2PDF('P', 'A4', 'fr');
$pdf ->writeHTML($contentPDF);
$content_pdf = $pdf ->Output('Intervention.pdf', true);
//Envoie du PDF par email
$mail = new PJmail();
$mail->setAllFrom('test@email.fr', "Support technique");
$mail->addrecipient($row2['Email']);
$mail->addcc('test@email.fr');
$mail->addsubject("Ticket du ".$dateinter);
$mail->text = "Voici le rapport d'intervention pour le ticket que vous avez ouvert sur le site http://support.capecom.fr";
$mail->addbinattachement('Intervention.pdf', $content_pdf);
echo $mail->sendmail();
}catch(HTML2PDF_exception $e){
die($e);
}
}else {?>
<div id="contenue" class="row contenue-tablaux">
<?php if(isset($_GET['err']))
{?>
<div class="text-center col-lg-12"><?php
if($_GET['err'] == 1)
{?>
<p class="text-success bg-success"><small>Vous venez de valider une intervention !!</small></p><?php
}?>
</div><?php
}?>
<h2 class="text-center">Ouvrir une intervention</h2><br>
<div class="col-lg-6 coll-xs-12 col-lg-offset-2 col-xs-offset-0">
<form action="" method="post" class="form-horizontal" name="intervention">
<div class="form-group">
<label for="ticket" class="col-sm-4 control-label">Tickets ouvert :</label>
<div class="col-sm-8">
<select name="ticket" id="ticket" class="form-control" size="1" />
<option selected value="0">Liste des tickets disponible...</option>
<?php
$reponse = $cnx->query('SELECT IDTicket, DateNow, NomUser FROM tickets, utilisateurs WHERE tickets.IDUtilisateur = utilisateurs.IDUtilisateur AND Etat = 1 AND Inter = 0 ORDER BY DateNow') or die('Erreur SQL!<br>'.$reponse.'<br>'.mysql_error());
while ($donnees = $reponse->fetch())
{?>
<option value="<?php echo $donnees['IDTicket']; ?>"> <?php echo $donnees['DateNow']." ".$donnees['NomUser']; ?></option>
<?php }?>
</select>
</div><!-- LISTE TICKETS -->
</div><!-- FORM-GROUPE -->
<div class="form-group">
<label for="date" class="col-sm-4 control-label">Date d'intervention :</label>
<div class="col-sm-8">
<input type="text" name="dinter" class="form-control" id="datepicker"/>
</div><!-- DATE INTER -->
</div><!--FORM-GROUPE-->
<div class="form-group">
<label for="tech" class="col-sm-4 control-label">Technicien :</label>
<div class="col-sm-8">
<select name="tech" class="form-control" id="tech" size="1"/>
<option selected>Liste des techniciens Capecom...</option>
<?php
$sql1 = $cnx->query('SELECT IDCapecom, Nom, Prenom FROM utilisateurcapecom ORDER BY Nom') or die('Erreur SQL!<br>'.$sql1.'<br>'.mysql_error());
while ($row1 = $sql1->fetch(PDO::FETCH_ASSOC))
{?>
<option value="<?php echo $row1['IDCapecom']; ?>"> <?php echo $row1['Nom']." ".$row1['Prenom']; ?></option>
<?php }?>
</select>
</div><!-- TECHNICIEN -->
</div><!-- FORM-GROUPE -->
<div class="form-group">
<label for="ticketouvert" class="col-sm-4 control-label">Fermer le ticket :</label>
<div class="btn-group col-sm-8" data-toggle="buttons">
<label for="true" class="btn btn-success **active**">
<input type="radio" name="ferme" id="true" value="0" checked>
Oui</label>
<label for="false" class="btn btn-danger **active**">
<input type="radio" name="ferme" id="false" value="1" checked>
Non</label>
</div><!-- FERMER LE TICKET-->
</div><!-- FORM-GROUPE-->
<div class="form-group">
<label for="garantie" class="col-sm-4 control-label">Garantie :</label>
<div class="btn-group col-sm-8" data-toggle="buttons">
<label for="true" class="btn btn-success **active**">
<input type="radio" name="garantie" id="true" value="1" checked>
Oui</label>
<label for="false" class="btn btn-danger **active**">
<input type="radio" name="garantie" id="false" value="0" checked>
Non</label>
</div><!-- GARANTIE -->
</div><!-- FORM-GROUPE-->
<div class="form-group">
<label for="description" class="col-sm-4 control-label">Intervention :</label>
<div class="col-sm-8">
<textarea name="description" class="form-control" cols="50" size="30"></textarea>
</div><!-- DESCRIPTION -->
</div><!-- FORM-CONTROL -->
<div class="col-sm-offset-4 bouton-perso">
<button type="submit" name="valid" class="btn btn-success">Envoyer</button>
</div>
</form>
</div>
</div><!-- Contenue -->
<?php } ?>
</div><!-- Container contenue -->
<?php
/************ FOOTER ************/
include("../includes/footer.php");
?>