Page 1 sur 1

Probleme de création de tableau croisé via requete SQL

Posté : 01 août 2007, 10:12
par thorgal
bonjour,

voila je souhaite créer un tableau à deux entrées

en abscisse la liste de mes robots et en ordonnée la liste des mesures que chaque robot joue.
Dans le tableau le code retour de chaque mesure joué sur chaque robot.
un robot joue plusieurs mesure et une mesure peut être joué sur plusieur robot.

mon probléme est que mes connaissances en PhP sont très limité et je ne vois absolument pas comment créer ce tableau voici mon fichier.
<html>


<head>

</head>


<body>


<?php


include("config.inc.php");

include("dbCo.inc.php");


$query = "SELECT rml.rma_id,rml.rma_label,o.obj_name,o.obj_id,TO_CHAR(last.res_lastdate,'YYYY-MM-DD HH24:MI:SS') AS lastdate,(SELECT err_id FROM DL_CNX WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_CNX WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_DNS WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_DNS WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_FTP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_FTP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_GEN WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_GEN WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_HTP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_HTP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_IMAP4 WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_IMAP4 WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_POP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_POP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_SCE WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_SCE WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_SMTP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_SMTP WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_STR WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_STR WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_TPE WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_TPE WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate) UNION SELECT err_id FROM DL_W40 WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate AND res_seqno = (SELECT MAX(res_seqno) FROM DL_W40 WHERE obs_id=obs.obs_id AND res_date=last.res_lastdate)) AS err_id FROM p_object o,p_obj_sit obs, l_site ls,s_lastmeasure LAST,p_rma rma, l_rma rml WHERE o.obj_id=obs.obj_id AND obs.sit_id=ls.sit_id AND rma.sit_id=ls.sit_id AND rma.sit_id=obs.sit_id AND rml.rma_id=rma.rma_id AND rml.loc_id='fr' AND last.obj_id=obs.obj_id AND last.sit_id=obs.sit_id AND ls.loc_id='fr' ORDER BY rml.rma_id";

$stmt = OCIParse($dbCo, $query);


OCIExecute($stmt);


$i=0;

$j=0;

$k=0;


while ($req = oci_fetch_array ($stmt))  {


$i++;

$j++;

$k++;


$robot[$i]= $req['RMA_LABEL'];


$scenario[$j]= $req['OBJ_NAME'];


$error[$i]= $req['ERR_ID'];


$a[$i]= $k;



	}



//debut du tableau


echo '<table border="1px solid black">';


//debut premiere ligne, et premiere case vide


echo '<tr><td></td>';


//liste robots


for ($x=1; $x<$i+1; $x++){

	echo "<td>$robot[$x]</td>";

	}

echo '/<tr>'; //fin de la ligne header



//ajout scenarios


for ($y=1; $y<$j+1; $y++) {

echo "<tr><td>$scenario[$y]</td>";

		for($x=1; $x<$i+1; $x++){

		if ($x == $y){

		//condition de la table avec $y en ordonnée et $x en abscisses

		echo '<td>'.$error[$y].'</td>';}

		else {

		echo "<td><font color=\"#FFFFFF\">_</td>";}

	}

	}

	echo '</tr>';

	echo 'i='.$i;

	oci_free_statement($stmt);

		include("dbDeco.inc.php");

?>

</body>

</html>
mais tentative de tableau ne corresponde pas a ce que je shouaite car je voudrais un tableau de ce type ou le résultat du retour sois en fonction de la mesure et du robot.

robot 1 robot 2 robot 3 robot 4
mesure 1 retour 1 1 retour 2 1
mesure 2 retour 1 2 retour 2 2
mesure 3 retour 1 3 retour 2 3
mesure 4 etc
mesure 5


voila si quelqu'un peut m'éclairé sur ce prob

merci d'avance