Pas de données suite à un SUM(PostgreSQL)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pas de données suite à un SUM(PostgreSQL)

par Maitrepylos » 23 janv. 2006, 10:21

Bonjour, mon problème étais que je n'arrivais pas à afficher les données dans mes balises
<?php

while($soluce = pg_fetch_array($resu))
{
?>

<tr>
    <td  align="left"><?PHP echo $soluce['parnom']." ".$soluce['parprenom']?></TD>
    <td  align="Left"><?php echo $soluce['Heures_Alpha'] ?></td>
    <td  align="Left"><?php echo $soluce['F70BIS_LE'] ?></td>
    <td  align="Left"><?php echo $soluce['F70BIS_Alpha'] ?></td>
    <td  align="Left"><?php echo $soluce['Permis_cpas'] ?></td>
    <td  align="Left"><?php echo $soluce['Article_60'] ?></td>
    <td  align="Left"><?php echo $soluce['EFT'] ?></td>
    <td  align="Left"><?php echo $soluce['Conge_educ'] ?></td>
        

<?php
}
?> 
et sur tes conseils en examinant le var_dump, j'ai remarqué que postgresql changeais la Case des mes sum.

Donc simple problème de majuscule.

merci de ton aide.

MaitrePylos.

par Hubert Roksor » 20 janv. 2006, 19:28

Elles sont "doublées" parce que tu utilises pg_fetch_array(). Essaie pg_fetch_assoc() plutôt. Quant au reste... quelle est ton problème exactement ? car d'après ce que je vois les SUM() semblent fonctionner correctement, ces valeurs ne sont-elles pas justes ?

heures_alpha = 45.213
f70bis_le = 0
f70bis_alpha = 34
permis_cpas = 0
article_60 = 0
eft = 0
conge_educ = 0

PS: ajoute un "echo '<pre>'" avant var_dump() si tu vois le résultat via ton navigateur

par Maitrepylos » 20 janv. 2006, 17:32

Bonjour, aucune des deux solutions proposé ne fonctionne.

par contre dans le var_dump, on peut se rendre compte que je récupére bien les données voulues, mais il me semble quelles sont doublés.
array(18) { [0]=>  string(10) "ERNAELSTEN" ["parnom"]=>  string(10) "ERNAELSTEN" [1]=>  string(7) "Gérard" ["parprenom"]=>  string(7) "Gérard" [2]=>  string(6) "45.213" ["heures_alpha"]=>  string(6) "45.213" [3]=>  string(1) "0" ["f70bis_le"]=>  string(1) "0" [4]=>  string(2) "34" ["f70bis_alpha"]=>  string(2) "34" [5]=>  string(1) "0" ["permis_cpas"]=>  string(1) "0" [6]=>  string(1) "0" ["article_60"]=>  string(1) "0" [7]=>  string(1) "0" ["eft"]=>  string(1) "0" [8]=>  string(1) "0" ["conge_educ"]=>  string(1) "0" }

par Hubert Roksor » 20 janv. 2006, 14:37

La requête est particulièrement longue et sans le schema (même partiel) des tables concernées c'est plus difficile...

Si un enregistrement a un regheure == NULL alors il pourrira ton SUM() qui sera NULL à son tour. Vérifie que regheure est déclaré NOT NULL, ou ajoute simplement "AND regheure IS NOT NULL" dans ta clause WHERE. En dernier recours tu peux changer "regheure" par "COALESCE(regheure, 0)" durant le debugging.

Tu devrais aussi essayer "var_dump($soluce);" dans ta boucle pour voir ce qui se trouve réellement dedans.

Bonne chance

par Maitrepylos » 20 janv. 2006, 14:19

Personne n'a vraiment pas une petite idées :?

Pas de données suite à un SUM(PostgreSQL)

par Maitrepylos » 18 janv. 2006, 17:11

bonjour,

j'ai le code suivant :
<?php
session_start();
include("../Base/pgConnect.php");

$resu =pg_query("SELECT parnom, parprenom,
       	SUM(CASE WHEN regjour < dosdatef70bis
                THEN regheure
                WHEN cotypecontrat = '' AND dosf70bis='non'
                THEN regheure
		WHEN cotypecontrat = '' AND dosf70bis=''
                THEN regheure
                ELSE 0
           END) AS Heures_Alpha,
       	SUM(CASE WHEN regjour >= dosdatef70bis AND cotypecontrat ='F70 BISLE'
                THEN regheure
                ELSE 0
           END) AS F70BIS_LE,

	SUM(CASE WHEN regjour >= dosdatef70bis AND cotypecontrat ='F70 BISAlpha'
                THEN regheure
                ELSE 0
           END) AS F70BIS_Alpha,

	SUM(CASE WHEN cotypecontrat ='Permis cpas'
                THEN regheure
                ELSE 0
           END) AS Permis_cpas,

	SUM(CASE WHEN cotypecontrat ='Article 60'
                THEN regheure
                ELSE 0
           END) AS Article_60,

	SUM(CASE WHEN cotypecontrat ='Eft'
                THEN regheure
                ELSE 0
           END) AS EFT,

	SUM(CASE WHEN cotypecontrat ='Conge education'
                THEN regheure
                ELSE 0
           END) AS Conge_educ

	
FROM participant p INNER JOIN registre r ON p.idparticipant = r.idparticipant
                   LEFT JOIN  dossier  d ON p.idparticipant = d.idparticipant
                   LEFT JOIN  contrat  c ON p.idparticipant = c.idparticipant
                                        
WHERE regjour BETWEEN '2005-01-01' AND '2005-01-31'
AND r.idlogin IS NOT NULL
AND r.idparticipant IS NOT NULL
GROUP BY parnom, parprenom
ORDER BY parnom ASC");
?>

<table border="1">
<tr>
	<td  align="left">Nom Pr&eacute;nom</TD>
 	<td  align="Left">Heures_Alpha</td>
 	<td  align="Left">F70BIS_LE</td>
 	<td  align="Left">F70BIS_Alpha</td>
 	<td  align="Left">Permis_cpas</td>
 	<td  align="Left">Article_60</td>
 	<td  align="Left">EFT</td>
 	<td  align="Left">Conge_educ</td>

</tr>



<?php

while($soluce = pg_fetch_array($resu))
{
?>

<tr>
	<td  align="left"><?PHP echo $soluce['parnom']." ".$soluce['parprenom']?></TD>
 	<td  align="Left"><?php echo $soluce['Heures_Alpha'] ?></td>
 	<td  align="Left"><?php echo $soluce['F70BIS_LE'] ?></td>
 	<td  align="Left"><?php echo $soluce['F70BIS_Alpha'] ?></td>
 	<td  align="Left"><?php echo $soluce['Permis_cpas'] ?></td>
 	<td  align="Left"><?php echo $soluce['Article_60'] ?></td>
 	<td  align="Left"><?php echo $soluce['EFT'] ?></td>
 	<td  align="Left"><?php echo $soluce['Conge_educ'] ?></td>
 		
 
<?php
} 
?>
</tr>
</table>
Ma page s'affiche correctement avec le nom et le prénom, mais je n'arrive pas à obtenir le SUM.

Le code sql fonctionne bien en dehors de php (phppgadmin et pgadmin)