par
béka » 01 août 2007, 13:47
Désolé problème de session, j'avais pas vu que j'étais déconnecté quand j'ai posté le message précédent.
J'ai égalemnt pensé à mettre toutes mes informations dans un tableau, et ensuite avant d'afficher mon code html je fais une boucle dans ce tableau pendant laquelle j'utilise la fonction array_key_exists() pour sortir mes pratiques qu'une seule fois. Mais là je ne vois pas du tout comment faire.
EDIT
J'ai opté pour la deuxième solution, avec tout mettre dans un tableau et utiliser array_key_exists.
Maintenant mon tableau (qui est a plusieurs dimension au passage) ne contient bien que les pratiques que je souhaite afficher. Il n'y a pas de redondance.
Mais là, j'ai un nouveau problème, comment récupérer les éléments de mon tableau pour les afficher proprement ?
Voici mon code :
<?
//on constuit le tableau qui contient les couples cat/crit de chaque practice
//pour cela, on recherche dans la matrice criteria-practice.xml
$compteur = 0;
$allPracticeFind = array();
for($i=0; $i < sizeof($arrayContributor); $i++) // tant que $i est inferieur au nombre d'éléments du tableau...
{
//print_r($arrayContributor); exit;
$var = $arrayContributor[$i];
$explode = explode("/", $var);
$idcat = $explode[0];
$idcrit = $explode[1];
$criteriaPract = $xpCrit_pract->query('//link/criteria[@idcat="'.$idcat.'" and @idcrit="'.$idcrit.'"]/../practice');
for ($b=0; $b < $criteriaPract->length ; $b++) {
$idPracticeCommune = $criteriaPract->item($b)->getAttribute('id');
$practice = $xpPractices->query('//practice[@id="'.$idPracticeCommune.'" and @subjected="1" and @validated="0"]');
for ($j=0; $j < $practice->length ; $j++) {
$idPractice = $practice->item($j)->getAttribute('id');
$name = $practice->item($j)->getAttribute('name');
if ( array_key_exists($idPractice, $allPracticeFind) ) continue;
$practiceFile = '../'.$cfg['ressources_root'].'content/practice/'.$idPractice.'.xml';
$domPractice = new DOMDocument('1.0','UTF-8');
$domPractice->load($practiceFile);
$xpPractice = new DOMXPath($domPractice);
$practiceCreated = $xpPractice->query('//item[@id="'.$idPractice.'"]');
$created = $practiceCreated->item(0)->getAttribute('date_created');
$explode = explode('-', $created);
$day = $explode[2];
$month = $explode[1];
$year = $explode[0];
$date = $day."-".$month."-".$year;
$allPracticeFind[$idPractice]['id'] = $idPractice;
$allPracticeFind[$idPractice]['namePractice'] = $name;
$allPracticeFind[$idPractice]['date'] = $date;
}//endfor
$compteur++;
}//endfor
}//endfor
krsort($allPracticeFind);
echo "<pre>"; print_r($allPracticeFind); echo "</pre>";
for ($f=0 ; $f < sizeof($allPracticeFind) ; $f++)
{
echo $allPracticeFind[$f][$idPractice]['id'];
$name = $allPracticeFind[$f][$idPractice]['namePractice'];
$date = $allPracticeFind[$f][$idPractice]['date'];
echo "<tr bgcolor='".( ($v++ % 2 == 0) ? '#FFFFFF' : '#EEEEEE' )."'>
<td>".$name."</td>
<td>".$date."</td>
<td align='center'>"; ?><a href="practice-edit.php?id=<? echo $idPractice; ?>"><? echo "<img src='../css/images/edit.gif' border='0'></a></td>
<td align='center'>"; ?><a href='?delete_commitee=<? echo $idPractice; ?>' onClick="return conf_suppr();"><? echo "<img src='../css/images/delete.gif' border='0'></a></td>
<td align='center'>"; ?><a href="?validated_commitee=<? echo $idPractice; ?>"><? echo COL_VALIDATE_PRACTICE."</td>
</tr>";
}
?>
Mais ça, ça ne marche pas ? pourquoi ?
Désolé problème de session, j'avais pas vu que j'étais déconnecté quand j'ai posté le message précédent.
J'ai égalemnt pensé à mettre toutes mes informations dans un tableau, et ensuite avant d'afficher mon code html je fais une boucle dans ce tableau pendant laquelle j'utilise la fonction array_key_exists() pour sortir mes pratiques qu'une seule fois. Mais là je ne vois pas du tout comment faire.
[b]EDIT[/b]
J'ai opté pour la deuxième solution, avec tout mettre dans un tableau et utiliser array_key_exists.
Maintenant mon tableau (qui est a plusieurs dimension au passage) ne contient bien que les pratiques que je souhaite afficher. Il n'y a pas de redondance.
Mais là, j'ai un nouveau problème, comment récupérer les éléments de mon tableau pour les afficher proprement ?
Voici mon code :
[php]
<?
//on constuit le tableau qui contient les couples cat/crit de chaque practice
//pour cela, on recherche dans la matrice criteria-practice.xml
$compteur = 0;
$allPracticeFind = array();
for($i=0; $i < sizeof($arrayContributor); $i++) // tant que $i est inferieur au nombre d'éléments du tableau...
{
//print_r($arrayContributor); exit;
$var = $arrayContributor[$i];
$explode = explode("/", $var);
$idcat = $explode[0];
$idcrit = $explode[1];
$criteriaPract = $xpCrit_pract->query('//link/criteria[@idcat="'.$idcat.'" and @idcrit="'.$idcrit.'"]/../practice');
for ($b=0; $b < $criteriaPract->length ; $b++) {
$idPracticeCommune = $criteriaPract->item($b)->getAttribute('id');
$practice = $xpPractices->query('//practice[@id="'.$idPracticeCommune.'" and @subjected="1" and @validated="0"]');
for ($j=0; $j < $practice->length ; $j++) {
$idPractice = $practice->item($j)->getAttribute('id');
$name = $practice->item($j)->getAttribute('name');
if ( array_key_exists($idPractice, $allPracticeFind) ) continue;
$practiceFile = '../'.$cfg['ressources_root'].'content/practice/'.$idPractice.'.xml';
$domPractice = new DOMDocument('1.0','UTF-8');
$domPractice->load($practiceFile);
$xpPractice = new DOMXPath($domPractice);
$practiceCreated = $xpPractice->query('//item[@id="'.$idPractice.'"]');
$created = $practiceCreated->item(0)->getAttribute('date_created');
$explode = explode('-', $created);
$day = $explode[2];
$month = $explode[1];
$year = $explode[0];
$date = $day."-".$month."-".$year;
$allPracticeFind[$idPractice]['id'] = $idPractice;
$allPracticeFind[$idPractice]['namePractice'] = $name;
$allPracticeFind[$idPractice]['date'] = $date;
}//endfor
$compteur++;
}//endfor
}//endfor
krsort($allPracticeFind);
echo "<pre>"; print_r($allPracticeFind); echo "</pre>";
for ($f=0 ; $f < sizeof($allPracticeFind) ; $f++)
{
echo $allPracticeFind[$f][$idPractice]['id'];
$name = $allPracticeFind[$f][$idPractice]['namePractice'];
$date = $allPracticeFind[$f][$idPractice]['date'];
echo "<tr bgcolor='".( ($v++ % 2 == 0) ? '#FFFFFF' : '#EEEEEE' )."'>
<td>".$name."</td>
<td>".$date."</td>
<td align='center'>"; ?><a href="practice-edit.php?id=<? echo $idPractice; ?>"><? echo "<img src='../css/images/edit.gif' border='0'></a></td>
<td align='center'>"; ?><a href='?delete_commitee=<? echo $idPractice; ?>' onClick="return conf_suppr();"><? echo "<img src='../css/images/delete.gif' border='0'></a></td>
<td align='center'>"; ?><a href="?validated_commitee=<? echo $idPractice; ?>"><? echo COL_VALIDATE_PRACTICE."</td>
</tr>";
}
?>[/php]
Mais ça, ça ne marche pas ? pourquoi ?