PsyKos Posté(e) le 29 août 2008 Partager Posté(e) le 29 août 2008 (modifié) 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 <?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 !!! ) 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é le 30 août 2008 par PsyKos Lien vers le commentaire Partager sur d’autres sites More sharing options...
jack Posté(e) le 29 août 2008 Partager Posté(e) le 29 août 2008 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
FreeZou Posté(e) le 6 septembre 2008 Partager Posté(e) le 6 septembre 2008 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
PsyKos Posté(e) le 11 septembre 2008 Auteur Partager Posté(e) le 11 septembre 2008 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 More sharing options...
Messages recommandés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant