Bonjour à toutes et à tous et surtout, merci à celui ou ceux qui pourront m'aider.
J'ai commencé un nouveau boulot et mon chef veut que je modifie un programme en PHP en lui rajoutant une case à cocher afin de rajouter une fonction dans celui-ci. Problème majeur : je n'ai jamais développé en PHP ni même appris ce langage, ce qu'il n'a pas du comprendre...
Je vous explique un peu le topo. En fait, le programme est une page Web (vous devez vous en douter
) qui permet d'affecter des candidats à un centre d'examen (je bosse pour l'éducation nationale
). Le soucis étant que si l'examinateur se trompe de centre d'examen, il n'a aucun moyen de rectifier le tir, et c'est ce pourquoi je dois intervenir. Il s'agit donc de mettre une case à cocher pour pouvoir inclure dans la recherche des candidats, ceux déjà affectés et ainsi pouvoir modifier leur centre d'examen.
Je sais que cela peut vous paraitre tout bête mais quand on a jamais développé dans ce langage et qu'en plus, mon prédécesseur n'a laissé aucune documentation ou commentaire, cela devient plus que galère...
Je vous donne les morceaux du programme concernant cette partie donc :
--------------------------------------------------------------------------
affect.php
Code:
<?php
echo "<table id='page'><form method='post'>\n";
echo "<tr>\n<th>Individuels : <input type='radio' name='candtype' value='i'";
if ($candtype != "s")
{
$candtype = "i";
echo " checked";
}
echo" onclick='submit()'></th>\n";
echo "<th>Scolaires : <input type='radio' name='candtype' value='s'";
if ($candtype == "s") echo " checked";
echo " onclick='submit()'></th>\n</tr>\n";
echo "<tr>\n<th>Inclure les candidats déjà affectés (TEST) : <input type='checkbox' name='inc_aff' value='1'";
if ($inc_aff == "0") echo " checked";
echo "onclick='submit()'></th>\n</tr>\n";
echo "</form>\n";
echo "<form name='formaff'>\n";
echo "<input type='hidden' name='candsel' value='$candtype'>\n";
?>
<tr><td id="menuinfo" colspan="2">
<select name='centreo'>
</select>
</td></tr>
<tr><td id="menuinfo" colspan="2">
|<br>|<br>V
</td></tr>
<tr><td id="menuinfo" colspan="2">
<select name='centree'>
</select>
</td></tr>
<tr><td id="menuinfo" colspan="2">
<input type='button' value='Affecter' onclick='list_number()'>
</td></tr>
</table>
</form>
<script src="ajax/ajaff.js">
</script>
<script>
makeRequest("ajax/ajreqaff.php","?sess=<?php echo $_SESSION["exam"]; ?>&candtype=<?php echo $candtype; ?>")
function list_number()
{
seletab = window.document.formaff.centreo.options[window.document.formaff.centreo.selectedIndex].text
candtype = window.document.formaff.candsel.value
pos1 = seletab.indexOf("(")+1
pos2 = seletab.indexOf(")")
newsel = seletab.substring(pos1,pos2)
affnb = prompt("nombre d'élève à affecter / "+newsel,newsel)
if (affnb <= newsel)
{
rneori = window.document.formaff.centreo.options[window.document.formaff.centreo.selectedIndex].value
rneexa = window.document.formaff.centree.options[window.document.formaff.centree.selectedIndex].value
makeRequest("ajax/ajreqaff.php","?ctro="+rneori+"&ctre="+rneexa+"&nbaff="+affnb+"&sess=<?php echo $_SESSION["exam"]; ?>&user=<?php echo $_SESSION["user"]; ?>&candtype="+candtype)
}
else
alert("Impossible d'affecter plus de candidats que le nombre de non-affectés")
}
</script>
<?php
}
if ( isset($listelev) && isset($ctr_exa) )
{
$eleves=explode("|",$listelev);
foreach ( $eleves as $eleve )
{
$REQ->aff_cand_exa($eleve,$centre);
}
}
else if ( isset($ctr_ori) && isset($nbelv) && isset($ctr_exa) )
{
}
?>
--------------------------------------------------------------------------
cfg_req.php (liste de fonctions visiblement)
Code:
function list_non_aff($typec,$session,$ordre)
{
if ( $typec == "i" )
$type = "in (2,3)";
else if ( $typec == "s" )
$type = "= 1";
$requete = " select id_cand,numins,lib_civ,nom,pre,datenais
from cand,civilite
where id_session = $session and
id_type $type and
cand.id_civ = civilite.id_civ and
deleted = 'n' and
id_cand not in (select id_cand from cand_exa)";
if ($ordre == "num")
$requete .= " order by numins";
else if ($ordre == "nom")
$requete .= " order by nom,pre";
$this->requete($requete);
}
function list_aff($typec,$session,$ordre)
{
if ( $typec == "i" )
$type = "in (2,3)";
else if ( $typec == "s" )
$type = "= 1";
$requete = " select id_cand,numins,lib_civ,nom,pre
from cand,civilite
where id_session = $session and
id_type $type and
cand.id_civ = civilite.id_civ and
deleted = 'n'";
if ($ordre == "num")
$requete .= " order by numins";
else if ($ordre == "nom")
$requete .= " order by nom,pre";
$this->requete($requete);
}
function cand_non_aff($ctr='',$type="l")
{
if ( $type = "l" )
$requete = " select cand.id_cand,cand_ori.rne_ctr";
else if ( $type = "c" )
$requete = " select count(cand.id_cand,cand_ori.rne_ctr";
$requete .=" from cand_ori,cand,cand_exa
where cand_ori.id_cand = cand.id_cand
and deleted = 'n'
and cand.id_cand not in
( select id_cand from cand_exa )";
if ( $type = "c" )
$requete .= " group by cand_ori.rne_ctr";
$this->requete($requete);
}
function aff_cand_exa($idcand,$ctre)
{
if ( $this->verifexist($idcand,"id_cand","cand_exa") == 0 )
$requete = " insert into cand_exa
values ($idcand,'$ctre')";
else
$requete = " update cand_exa
set rne_ctr = '$ctre'
where id_cand = $idcand";
$this->requete($requete,"insupd");
}
function list_alea_cand($sess,$ctro,$candtype="")
{
$requete = " select cand.id_cand,nom,pre
from cand, cand_ori
where cand.id_cand = cand_ori.id_cand
and rne_ctr = '$ctro'
and deleted = 'n'
and cand.id_cand not in
( select id_cand from cand_exa )";
if ( $candtype != "" )
{
if ( $candtype == "i" )
$type = "in (2,3)";
else if ( $candtype == "s" )
$type = "= 1";
$requete .= " and id_type $type";
}
$this->requete($requete);
if (is_array($this->result))
{
$result = array();
foreach ($this->result as $val)
{
$result[$val["id_cand"]] = md5($val["nom"]." ".$val["pre"]);
}
asort ($result);
$this->result = array();
foreach ($result as $key => $val)
{
array_push($this->result,$key);
}
}
}
function view_cand_exa($idcand)
{
$requete = " select rne_ctir
from cand_exa
where id_cand = $idcand";
$this->requete();
}
function nbre_non_aff_ctr($session,$candtype)
{
$requete = " select count(id_cand),rne_ctr
from cand_ori
where id_cand in
(select id_cand from cand where id_session = $session
and deleted = 'n')
and id_cand not in
(select id_cand from cand_exa)";
if ( $candtype != "" )
{
if ( $candtype == "i" )
$type = "in (2,3)";
else if ( $candtype == "s" )
$type = "= 1";
$requete .= " and id_cand in
(select id_cand from cand where id_type $type)";
}
$requete .= " group by rne_ctr";
$this->requete($requete);
}
function nbre_aff_ctr($session,$rne,$candtype="")
{
$requete = " select count(id_cand)
from cand_exa
where id_cand in
(select id_cand from cand where id_session = $session
and deleted = 'n')
and rne_ctr = '$rne'";
if ( $candtype != "" )
{
if ( $candtype == "i" )
$type = "in (2,3)";
else if ( $candtype == "s" )
$type = "= 1";
$requete .= " and id_cand in
(select id_cand from cand where id_type $type)";
}
echo $requete;
$this->requete($requete);
}
function list_cand_ctre($sess,$typec,$ctre)
{
if ( $typec == "i" )
$type = "in (2,3)";
else if ( $typec == "s" )
$type = "= 1";
$requete = " select lib_civ,nom,pre,rne_ctr,date_epr,heure
from civilite,cand,cand_exa,cand_epr
where civilite.id_civ = cand.id_civ
and cand.deleted <> 'o'
and cand.id_cand = cand_exa.id_cand
and id_type $type
and cand.id_cand = cand_epr.id_cand
and id_epr = 3
and id_session = $sess";
if ($ctre != "0")
$requete .= " and rne_ctr = '$ctre'";
$requete .= " order by rne_ctr,date_epr,heure,nom,pre";
$this->requete($requete);
}
function list_eval($sess,$typec,$ctre,$date,$heure)
{
if ( $typec == "i" )
$type = "in (2,3)";
else if ( $typec == "s" )
$type = "= 1";
$requete = " select numins,nom,pre
from cand
where id_session = $sess
and cand.deleted <> 'o'
and id_type $type
and id_cand in
(select id_cand
from cand_epr
where id_epr = 3
and date_epr = '$date'
and heure = '$heure')
and id_cand in
(select id_cand
from cand_exa
where rne_ctr = '$ctre')
order by nom,pre";
//echo $requete;
$this->requete($requete);
--------------------------------------------------------------------------
J'avais pensé à un rajout comme ceci (voir un peu plus bas) mais je ne sais pas trop si cela est bon et comme je dois mettre les fichiers sur le serveur pour tester (pas d'environnement de développement sur le poste....) je préfére ne pas trop tester à l'aveuglette :
Code:
echo "<tr>\n<th>Inclure les candidats déjà affectés (TEST) : <input type='checkbox' name='inc_aff' value='1'";
if ($inc_aff == "0") echo " checked";
echo "onSubmit='return CheckCase()'></th>\n</tr>\n";
echo "</form>\n";
echo "<form name='formaff'>\n";
echo "<input type='hidden' name='candsel' value='$candtype'>\n";
?>
<tr><td id="menuinfo" colspan="2">
<select name='centreo'>
</select>
</td></tr>
<tr><td id="menuinfo" colspan="2">
|<br>|<br>V
</td></tr>
<tr><td id="menuinfo" colspan="2">
<select name='centree'>
</select>
</td></tr>
<tr><td id="menuinfo" colspan="2">
<input type='button' value='Affecter' onclick='list_number()'>
</td></tr>
</table>
</form>
<script src="ajax/ajaff.js">
</script>
<script>
makeRequest("ajax/ajreqaff.php","?sess=<?php echo $_SESSION["exam"]; ?>&candtype=<?php echo $candtype; ?>")
function CheckCase()
{
if (document.formaff.inc_aff.checked == false)
{
function list_number()
{
seletab = window.document.formaff.centreo.options[window.document.formaff.centreo.selectedIndex].text
candtype = window.document.formaff.candsel.value
pos1 = seletab.indexOf("(")+1
pos2 = seletab.indexOf(")")
newsel = seletab.substring(pos1,pos2)
affnb = prompt("Nombre d'élève à affecter / "+newsel,newsel)
if (affnb <= newsel)
{
rneori = window.document.formaff.centreo.options[window.document.formaff.centreo.selectedIndex].value
rneexa = window.document.formaff.centree.options[window.document.formaff.centree.selectedIndex].value
makeRequest("ajax/ajreqaff.php","?ctro="+rneori+"&ctre="+rneexa+"&nbaff="+affnb+"&sess=<?php echo $_SESSION["exam"]; ?>&user=<?php echo $_SESSION["user"]; ?>&candtype="+candtype)
}
else
alert("Impossible d'affecter plus de candidats que le nombre de non-affectés")
}
else
{
seletab = window.document.formaff.centreo.options[window.document.formaff.centreo.selectedIndex].text
candtype = window.document.formaff.candsel.value
pos1 = seletab.indexOf("(")+1
pos2 = seletab.indexOf(")")
newsel = seletab.substring(pos1,pos2)
affnb = prompt("Nombre d'élève à affecter / "+newsel,newsel)
if (affnb <= newsel)
{
rneori = window.document.formaff.centree.options[window.document.formaff.centree.selectedIndex].value
rneexa = window.document.formaff.centree.options[window.document.formaff.centree.selectedIndex].value
makeRequest("ajax/ajreqaff.php","?ctro="+rneori+"&ctre="+rneexa+"&nbaff="+affnb+"&sess=<?php echo $_SESSION["exam"]; ?>&user=<?php echo $_SESSION["user"]; ?>&candtype="+candtype)
}
else
alert("Impossible d'affecter plus de candidats que le nombre de non-affectés")
}
}
</script>
<?php
}
--------------------------------------------------------------------------
Une petite image pour que vous voyiez à quoi cela ressemble :
--------------------------------------------------------------------------
Comme vous pouvez le voir, j'ai déjà rajouter la cose à cocher (pump it up !!!
) mais c'est bien tout ce que j'ai pu faire :pasmafaufe8:
Voilà, j'espère vraiment que vous pourrez m'aider et à très bientôt j'espère.
Cordialement.