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 :

Requête avec GROUP BY [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut Requête avec GROUP BY
    Bonsoir,

    Me revoilà avec une nouvelle question :

    Cette requête fonctionne parfaitement, je peux ainsi imprimer les billets achetés par personne, avec le prix par billet et un total par prix de billet, en sélectionnant la personne dans la page précédente

    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
    SELECT
                    IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
    		Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		Zones.IDZone,
    		Zones.Zone,
    		Prix.IDPrix,
    		Prix.Prix,
    		SUM(Prix.Prix) AS prixbillets,
    		COUNT(Prix.Prix) AS nbillets
     
    		FROM Tab_NumPlace
     
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
     
    		WHERE Personnes.IDPersonne = '".$_REQUEST['idmus']."' AND Concert.IDconcert  = '".$_REQUEST['idpm']."'
    		GROUP BY IDPrix
    		ORDER BY IDPrix
    Voici le résultat, par exemple une personne a acheté 3 billets à 10 euro et 2 billets à 5 euro, j'aurai :

    Fred Machin :
    3 billets à 10 euro = 30 euro
    2 billets à 5 euro = 10 euro
    prix total = 40 euro


    J'ai voulu faire la même chose sans être obligée de sélectionner la personne avant de lancer la requête, c'est-à-dire :

    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
    SELECT
                    IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
    		Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		Zones.IDZone,
    		Zones.Zone,
    		Prix.IDPrix,
    		Prix.Prix,
    		SUM(Prix.Prix) AS prixbillets,
    		COUNT(Prix.Prix) AS nbillets
     
    		FROM Tab_NumPlace
     
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
     
    		WHERE Concert.IDconcert  = '".$_REQUEST['id']."'
    		GROUP BY IDPrix
    		ORDER BY IDPrix

    et là j'obtiens :

    Fred Machin :
    5 billets à : 10 euro = 50 euro
    2 billets à : 5 euro = 10 euro

    Jo Dupont
    5 Billets à : 40 euro = 200 euro

    Jules Durand :
    3 Billets à : 35 euro = 105 euro

    et

    Amélie Truc qui avait deux billets à 10 euro n'apparait pas, ses deux billets ont passé chez Fred Machin qui lui n'en avait acheté que trois et se retrouve avec 5.

    Je soupconne que le problème vient du GROUP BY, mais après avoir testé d'autres possibilités, celle-ci fonctionnait si bien que j'ai voulu l'appliquer sans être obligée de sélectionner les personnes une à une pour imprimer, mais les imprimer toutes d'un seul coup (surtout qu'il peut y en avoir une centaire)

    Comme d'habitude la solution est certainement toute simple pour les experts et très compliquée pour moi

    Merci d'avance pour votre aide précieuse et bonne semaine à tous

  2. #2
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Ca marche !!!

    Voici ce que j'ai fait :

    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
    SELECT
            IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
    		Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		Zones.IDZone,
    		Zones.Zone,
    		Prix.IDPrix,
    		Prix.Prix,
    		SUM(Prix.Prix) AS prixbillets,
    		COUNT(Prix.Prix) AS nbillets
     
    		FROM Tab_NumPlace
     
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
     
    		WHERE Concert.IDconcert  = '".$_REQUEST['id']."'
    		GROUP BY IDPrix, IDPersonne
    		ORDER BY IDPersonne, IDPrix ");
    Maintenant je dois faire un saut de page dans FPDF pour avoir chaque résultat sur une nouvelle page. Une idée ?

    Je vous dis merci même si j'ai trouvé la solution par moi-même, parfois il suffit d'en parler pour y arriver

    Bonne nuit et bonne semaine

  3. #3
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu groupes par personne et par prix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY IDPersonne, IDPrix
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Oui merci, je l'ai fait et effectivement cela fonctionne sauf que je me suis aperçue que je n'arrive pas à séparer les groupes, j'obtiens ceci

    Concert du : 05/03/2017 Cxxx Rxxx 40.--
    1 Billets à : 40.-- = 40.--

    Concert du : 05/03/2017 Cxxx Rxxx 105.--
    3 Billets à : 35.-- = 105.--

    Concert du : 05/03/2017 Axxx Axxx 120.--
    3 Billets à : 40.-- = 120.--

    Concert du : 05/03/2017 Bxxx Axxx 40.--
    1 Billets à : 40.-- = 40.--

    Concert du : 05/03/2017 Jxxx Bxxx 10.--
    1 Billets à : 10.-- = 10.--


    et je voudrais :

    Concert du : 05/03/2017 Cxxx Rxxx Total 145.--
    1 Billets à : 40.-- = 40.--
    3 Billets à : 35.-- = 105.--

    Concert du : 05/03/2017 Axxx Axxx Total 120.--
    3 Billets à : 40.-- = 120.--

    Concert du : 05/03/2017 Bxxx Dxxx Total 40.--
    1 Billets à : 40.-- = 40.--

    Concert du : 05/03/2017 Jxxx Bxxx Total 10.--
    1 Billets à : 10.-- = 10.--

    Merci d'avance et bonne nuit

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Comment est ton code PHP pour cet affichage ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Voici le code, c'est FPDF pour pouvoir imprimer :
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?php
    define("_SYSTEM_TTFONTS", "C:/Windows/Fonts/");
    define('tFPDF_FONTPATH','font/');
    require('tfpdf.php');
     
    require('mysql_table.php');
     
    class PDF extends PDF_MySQL_Table
     
    {
    protected $col = 0; // Colonne courante
    protected $y0;      // Ordonnée du début des colonnes
     
    function Header()
    {
        // En-tête
        global $titre;
     
    }
    }
     
    $pdf=new tFPDF('L','cm','A6');
    $pdf=new tFPDF();
     
    $pdf->AddPage();
     
    $pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
    $pdf->SetFont('DejaVu','',14);
     
    $pdf->SetAutoPageBreak(0,10);
    $pdf->SetLeftMargin(10);
     
    $pdf->SetRightMargin(10);
     
    $pdf->ln(20);
     
    include("include/variables.inc.php");
    $liendb  =  mysql_connect($bddserver,  $bddlogin,  $bddpassword);
    mysql_select_db  ($bdd);
    mysql_set_charset( 'utf8' );
    $id = $_POST['id'];
     
     
    $query=("SELECT
                    IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
    		Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		Zones.IDZone,
    		Zones.Zone,
    		Prix.IDPrix,
    		Prix.Prix,
    		SUM(Prix.Prix) AS prixbillets,
    		COUNT(Prix.Prix) AS nbillets
    		
    		FROM Tab_NumPlace
    		
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
    
    		WHERE Concert.IDconcert  = '".$_REQUEST['id']."'
    		GROUP BY IDPersonne, IDPrix
    		ORDER BY IDPersonne, IDPrix ");
     
     
    $resultat=mysql_query($query, $liendb);
     
     
    while($row=mysql_fetch_array($resultat))
    {
    include('include/var.inc.php');
    $pays = ( PHP_OS == "Windows" ) ? 'fra' : 'fr_FR';
    setlocale ( LC_TIME, $pays ) ;
    $pdf->ln();
    $pdf->SetFont('DejaVu','',14);
    	$pdf->cell(3,4,$cdd,2,0,'L'); //date concert, nom, prix total
    	$pdf->ln(6);
    	$pdf->cell(3,4,$baa,2,0,'L'); // nombre de billets à xxx = xxx
     
     
    $pdf->ln();
     
    }
     
    $pdf->Output();
    ?>
    Voilà ...

    Merci d'avance pour votre aide toujours appréciée et précieuse.

  7. #7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il sort d'où le $cdd ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Avec FPDF, pour pouvoir concaténer plusieurs informations sur la même ligne, l'astuce est de les mettre dans des variables dans un fichier:
    var.inc.php dans un répertoire include

    voici le fichier var.inc.php

    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
    <?php 
     
    $tc =$row['titreconcert'];
     
     
     
    $b =$row['Prenom_Personne'];
    $c =$row['Nom_Personne'];
     
    $e = " "; //un espace
    $ee = "    "; // quatre espaces
     
    $d = $b.$e.$c; // prénom - espace - nom
     
    $ch = "CHF";
    $p =$row['Prix'];
    $t =".--";
     
    $pp =$ch.$e.$p.$t; // CHF - espace - prix - .--
     
    $pt =$row['prixtotal'];
     
    $ptt =$ch.$e.$pt.$t; // CHF - espace - prix total - .--
     
    $n = "Place n° : ";
    $no =$row['NumPlace'];
     
    $np = $n.$no; // Place n° : - numéro de place
     
    $npt = $n.$no.$ee.$ch.$e.$p.$t; // numéro de place - prix total
     
    $tb = $row['prixbillets'];
     
    $ba = "Billets à :    ";
     
    $tba = $ba.$pp.$ee.$ch.$e.$tb.$t; // billets à xxx chf prix total
     
    $eg = "  =  "; // signe égal
     
    $nb = $row['nbillets'];
     
    $baa = $nb.$e.$tba; // nombre de billets à xxx = xxx
     
    $dc = $row['datecon'];
     
    $cd = "Concert du :    ";
     
    $cdd = $cd.$dc.$ee.$d.$ee.$ptt; //date concert, nom, prix total
     
    ?>
    C'est pratique, mais il ne faut pas oublier à quoi cela correspond c'est pourquoi je l'ai un peu documenté sauf pour les lignes évidentes.

    Encore merci de vous pencher sur mon problème.

  9. #9
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    50 lignes de code pour construire 2 chaines ?
    Dans le lot tu as même des étapes qui ne sont pas utilisées comme $np et $eg.
    Si j'enlève tes étapes intermédiaires, ton inclusion se résume à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $baa = $row['nbillets'] . ' ' . 'Billets à :    CHF ' . $row['Prix'] . ' .--    CHF ' . $row['prixbillets'] . '.--';
    $cdd = "Concert du :    ".$row['datecon'].'    ' . $row['Prenom_Personne'] . ' ' . $row['Nom_Personne'] . '    ' .  'CHF ' . $row['prixtotal'] . ' .--';
    que tu peux mettre directement dans ta boucle, l'inclusion ne sert à rien.

    Bon concernant la question de départ, moi je ferrai 2 requêtes :
    - une pour le total par concert
    - une pour le détail des billets classés par concert

    Tu stockes les données du total par concert dans un tableau PHP et quand tu parcoures le détail des billets, tu n'as plus qu'a afficher le total qui correspond au concert de la série de billet que tu vas afficher ensuite.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Merci pour tes conseils, je n'ai pas pu répondre plus tôt car j'étais absente. J'ai utilisé ton code et effectivement c'est plus propre, dorénavant je les écrirai comme cela. Concernant ceux qui ne sont pas utilisé sur cette page ils le sont sur une autre

    Bon concernant la question de départ, moi je ferrai 2 requêtes :
    - une pour le total par concert
    - une pour le détail des billets classés par concert

    Tu stockes les données du total par concert dans un tableau PHP et quand tu parcoures le détail des billets, tu n'as plus qu'a afficher le total qui correspond au concert de la série de billet que tu vas afficher ensuite.
    Merci aussi pour ces conseils, mais je ne sais pas vraiment comment faire

    Si je comprends bien : je fais une requête pour le total par concert
    une pour le détail des billets classés par concert

    jusque là ok je sais faire, après ... je fais comment ? pour stocker les données du total par concert dans un tableau PHP et parcourir le détail des billets, et afficher le total qui correspond au concert de la série de billets à afficher ??? c'est un peu obscur pour moi, c'est certainement simple et évident mais .... si tu pouvais me donner une petit exemple pour me mettre sur la bonne voie

    C'est la dernière ligne droite pour arriver au but et faire ce que ma fille m'a demandé, si j'y arrive le projet sera terminé, il ne me restera que quelques petits détails "cosmétiques" pour les menus et la présentation de l'ensemble. (A moins que ce ne soit pas exactement ce qu'elle voulait ou qu'elle aie une autre idée)

    Merci d'avance et bonne journée

  11. #11
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    schématiquement
    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
    // on construit un tableau avec les infos globales de chaque concert
    $result = mysql_query('SELECT concert_id, datecon, SUM(Prix) as prix_total .... GROUP BY concert_id');
    while ($row = mysql_fetch_assoc($result)) {
        $tblConcert[$row['concert_id']] = $row;
    }
     
    $current_concertId = NULL;
     
    // on lit le détail des billets
    $result = mysql_query('SELECT personne, concert_id, billet ......... ORDER BY concert_id');
    while ($row = mysql_fetch_assoc($result)) {
     
         // quand on arrive sur un concert différent 
         if ($row['concert_id'] !== $current_concertId) {
                 // on affiche les infos de ce concert prises dans le tableau construit avant
                 echo 'Prix Total : '  . $tblConcert[$row['concert_id']]['prix_total'] . '<br/>';
                 $current_concertId = $row['concert_id'];
         }
     
         // puis on affiche les infos des billets venant de la deuxème requête
         echo $row['personne'] .........
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Ouah!!!



    Tu réponds à la rapidité de l'écrair !!!

    Merci je vais essayer et reviendrai pour dire si cela marche

  13. #13
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut


    J'ai essayé avec un minimum d'infos mais cela ne marchait pas avec FPDF, alors j'ai essayé avec une simple page PHP mais cela ne marche pas non plus, il y a certainement quelque chose que je n'ai pas compris ou que j'ai fait de travers, voici ce que j'ai fait avec une simple page PHP

    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
        $result = mysql_query ("SELECT
                    IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,  
                    Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		SUM(Prix.Prix) AS prixtotal,
    		Prix.Prix
    		FROM Tab_NumPlace
     
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
     
    		WHERE Concert.IDconcert  = '1'
       		GROUP BY IDconcert");
     
    while ($row = mysql_fetch_assoc($result)) {
        $tblConcert[$row['IDconcert']] = $row;
    }
     
    $current_IDconcert = NULL;
     
    // on lit le détail des billets
    $result = mysql_query(
    	"SELECT
                    IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
    		Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		Zones.IDZone,
    		Zones.Zone,
    		Prix.IDPrix,
    		Prix.Prix,
    		SUM(Prix.Prix) AS prixbillets,
    		COUNT(Prix.Prix) AS nbillets
    		FROM Tab_NumPlace
     
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
     
    		WHERE Concert.IDconcert  = '1'
    		GROUP BY IDPersonne, IDPrix
    		ORDER BY IDPersonne, IDPrix ");
     
    while ($row = mysql_fetch_assoc($result)) {
     
         // quand on arrive sur un concert différent 
         if ($row['IDconcert'] !== $current_IDconcert) {
                 // on affiche les infos de ce concert prises dans le tableau construit avant
     
                 echo 'Prix Total : '  . $tblConcert[$row['IDconcert']]'<br/>';
     
    				$current_IDconcert = $row['IDconcert'];
     
     
         // puis on affiche les infos des billets venant de la deuxème requête
         echo $row['nbillets']; .........
    	 }}
    ?>
    Je n'ai même pas de message d'erreur, j'ai simplement ceci :

    La page blabla.com ne fonctionne pas

    Impossible de traiter cette demande via blabla.com à l'heure actuelle.
    HTTP ERROR 500

    Une idée ?

    Merci d'avance une fois de plus

  14. #14
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque un point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Prix Total : '  . $tblConcert[$row['IDconcert']] . '<br/>';
    Quand tu as une erreur 500, il faut consulter tes logs d'erreur
    ou demander l'affichage des erreurs depuis le code PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    J'ai bien mis
    error_reporting(E_ALL);
    au début de la page, mais pour éviter de répéter à chaque fois la page entière, je n'ai mis que la partie concernée, mais voici donc la page entière au cas où le problème viendrait du début de la page :

    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php 
    error_reporting(E_ALL); 
    include("include/variables.inc.php");
    $liendb  =  mysql_connect($bddserver,  $bddlogin,  $bddpassword);
    mysql_select_db  ($bdd);
    mysql_set_charset( 'utf8' );
    include('include/var.inc.php');
    $pays = ( PHP_OS == "Windows" ) ? 'fra' : 'fr_FR';
    setlocale ( LC_TIME, $pays ) ;
     
    //$id = $_POST['id'];
     
     
        $result = mysql_query ("SELECT
    	        IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
                    Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		SUM(Prix.Prix) AS prixtotal,
    		Prix.Prix
    		FROM Tab_NumPlace
    		
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
    				
    		WHERE Concert.IDconcert  = '1'
       		GROUP BY IDconcert");
     
    while ($row = mysql_fetch_assoc($result)) {
        $tblConcert[$row['IDconcert']] = $current_IDconcert;
     
    }
     
    $current_IDconcert = NULL;
     
    // on lit le détail des billets
    $result = mysql_query
    	("SELECT 
                    IDNPlace,
    		NumPlace,
    		Reférence,
    		Personnes.IDPersonne,
    		Personnes.Nom_Personne,
    		Personnes.Prenom_Personne,
    		Personnes.Paiement,
    		Personnes.Motet,
    		Instruments.Instrument,
    		Concert.IDconcert,
    		Concert.titreconcert,
    		Concert.lieu,
    		DATE_FORMAT ( Concert.dateconcert, '%d/%m/%Y' ) AS datecon,
    		Zones.IDZone,
    		Zones.Zone,
    		Prix.IDPrix,
    		Prix.Prix,
    		SUM(Prix.Prix) AS prixbillets,
    		COUNT(Prix.Prix) AS nbillets
    		FROM Tab_NumPlace
    		
    		INNER JOIN Personnes ON Tab_NumPlace.IDPersonne = Personnes.IDPersonne
    		INNER JOIN Instruments ON Personnes.IDInstruments = Instruments.IDInstruments
    		INNER JOIN Concert ON Tab_NumPlace.IDconcert = Concert.IDconcert 
    		INNER JOIN Zones ON Tab_NumPlace.IDZone = Zones.IDZone 
    		INNER JOIN Prix ON Zones.IDPrix = Prix.IDPrix
    
    		WHERE Concert.IDconcert  = '1'
    		GROUP BY IDPersonne, IDPrix
    		ORDER BY IDPersonne, IDPrix ");
     
    while ($row = mysql_fetch_assoc($result)) {
     
         // quand on arrive sur un concert différent 
         if ($row['IDconcert'] !== $current_IDconcert) {
                 // on affiche les infos de ce concert prises dans le tableau construit avant
     
                 	echo 'Prix Total : '  . $tblConcert[$row['IDconcert']] . '<br/>';
    				$current_IDconcert = $row['IDconcert'];
     
     
         // puis on affiche les infos des billets venant de la deuxème requête
    		echo $row['nbillets'];
    		echo $row['prixbillets'];
     
    	 }}
    ?>
    toutefois margré le "error_reporting(E_ALL);" il ne m'affiche pas d'erreur

    J'ai remplacé la ligne où il manquait le point mais ça ne marche toujours pas

    Merci pour ta patience

  16. #16
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu as toujours l'erreur 500, consulte tes logs pour qu'on ait l'erreur
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Je veux bien mais je fais ça comment ?

  18. #18
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca dépend de ton hébergeur, il faudrait voir avec lui.

    Tu peux essayer de mettre au début du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('display_errors', 1);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Je n'ai pas cette erreur sur mes autres pages. Seulement sur celle-ci !?!
    J'en conclu que c'est cette page qui pose problème.

    Je ne comprends plus rien,

    Je réessaye avec FPDF mais ce n'est pas évident avec deux requêtes SQL

    Encore une fois merci et bonne soirée

  20. #20
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui c'est bien le code qui pose problème mais a vue d'oeil je ne sais pas dire ce qui cloche. Avec le message d'erreur PHP ça serait plus simple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Syntaxe d'une requête avec GROUP
    Par gvdmoort dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/10/2006, 15h10
  2. Requête avec Group by sur Oracle 8i
    Par madina dans le forum Oracle
    Réponses: 14
    Dernier message: 16/06/2006, 12h41
  3. requête avec group by...
    Par JerBi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/03/2006, 03h17
  4. Problème requête avec group by et distinct
    Par tomca dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2005, 16h10
  5. requête avec group by
    Par Staron dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/11/2004, 16h30

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