Aller au contenu

Rajout d'une case à cocher + fonction


PsyKos

Messages recommandés

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 :D) qui permet d'affecter des candidats à un centre d'examen (je bosse pour l'éducation nationale :smokey:). 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

 

<?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)

 

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 :

 

	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 !!! :shy2:) 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.

Modifié par PsyKos
Lien vers le commentaire
Partager sur d’autres sites

La base de ton truc ça va être donc :

 

Formulaire >> recuperation formulaire via php >> modification base de données.

 

Alors deja le premier truc a faire je pense pour toi c'est te visualiser le fonctionnement de leur base SQL (je sais pas ce qu'ils utilisent ... ça peut être du MySQL ... MSSQL ... PostGre ...) et donc generer la commande qui va te permettre de modifier ton tuple. Apres on verra le reste :D

Lien vers le commentaire
Partager sur d’autres sites

Autant j'ai compris plus ou moins le probleme, autant je vois pas à quoi te sert la checkbox dans l'histoire ?

 

c'est pour un tri ?

 

Bonjour à tous, désolé de ne pas avoir répondu mais j'ai pas mal de boulot en ce moment et j'en avais presque oublié cette partie.

 

Pour répondre à FreeZou, oui, c'est exactement pour faire un tri. En fait, les examinateurs ne se trompent pas toutes les 5 minutes quand même et cela est plus pratique de cocher une case pour faire apparaitre les candidats déjà affectés plutôt que de faire chercher ledit candidat dans une liste plus importante par l'examinateur.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
  • Statistiques des membres

    23 028
    Total des membres
    1 012
    Maximum en ligne
    Subaru
    Membre le plus récent
    Subaru
    Inscription
  • Statistiques des forums

    128,1 k
    Total des sujets
    1,7 M
    Total des messages
×
×
  • Créer...