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 :

Besoin d'aide pour la création des boucle [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut Besoin d'aide pour la création des boucle
    Bonjour,

    J'ai du revoir une partie de mes codes, voila aujourd'hui je dois mettre en place une boucle pour la récupération et le traitement de mes resultat issus de deux bases de données.
    Les deux base concernées sont facture et relance
    voici la structure
    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
     
    -- phpMyAdmin SQL Dump
    -- version 3.2.0.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Dim 28 Février 2010 à 18:50
    -- Version du serveur: 5.1.36
    -- Version de PHP: 5.3.0
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Base de données: `dus`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `facture`
    --
     
    CREATE TABLE IF NOT EXISTS `facture` (
      `id_numero` varchar(7) NOT NULL,
      `f_facture` varchar(14) NOT NULL,
      `intitule` varchar(60) NOT NULL,
      `montant` double NOT NULL,
      `session` tinytext NOT NULL,
      `date_fact` varchar(20) NOT NULL,
      `date_echeance` varchar(20) NOT NULL,
      `type_fact` varchar(15) NOT NULL,
      `annee` varchar(5) NOT NULL,
      PRIMARY KEY (`f_facture`),
      UNIQUE KEY `facture` (`f_facture`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `relance`
    --
     
    CREATE TABLE IF NOT EXISTS `relance` (
      `id_numero` varchar(7) NOT NULL,
      `f_facture` varchar(14) NOT NULL,
      `date` varchar(10) NOT NULL,
      KEY `f_facture` (`f_facture`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Voila, dans la récupération des données sur les deux table je dois faire un count sur les date par facture afin de déterminer le nombre de relance qui a été effectué a priori seulement avec un for on peux le faire.

    Comme je suis pas doué a ce niveau j'espère avoir un peux d'aide ici.

    J'ai commencer a mettre en place une parti du code mais la je bloque

    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
     
     
    <?php
     
    include ('../inc/inc_connexion.php');
    $date="";
     
    $requete="SELECT relance.f_facture, COUNT(relance.f_facture) AS relance, facture.id_numero, relance.date, facture.intitule, facture.montant, facture.date_fact, facture.date_echeance, facture.montant FROM relance,facture
    WHERE facture.f_facture = relance.f_facture";
     
     $resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
     
     $i = 0;
     
    $stock_date ="";
     
    $j = sizeof($resultat)
     
     	for ($i = 0; $i < $j; $i++) 
    		{
     
    	echo $i.'-'.$resultat[$i].'<br />';
     
    		}
    C'est a ce niveau que je bloque au niveau de l'affichage

    Je vous remerci de votre aide

    Runcafre91

  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
    La bonne facon de faire est dans le doc :
    http://php.net/manual/fr/function.mysql-fetch-assoc.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Si j'ai bien compris ta problematique je ferai quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $resultat = mysql_query('SELECT * FROM facture INNER JOIN relance ON facture.f_facture=relance.f_facture');
     
    while($ligne = mysql_fetch_assoc($resultat)){
     
        $resultat2 = mysql_query('SELECT count(*) FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
        while($ligne2 = mysql_fetch_assoc($resultat2))
             $nb_relances = $ligne2['count(*)']; 
     
    echo 'la facture '.$ligne['f_facture'].' contient '.$nb_relances.'<br />';
     
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Si j'ai bien compris ta problematique je ferai quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $resultat = mysql_query('SELECT * FROM facture INNER JOIN relance ON facture.f_facture=relance.f_facture');
     
    while($ligne = mysql_fetch_assoc($resultat)){
     
        $resultat2 = mysql_query('SELECT count(*) FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
        while($ligne2 = mysql_fetch_assoc($resultat2))
             $nb_relances = $ligne2['count(*)']; 
     
    echo 'la facture '.$ligne['f_facture'].' contient '.$nb_relances.'<br />';
     
    }
    Bonsoir,

    Merci de votre réponse c'est en parti la solution a mon problème, ici j'ai le nombre de relance par facture, mais je souhait les affiché en ligne via un tableau et du coup une facture par ligne avec les relances concerné.

    C'est pour cela que je veux mettre en place une boucle qui dans un premir temps il me donne le nombre de relance par facture et dans un second temps je les affiche ligne par ligne avec les diférente date


    Runcafre91

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    il suffit alors de remplacer le count(*) par * et tu accèdes à tous tes champs. Qu'est ce qui te poses problème ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    il suffit alors de remplacer le count(*) par * et tu accèdes à tous tes champs. Qu'est ce qui te poses problème ?
    Bonjour,

    Ce que je cherche a faire c'est un tableau associatif (voir pièce joint) avec l'afichage de chaque facture en ligne avec les différentes date.
    Car dans m atable relance, la facture apparait plusieurs fois avec des dates différent, en faisant le count j'ai le nombre de date, en mettant en ligne je dois pouvoir visualiser ces trois dates

    Je ne sais pas trop si j'ai été précis

    Merci de votre aide

    Runcafre91

  7. #7
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Tu fais tout dans la même requête cad les champs que tu veut dans le select en premier par exemple, puis là tu les récupères en tableau associatif et ensuite le count (en indexé).

    La requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat2 = mysql_query('SELECT champ1, champ2, ..., count(f_facture) FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Fench Voir le message
    Bonjour,

    Tu fais tout dans la même requête cad les champs que tu veut dans le select en premier par exemple, puis là tu les récupères en tableau associatif et ensuite le count (en indexé).

    La requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat2 = mysql_query('SELECT champ1, champ2, ..., count(f_facture) FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
    Re,

    J'ai récupére les valeur que je voulais mais pour la deuxième parti ce n'est pas le cas
    J'ai du rajouté un Group by afin d'avoir qu'une ligne par facture dans ma requete

    ci-dessous le code

    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
     
     
    <?php
    session_start ();
    ?>
     
    <?php
     
    include ('../inc/inc_connexion.php');
     
    $resultat = mysql_query('SELECT * FROM facture INNER JOIN relance ON facture.f_facture=relance.f_facture GROUP BY facture.f_facture');
     
    while($ligne = mysql_fetch_assoc($resultat)){
     
    $resultat2 = mysql_query('SELECT id_numero, date, count(f_facture) as nb_relances FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
    $id = addslashes($ligne['id_numero']);
    $intitule = htmlentities($ligne['intitule']);
    $montant = addslashes($ligne['montant']);
    $date_fact = addslashes($ligne['date_fact']);
    $date_echeance = addslashes($ligne['date_echeance']);
     
     
      //  $resultat2 = mysql_query('SELECT count(*) FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
        while($ligne2 = mysql_fetch_assoc($resultat2))
             $nb_relances = $resultat2['relance']; 		 
     
     
    echo ''.$id.' - '.$ligne['f_facture']. ' -  '.$intitule.' - '.$montant.' - '.$date_fact.' - '.$date_echeance.'<br />';
     
    }
     
    ?>
     
    il me reste à récupére le nombre de relance par facture et les date en ligne
     
    Runcafre91

  9. #9
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Tu es sûr de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nb_relances = $resultat2['relance'];
    C pas nb_relances comme index ?

    ça c pour le nombre de relances mais pour les dates en lignes (kesaco !!)

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par Fench Voir le message
    Tu es sûr de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nb_relances = $resultat2['relance'];
    C pas nb_relances comme index ?

    ça c pour le nombre de relances mais pour les dates en lignes (kesaco !!)
    Re,

    C'est bien nb_relances que j'avais oublié de modifier ce champs
    Pour l'instant cela n'a pas changé grand chose.

    Toute la partie relance me pose problème je vois pas trop comment le traiter
    du coups j'ai avancer un peux sur la mise en place de ma présentation via un tableau.
    En fait de compte le problème se pose a deux niveaux :
    - Le calcul du nombre de relance
    - la récupération des date de relance sur une seule ligne

    Ci-joint la modification et la mise en place du tableau récapitulatif
    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
     
     
    <?php
    session_start ();
    ?>
     
    <?php
     
    include ('../inc/inc_connexion.php');
     
    $lignes = "<table BORDER=1 BORDERCOLOR=#CCCCCC BGCOLOR=#fffccc CELLSPACING=0 CELLPADDING=1 WIDTH=98% ALIGN=left font-family:Verdana size=10px>
    			<td bgcolor='#669999'><b><u>Numero</u></b></td>
    			<td bgcolor='#669999'><b><u>Facture</u></b></td>
    			<td bgcolor='#669999'><b><u>Libelle</u></b></td>		
    			<td bgcolor='#669999'><b><u>Montant</u></b></td>
    			<td bgcolor='#669999'><b><u>Date facture</u></b></td>
    			<td bgcolor='#669999'><b><u>Date echeance</u></b></td>
    			<td bgcolor='#669999'><b><u>Relance</u></b></td>
    			<td bgcolor='#669999'><b><u>L 01</u></b></td>
    			<td bgcolor='#669999'><b><u>L 02</u></b></td>
    			<td bgcolor='#669999'><b><u>L 03</u></b></td>
    			<td bgcolor='#669999'><b><u>L 04</u></b></td></tr>";
     
    $resultat = mysql_query('SELECT * FROM facture INNER JOIN relance ON facture.f_facture=relance.f_facture GROUP BY facture.f_facture');
     
     $total = 0;	
    $mont = 0;
     
    while($ligne = mysql_fetch_assoc($resultat))
    	{
     
    $resultat2 = mysql_query('SELECT id_numero, date, count(f_facture) as nb_relances FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
    $id = addslashes($ligne['id_numero']);
    $facture = $ligne['f_facture'];
    $intitule = htmlentities($ligne['intitule']);
    $montant = addslashes($ligne['montant']);
    $date_fact = addslashes($ligne['date_fact']);
    $date_echeance = addslashes($ligne['date_echeance']);
     
    $mont = addslashes($ligne['montant']);
    $total += $mont;
     
     
      //  $resultat2 = mysql_query('SELECT count(*) FROM relance WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
        while($ligne2 = mysql_fetch_assoc($resultat2))
             $nb_relances = $resultat2['nb_relances']; 	
     
    echo $nb_relances;
     
    $lignes .= "<tr>
    						<td><a href='relance_01.php?numero=$id' target='_self'>".$id."</a></td>
    						<td>".$facture."</td>
    						<td>".$intitule."</td>
    						<td align='right'>".$montant."</td>
    						<td align='center'>".$date_fact."</td>
    						<td align='center'>".$date_echeance."</td>
    						<td align='center'>".$nb_relances."</td></tr>"; 
     
    	}
     
    	$lignes .= "<tr><td colspan='3'>Montant total </td><td align='right'>".$total."</td></tr>";	
     
    echo $lignes;
     
     mysql_free_result($resultat);
     
    ?>
    La dessus je seche, j'ai aussi une contraite de temps c'est pour cela j'essaie de voir un peux dans tout les sens

    J'ai fais un écho sur $nb_relances, j'ai un résultat null en principe je dois avoir quelque chose car j'ai rentré des date en base pour des tests


    Runcafre91

  11. #11
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bon, j'ai pu prendre une petite quinzaine de minutes pour bien regarder ton problème.

    En fait, d'après ce que j'ai compris et d'après la miniature que tu as posté, tu n'as besoin de te compliqué la vie à ce point là.

    Je vais reprendre ton code avec des commentaires pour mieux comprendre MAIS avant tout voici les grandes lignes du code.
    1) Parcours de la table des factures ligne à ligne (cf ta miniature)
    2) Calcul du nombre de relance sur la même ligne
    3) ajout des dates de relances sur la même ligne (le plus compliqué niveau html et encore )

    Le code:
    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
     
    <?php
    session_start ();
    include ('../inc/inc_connexion.php');
     
    // Ce bout de code reste le même, je vérifie pas
    $lignes = "<table BORDER=1 .... </u></b></td></tr>";
     
     
    // Résolution du 1) des grandes lignes 
    $resultat = mysql_query('SELECT * FROM facture');
    $total = 0;  $mont = 0;
    while($ligne = mysql_fetch_assoc($resultat)) {
     
        // Ligne à ligne = facture par facture nous traitons du 2)
        $resultat2 = mysql_query('SELECT count(f_facture) as nb_relances
                        FROM   relance 
                        WHERE f_facture=\''.$ligne['f_facture'].'\'');
        $ligne2 = mysql_fetch_assoc($resultat2));
        $nb_relances = $ligne2['nb_relances']; 
     
         // Formatage des résultats
         $id = addslashes($ligne['id_numero']);
         $facture = $ligne['f_facture'];
         $intitule = htmlentities($ligne['intitule']);
         $montant = addslashes($ligne['montant']);
         $date_fact = addslashes($ligne['date_fact']);
         $date_echeance = addslashes($ligne['date_echeance']);
     
         // Les calculs
         $mont = addslashes($ligne['montant']);
         $total += $mont;
     
         // Reste les dates de relances, pour l'instant je mets tout dans un tableau
         $resultat3 = mysql_query('SELECT * FROM relance 
                                             WHERE f_facture=\''.$ligne['f_facture'].'\'');
     
         while($ligne3 = mysql_fetch_assoc($resultat3))
                $arrayDateRelances[] = $ligne3['date']; 	
     
          // Affichage de la ligne, je te laisse finir, le petit truc compliquer et 
         // d'ajouter les dates, si tu y arrives pas je te ferais celà demain ... ;) 	 
         $lignes .= "<tr><td><a href='relance_01.php?numero=$id' .....td></tr>"; 
     
    }
     
    	$lignes .= "<tr><td colspan='3'>Montant total </td><td align='right'>".$total."</td></tr>";	
     
    echo $lignes;
     
     mysql_free_result($resultat);
     
    ?>
    voili, voilà

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    re,

    J'ai completer le code mais voila le resultat n'est pas correcte, en faite les même date appraissent sur toutes les lignes et en principe elles doivent etre affecté qu'a la facture concerné

    Ci-joint une capture écran e le code modifié


    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
     
    <?php
    session_start ();
    include ('../inc/inc_connexion.php');
     
    // Ce bout de code reste le même, je vérifie pas
    $lignes = "<table BORDER=1 BORDERCOLOR=#CCCCCC BGCOLOR=#fffccc CELLSPACING=0 CELLPADDING=1 WIDTH=98% ALIGN=left font-family:Verdana size=10px>
    			<td bgcolor='#669999'><b><u>Numero</u></b></td>
    			<td bgcolor='#669999'><b><u>Facture</u></b></td>
    			<td bgcolor='#669999'><b><u>Libelle</u></b></td>		
    			<td bgcolor='#669999'><b><u>Montant</u></b></td>
    			<td bgcolor='#669999'><b><u>Date facture</u></b></td>
    			<td bgcolor='#669999'><b><u>Date echeance</u></b></td>
    			<td bgcolor='#669999'><b><u>Relance</u></b></td>
    			<td bgcolor='#669999'><b><u>L 01</u></b></td>
    			<td bgcolor='#669999'><b><u>L 02</u></b></td>
    			<td bgcolor='#669999'><b><u>L 03</u></b></td>
    			<td bgcolor='#669999'><b><u>L 04</u></b></td></tr>";
     
     
    // Résolution du 1) des grandes lignes 
    $resultat = mysql_query('SELECT * FROM facture');
    $total = 0;  $mont = 0;
    while($ligne = mysql_fetch_assoc($resultat)) {
     
        // Ligne à ligne = facture par facture nous traitons du 2)
        $resultat2 = mysql_query('SELECT count(f_facture) as nb_relances
                        FROM   relance 
                        WHERE f_facture=\''.$ligne['f_facture'].'\' order by id_numero');
     
    	while($ligne2 = mysql_fetch_assoc($resultat2))
     
        $nb_relances = $ligne2['nb_relances']; 
     
         // Formatage des résultats
         $id = addslashes($ligne['id_numero']);
         $facture = $ligne['f_facture'];
         $intitule = htmlentities($ligne['intitule']);
         $montant = addslashes($ligne['montant']);
         $date_fact = addslashes($ligne['date_fact']);
         $date_echeance = addslashes($ligne['date_echeance']);
     
         // Les calculs
         $mont = addslashes($ligne['montant']);
         $total += $mont;
     
         // Reste les dates de relances, pour l'instant je mets tout dans un tableau
         $resultat3 = mysql_query('SELECT * FROM relance 
                                             WHERE f_facture=\''.$ligne['f_facture'].'\' order by id_numero');
     
         while($ligne3 = mysql_fetch_assoc($resultat3))
                $arrayDateRelances[] = $ligne3['date']; 
     
     
    	// Affichage de la ligne, je te laisse finir, le petit truc compliquer et 
         // d'ajouter les dates, si tu y arrives pas je te ferais celà demain ... ;) 	
    			$lignes .= "<tr>
    						<td><a href='relance_01.php?numero=$id' target='_self'>".$id."</a></td>
    						<td>".$facture."</td>
    						<td>".$intitule."</td>
    						<td align='right'>".$montant."</td>
    						<td align='center'>".$date_fact."</td>
    						<td align='center'>".$date_echeance."</td>
    						<td align='center'>".$nb_relances."</td>
    						<td align='center'>".$arrayDateRelances[0]."</td>
    						<td align='center'>".$arrayDateRelances[1]."</td>
    						<td align='center'>".$arrayDateRelances[2]."</td>
    						<td align='center'>".$arrayDateRelances[3]."</td>
    						</tr>"; 
     
    }
     
    	$lignes .= "<tr><td colspan='3'>Montant total </td><td align='right'>".$total."</td></tr>";	
     
    echo $lignes;
     
     mysql_free_result($resultat);
     
    ?>
     
    J'ai aussi une autre anomalie, c'est lorsque je fais un affichage croissant elon l'id_numero (le numéro) j'ai plus les info des relances
     
    Merci de votre aide
     
    Runcafre91

  13. #13
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Alors dans ton code deux choses:

    Première erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($ligne2 = mysql_fetch_assoc($resultat2))
    Le while ne sert à rien !

    Il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($ligne2 = mysql_fetch_assoc($resultat2))
         $nb_relances = $ligne2['nb_relances']; 
    else
         $nb_relances = 0;
    Deuxième erreur.
    Ton tableau $arrayDateRelances[] n'est pas vidé de ces valeurs donc forcement tu as toutes les dates qui se répétent même si il n'y a plus qu'une relance (voir 0).
    Donc vide ton tableau avant chaque while($ligne3 ......)

    De même lors de l'affichage, il faudra boucler sur le nombre de valeur que ce tableau contient sinon tu aura une erreur dans les index !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php Pour tous les $i du tableau faire ?>
         <td align='center'>".$arrayDateRelances[$i]."</td>
    J'ai pas le temps de finir mais je crois t'avoir tout donné pour le codage
    A+

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Re,

    J'ai pris note des modifications a apporté a ce script mais voila je vois pas trop comment le retranscrire
    J'ai commencer a les modifié mais voila a un certain niveau je bloque sur le code
    voici le code que j'ai commencer a modifier
    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
     
     
    <?php
    session_start ();
    ini_set ("error_reporting", "E_ALL & ~E_NOTICE");
    ?>
    <?php
    include ('../inc/inc_connexion.php');
     
    $lignes = "<table BORDER=1 BORDERCOLOR=#CCCCCC BGCOLOR=#fffccc CELLSPACING=0 CELLPADDING=1 WIDTH=98% ALIGN=left font-family:Verdana size=10px>
    			<td bgcolor='#669999'><b><u>Numero</u></b></td>
    			<td bgcolor='#669999'><b><u>Facture</u></b></td>
    			<td bgcolor='#669999'><b><u>Libelle</u></b></td>		
    			<td bgcolor='#669999'><b><u>Montant</u></b></td>
    			<td bgcolor='#669999'><b><u>Date facture</u></b></td>
    			<td bgcolor='#669999'><b><u>Date echeance</u></b></td>
    			<td bgcolor='#669999'><b><u>Relance</u></b></td>
    			<td bgcolor='#669999'><b><u>L 01</u></b></td>
    			<td bgcolor='#669999'><b><u>L 02</u></b></td>
    			<td bgcolor='#669999'><b><u>L 03</u></b></td>
    			<td bgcolor='#669999'><b><u>L 04</u></b></td></tr>";
     
     //****************************************************************************
    //*****************************************************************************
     
    $resultat = mysql_query('SELECT * FROM facture GROUP BY f_facture order by id_numero');
    $total = 0;  $mont = 0;
    while($ligne = mysql_fetch_assoc($resultat)) 
    		{
     
        $resultat2 = mysql_query('SELECT count(f_facture) as nb_relances
                        FROM   relance 
                        WHERE f_facture=\''.$ligne['f_facture'].'\' GROUP BY f_facture order by id_numero');
     
     
    	if ($ligne2 = mysql_fetch_assoc($resultat2))
         $nb_relances = $ligne2['nb_relances']; 
    else
         $nb_relances = 0;
     
     
         // Formatage des résultats
         $id = addslashes($ligne['id_numero']);
         $facture = $ligne['f_facture'];
         $intitule = htmlentities($ligne['intitule']);
         $montant = addslashes($ligne['montant']);
         $date_fact = addslashes($ligne['date_fact']);
         $date_echeance = addslashes($ligne['date_echeance']);
     
         // Les calculs du total
         $mont = addslashes($ligne['montant']);
         $total += $mont;
     
         // Reste les dates de relances, pour l'instant je mets tout dans un tableau
         $resultat3 = mysql_query('SELECT * FROM relance 
                                             WHERE f_facture=\''.$ligne['f_facture'].'\' GROUP BY f_facture order by id_numero');
     
     
     //*********************************************************************************************
     // Ici je dois faire une boucle, je vois pas trop comment le faire 
     //théoriquement j'ai la solution mais j'arrive pas à l'adapter à ce cas
     //*********************************************************************************************
         while($ligne3 = mysql_fetch_assoc($resultat3))
                $arrayDateRelances[] = $ligne3['date']; 
     
    	$j=$nb_relance;
     
    		for($i=0; $i<$j;$i++)
     
    			echo $arrayDateRelances[$i];
     
    //***********************************************************************************************			
    			$lignes .= "<tr>
    						<td><a href='relance_01.php?numero=$id' target='_self'>".$id."</a></td>
    						<td>".$facture."</td>
    						<td>".$intitule."</td>
    						<td align='right'>".$montant."</td>
    						<td align='center'>".$date_fact."</td>
    						<td align='center'>".$date_echeance."</td>
    						<td align='center'>".$nb_relances."</td>
    						<td align='center'>".$arrayDateRelances[$i]."</td>
    						<td align='center'>".$arrayDateRelances[$i]."</td>
    						<td align='center'>".$arrayDateRelances[$i]."</td>
    						<td align='center'>".$arrayDateRelances[$i]."</td>
    						</tr>"; 
     
    }
     
    	$lignes .= "<tr><td colspan='3'>Montant total </td><td align='right'>".$total."</td></tr>";	
     
    echo $lignes;
     
     mysql_free_result($resultat);
     
    ?>
    Je commence un peux a saturer de force car je revois tout mes codes et deplus sans cette parti je ne peux plus vraiment avancer sur mes tests

    Merci de votre aide


    Runcafre91

  15. #15
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    Qd même tu aurais pu faire un effort

    Pendant que j'y était, j'ai simplifié le code pour éviter d'utiliser le tableau des
    dates de relances.

    Voici le code final (ou presque )
    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
     
    <?php
    session_start ();
    include ('../inc/inc_connexion.php');
     
    // Ce bout de code reste le même, je vérifie pas
    $lignes = "<table BORDER=1 .... </u></b></td></tr>";
     
    // Lecture de toutes les factures
    $resultat = mysql_query('SELECT * FROM facture');
    $total = 0;  $mont = 0;
    while($ligne = mysql_fetch_assoc($resultat)) {
     
        // Ligne à ligne = facture par facture nous traitons le 2)
        $resultat2 = mysql_query('SELECT count(f_facture) as nb_relances
                        FROM   relance 
                        WHERE f_facture=\''.$ligne['f_facture'].'\'');
        if ($ligne2 = mysql_fetch_assoc($resultat2))
            $nb_relances = $ligne2['nb_relances']; 
        else
            $nb_relances = 0; 
     
         // Formatage des résultats
         $id = addslashes($ligne['id_numero']);
         $facture = $ligne['f_facture'];
         $intitule = htmlentities($ligne['intitule']);
         $montant = addslashes($ligne['montant']);
         $date_fact = addslashes($ligne['date_fact']);
         $date_echeance = addslashes($ligne['date_echeance']);
     
         // Les calculs
         $mont = addslashes($ligne['montant']);
         $total += $mont;
     
         // Affichage du début de la ligne sans les dates de relances
         $lignes .= "<tr>
    	<td><a href='relance_01.php?numero=$id
                                                         target='_self'>".$id."</a></td>
    	<td>".$facture."</td>
    	<td>".$intitule."</td>
    	<td align='right'>".$montant."</td>
    	<td align='center'>".$date_fact."</td>
    	<td align='center'>".$date_echeance."</td>
    	<td align='center'>".$nb_relances."</td>";
     
         // Reste les dates de relances, ajoutées au fur et à mesures
         $resultat3 = mysql_query('SELECT * FROM relance 
                                             WHERE f_facture=\''.$ligne['f_facture'].'\''); 
         while($ligne3 = mysql_fetch_assoc($resultat3))
                $lignes .= "<td align='center'>".$ligne3['date']."</td>";
         $lignes .= "</tr>"; 		
    }
     
          $lignes .= "<tr><td colspan='3'>Montant total
                        </td><tdalign='right'>".$total."</td></tr>";	
          echo $lignes;
     
     mysql_free_result($resultat);
     
    ?>

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Bonjour,

    J'ai fais les modifications et tout fonctionne correctement.

    Encore une fois merci et bon courage

    Runcafre91

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

Discussions similaires

  1. besoin d'aide pour la création d'un requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 21/05/2008, 12h41
  2. besoin d'aide pour la création d'un logiciel
    Par lemoinedu49 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/12/2007, 07h21
  3. Réponses: 3
    Dernier message: 26/06/2007, 15h53
  4. Besoin d'aide pour un MCD des tables de la BDD
    Par nicaud dans le forum Schéma
    Réponses: 3
    Dernier message: 23/04/2006, 11h34
  5. Réponses: 2
    Dernier message: 10/03/2006, 14h55

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