IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Groupement et FPDF [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut Groupement et FPDF
    Bonjour à tous :
    voilà je débute en php et je suis coincé par ce pb :
    je voudrais créer une fonction renvoyant un array avec les différents champs d'une table afin de créer un regroupement par date et surtout de pouvoir rajouter une ligne dans un report fpdf avant d'afficher les données d'une date.
    je suis pas trés clair mais je pourrais mettre ma source code si besoin
    Merci des conseils à l'avance
    jean-michel

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    une fonction renvoyant un array avec les différents champs d'une table afin de créer un regroupement par date
    Ca pourrait ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $result = mysql_query("SELECT champA, champB, champDate FROM table");
    while ($row = mysql_fetch_assoc($result)) {
    $tableau[$row['champDate']][] = $row
    }
    pouvoir rajouter une ligne dans un report fpdf
    La je ne vois pas ce que tu veux dire.
    Ca ne serait pas plutot ajouter une ligne dans la base de donnée ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    ok sabotage, bjr et merci de ta réponse
    ce que je voudrais faire avec fpdf ressemble à cela :

    lundi 1er janvier 2009

    date heure fonctionnaire identite
    01-01-2009 11:00 Dupont Durand etc....
    01-01-2009 11:06 Martin Trucmuche etc...

    mardi 2 janvier 2009
    02-01-2009 10:00 Durand Dupond etc...

    .....

    avec un group by date, pas de pb, mais en utilisant fpdf il me faut creer une rupture pour ajouter une "cell" avec la date en question. Là, probleme car il faut connaitre la date avant affichage des données et donc ranger les données dans un array pour l'exploiter et ça je sais pas faire !

    merci d'avance ( je vais joindre mon code ce sera plus clair ! )

    Voilà mon code ( qui fonctionne..) mais que je ne peux transposer sur fpdf !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    <?php
    mysql_connect('localhost','root','') or die("ERROR DATABASE CONNECTION");
    mysql_select_db('REGISTRE') or die("DATA SELECTION ERRROR");
    ?>
     
    <?php
    function render($record) {
      $output = "<tr>\n";
      $record->date_arrivee= changedateusfr($record->date_arrivee);
      $output .= "<td>{$record->date_arrivee}</td>\n";
      $output .= "<td>{$record->heure_arrivee}</td>\n";
      $output .= "<td>{$record->fonctionnaire}</td>\n";
      $output .= "<td>{$record->identite}</td>\n";
      $output .= "</tr>\n";
      return $output;
    }
     
    function changedateusfr($dateus) 
    { 
    $datefr=$dateus{8}.$dateus{9}."-".$dateus{5}.$dateus{6}."-".$dateus{0}.$dateus{1}.$dateus{2}.$dateus{3}; 
    return $datefr; 
    } 
     
    function changedatefrus($datefr) 
    { 
    $dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1}; 
    return $dateus; 
    } 
    ?>
     
    <?php
    setlocale (LC_ALL, "fr_fr","fra");
    $result = mysql_query("SELECT id,date_arrivee, heure_arrivee, fonctionnaire,identite FROM fiche ORDER BY date_arrivee DESC,heure_arrivee ASC ");
     
    $set = array();
    while ($record = mysql_fetch_object($result)) {
      $set[$record->date_arrivee][] = $record;
    }
    mysql_free_result($result);
     
     
    foreach ($set as $date_arrivee => $records) {
    $date_arrivee=changedateusfr($date_arrivee) ;
    $date_arrivee=strftime("%A %d %B %Y",strtotime($date_arrivee));
     
      print "<table border=\"1\">\n";
     
      print "<tr>Journée du {$date_arrivee}</tr>";
      print "<tr><th>Date arrivee</th><th>Heure arrivee</th> <th>Fonctionnaire</th><th>Identite</th></tr>\n";
      foreach ($records as $record) {
      print render($record);
      }
      print "</table>\n<br>";
     
    }
    ?>
    en fait mon souci c est de pouvoir créer un array que retournerait la fonction "render($record) : pour l instant elle ne me retourne que des lignes que je ne peux décomposer
    merci d avance

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu as envisagé d'utiliser mysql_fetch_array ou mysql_fetch_assoc à la place de mysql_fetch_row?
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    bonjour Celira
    merci de ton aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $set = array();
    while ($record = mysql_fetch_object($result)) {
      $set[$record->date_arrivee][] = $record;
    }
    c'est dans cette partie, je présume ?
    je ne vois pas trop bien ce que je pourrais faire avec mais j essaye bien sûr !
    mon souci en fait est pouvoir "decortiquer" le retour de la fonction 'render($record)' avec chaque champ de la base:mais bien entendu encore faudrait-il adapter cette fonction, et là je ne sais pas!
    merci de ton aide

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    mysql_fetch_objet renvoie une ligne de résultat sous la forme d'un objet avec les champs comme attributs. mysql_fetch_assoc renvoie une ligne de résultat sous la forme d'un array avec les champs comme index, ce qui est exactement ce que tu demandes.

    Ou alors c'est que je n'ai pas compris ce que tu cherches à obtenir comme résultat.
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    Merci Celira, impeccable avec _fetch_assoc
    par contre il me faut 'repenser' la fonction d'affichage, mais ce sera moins dur que le probléme que j avais.
    Merci de ta piste, qui j'espére me conduira à la solmution !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    Ok, de retour je remercie Celira (et Sabotage) du coup de main :
    voilà question réglée, j ai réussi à modifier avec vos conseils mon code et maintenant je peux exporter avec fpdf et le tri par date se fait.
    le code rectifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?php
    mysql_connect('localhost','root','') or die("ERROR DATABASE CONNECTION");
    mysql_select_db('REGISTRE') or die("DATA SELECTION ERRROR");
     
     
     
    require('fpdf.php');
     
    function render($row) {
      $output = "<tr>\n";
      $row->date_arrivee = changedateusfr($row->date_arrivee);
      $output .= "<td> {$row->date_arrivee}</td>\n";
      $output .= "<td>{$row->heure_arrivee}</td>\n";
      $output .= "<td>{$row->fonctionnaire}</td>\n";
      $output .= "<td>{$row->identite}</td>\n";
      $output .= "</tr>\n";
      return $output;
    }
     
     
     
    function changedateusfr($dateus) 
    { 
    $datefr=$dateus{8}.$dateus{9}."-".$dateus{5}.$dateus{6}."-".$dateus{0}.$dateus{1}.$dateus{2}.$dateus{3}; 
    return $datefr; 
    } 
     
    function changedatefrus($datefr) 
    { 
    $dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1}; 
    return $dateus; 
    } 
     
    //Titres des colonnes
    $header=array('Date','Heure');
     
     
    setlocale (LC_ALL, "fr_fr","fra");
    $result = mysql_query("SELECT id,date_arrivee, heure_arrivee, fonctionnaire,identite,motif,objet,destinataire FROM fiche order BY date_arrivee DESC");
     
     
     
    $set = array();
     
    while ($row = mysql_fetch_object($result)) {
    $set[$row->date_arrivee][] = $row;
     
    }
     
    mysql_free_result($result);
     
    $pdf=new FPDF('L','cm','A4');
    $pdf->setleftmargin(2.5);
    $pdf->AddPage();
    $pdf->SetFont('Arial','',10);
    $pdf->setfillcolor(235);
    foreach ($set as $date_arrivee => $records) {
     
    $date_arrivee=changedateusfr($date_arrivee) ;
    $date_arrivee=strftime("%A %d %B %Y",strtotime($date_arrivee));
     
     
     
     
    $pdf->ln(0.5);
    $pdf->cell(25,0.7, "Journée du {$date_arrivee}",1,1,'C',true);
    //en tête des colonnes
    for($i=0;$i<sizeof($header);$i++)
    $pdf->cell(2,0.5,$header[$i],1,0,'C',1);
    $pdf->ln(0.5);
     
    foreach ($records as $row) {
     
    $pdf->cell(2,0.7,changedateusfr($row->date_arrivee),1,0,'C');
    $pdf->cell(2,0.7,"$row->heure_arrivee\n",1,0,'C');
    $pdf->cell(5,0.7,"$row->fonctionnaire",1,0,'C');
    $pdf->cell(4,0.7,"$row->identite",1,0,'C');
    $pdf->cell(4,0.7,"$row->motif",1,0,'C');
    $pdf->cell(4,0.7,"$row->objet",1,0,'C');
    $pdf->cell(4,0.7,"$row->destinataire",1,1,'C');
     
    }
    }
     
    $pdf->Output();
     
    ?>
    Merci encore Celira, au plaisir !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR9] groupement en deux colonnes
    Par wargre dans le forum SAP Crystal Reports
    Réponses: 10
    Dernier message: 13/06/2006, 11h11
  2. [FPDF] Comment mettre une annotation sur un Pdf déjà existant en PHP
    Par shequet dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/09/2005, 12h23
  3. [FPDF] Rechercher dans des pdf
    Par snike dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/09/2005, 10h58
  4. [FPDF] Cellule sans bordure en haut et en bas
    Par nebule dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/12/2004, 17h07
  5. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo