lynkis

Inscris le 26/06/2013 à 14:14
  • Signature
    Lynkis
  • Nombre de sujets
    1
  • Nombre de messages
    5
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
lynkis
le 26/06/2013 à 14:27
Probleme calcul plage horaire
Bonjours a tous,
Voila je suis en 1ère année de BTS Info Option SLAM et j'ai un stage de fin d'année.
Je suis actuellement dans une école (mon stage) .
Il m'ont donnés pour objectif de faire quelques script en PHP afin d'améliorer leur site de gestion d'emploi du temps des étudiants.
Le site etant déjà bien avancé bien sur mais il reste quelques "petits" soucis encore a corriger.
MON SOUCIS : Je doit faire en sorte que lorsque j'ajoute un cours dans mon emploi du temps (ex : De 8h00 à 9h00) celui ci s'affiche ( c'étais déjà de base) , petit bémol, c'est que lorsque je souhaite mettre cette fois ci un cours (ex : De 8h15 à 9h15) mais que le cours précédent est déjà créer, les deux cours sont chevaucher ( Pas cool ).
On m'a donc demander de faire en sorte que quand un cours est ajouté, on ne puisse pas en mettre un nouveau dans la même plage horaire.
Voici mon code que j'ai fait:
<?php                          $etdate = date("Y-m-d",date_offset(date_lundi($_SESSION['date']),$_POST['jour']-1));
$etdebut_new = "{$_POST['hh_deb']}:{$_POST['mm_deb']}:00";
$etduree = "{$_POST['hh_dur']}:{$_POST['mm_dur']}:00";
$etdebut_exist = $_SESSION['paperboard'][4]['et_debut'];
var_dump ($etdebut_new);
var_dump ($etduree);
var_dump ($etdebut_exist);

$sql = "SELECT id_et FROM emptps WHERE id_mat='{$_POST['mat']}' AND et_date='$etdate' ";
$sql.= "AND et_debut='".$etdebut_new."' AND id_gr='{$_POST['group']}' AND id_form={$_SESSION['form']}";
$result=mysql_query($sql) or $debug.=$sql;

// Le code que j'ai ajouter //
echo "<br>";
// 15 minutes en dec
$temps = 25*3600/100;
// Heure de durée en dec
$etduree = $etduree*3600;
// Heure de début en dec
$etdebut = $etdebut_new*3600;
// Heure de fin en dec
$etfin = $etduree + $etdebut;

for($i=$etdebut; $i!=$etfin; $i+=$temps){
$heure=date('H:i:s', $i);
echo'<option value="'.$heure.'">'.$heure.'</option>';
$sql2 = "SELECT et_debut FROM emptps WHERE et_date='$etdate' AND et_debut='".$etdebut_exist."' ";
$result2=mysql_query($sql2) or $debug.=$sql2;
$test = mysql_fetch_array($result2);
var_dump ($test);
if ($result&&mysql_num_rows($result)!=0&&){
$info ="Erreur(s) détectée(s):".$info;
$info.="--INSERTION NON EFFECTUEE--\\n La plage horaire a déjà été utilisée!";
}
}
// Le code que j'ai ajouter //

if ($result&&mysql_num_rows($result)!=0){
$info ="Erreur(s) détectée(s):".$info;
$info.="--INSERTION NON EFFECTUEE--\\n Cette intervention existe déja!";
}elseif ($_POST['hh_dur']==0 && $_POST['mm_dur']==0) {
$info ="Erreur(s) détectée(s):".$info;
$info.="--INSERTION NON EFFECTUEE--\\n La durée ne peut etre nulle!";
}else{
if ($_POST['attention']=='on') $es='S'; else $es='A';
if ($_POST['devoir']) $et=$_POST['devoir']; else $et='N';
if ($_POST['et_cpt']=='on') $ecpt='P'; else $ecpt='N';
if ($_POST['pause']=='on') $paus='Y'; else $paus='N';
if ($_POST['video']=='on') $video='Y'; else $video='N';

//Vérification
$chevauchement = "( ( et_debut < sec_to_time( time_to_sec('{$_POST['hh_deb']}:{$_POST['mm_deb']}:00')";
$chevauchement .= " +time_to_sec('{$_POST['hh_dur']}:{$_POST['mm_dur']}:00'))";
$chevauchement .= " AND sec_to_time(time_to_sec('{$_POST['hh_deb']}:{$_POST['mm_deb']}:00')";
$chevauchement .= " +time_to_sec('{$_POST['hh_dur']}:{$_POST['mm_dur']}:00'))";
$chevauchement .= " <= sec_to_time(time_to_sec(et_debut)+time_to_sec(et_duree)))"; // fin au milieu
$chevauchement .= " OR ( et_debut >= '{$_POST['hh_deb']}:{$_POST['mm_deb']}:00' ";
$chevauchement .= " AND sec_to_time( time_to_sec('{$_POST['hh_deb']}:{$_POST['mm_deb']}:00')";
$chevauchement .= " +time_to_sec('{$_POST['hh_dur']}:{$_POST['mm_dur']}:00')) ";
$chevauchement .= " >= sec_to_time(time_to_sec(et_debut)+time_to_sec(et_duree)))"; //debut avant et fin apr+¿s
$chevauchement .= " OR ( et_debut <= '{$_POST['hh_deb']}:{$_POST['mm_deb']}:00' ";
$chevauchement .= " AND '{$_POST['hh_deb']}:{$_POST['mm_deb']}:00' ";
$chevauchement .= " < (sec_to_time(time_to_sec(et_debut)+time_to_sec(et_duree))))) "; // debut au milieu

$info.=verif_salle(0,$_POST['salle'],$etdate,$chevauchement);
$info.=verif_ens(0,$_POST['prof'],$etdate,$chevauchement);
$info.=verif_gr(0,$_POST['group'],$etdate,$chevauchement);

// Il faut une pause a 10h et a 16h si pause = Y dans formation et TP ala modif on fera ce qu'on veut
if ($paus=='N'){
$sql="SELECT pause FROM formation WHERE id_form={$_SESSION['form']}";
$result=mysql_query($sql) or $debug.=$sql;
if ($result&&($row=mysql_fetch_array($result))&&($row['pause']=='Y')&&
($_POST['et_ens']=="TP")&&
(
(($_POST['hh_deb']*60+$_POST['mm_deb']<600)&&(($_POST['hh_deb']+$_POST['hh_dur'])*60+$_POST['mm_deb']+$_POST['mm_dur']>600))||
(($_POST['hh_deb']*60+$_POST['mm_deb']<960)&&(($_POST['hh_deb']+$_POST['hh_dur'])*60+$_POST['mm_deb']+$_POST['mm_dur']>960))
)
) $paus='Y';
}

if (!isset($_POST['et_ens'])) $_POST['et_ens']="TD";

//recup du id_form dans groupe pour mutualisation
$sql="SELECT id_form FROM groupe WHERE id_gr={$_POST['group']}";
$result=mysql_query($sql) or $debug.=$sql;
$row=mysql_fetch_array($result);
$form=$row['id_form'];

//INSERTION même si il y a des conflits
$champ = " (id_mat,id_sem,id_gr,id_prof,id_salle,et_type,et_ens,et_status,et_cpt,et_date,";
$champ.= "et_debut,et_duree,id_form,pause,divers,video,date_enreg ) ";
$table = " emptps ";
$value = "({$_POST['mat']},{$_SESSION['sem']},{$_POST['group']},{$_POST['prof']},{$_POST['salle']},'$et',";
$value.= "'{$_POST['et_ens']}','$es','$ecpt','$etdate','{$_POST['hh_deb']}:{$_POST['mm_deb']}:00',";
$value.= "'{$_POST['hh_dur']}:{$_POST['mm_dur']}:00',$form,'$paus','{$_POST['divers']}','$video',now())";
$sql = "INSERT INTO $table $champ VALUES $value ";

$result = mysql_query($sql) or $debug.=$sql;
$_SESSION['id_et']=mysql_insert_id();

if ($video=='Y') $info.=verif_video(0,$_POST['salle'],$etdate,$chevauchement);
if (!empty($info)) $info = "Anomalie(s) détectée(s):".$info;
}?>

Alors bien évidement c'est un code qui à déjà été fait avant que j'arrive.
Ma question : Est-il possible de pouvoir calculer une plage horaire d'un cours précédemment créer et que si la plage horaire est déjà occuper il m'affiche un message d'erreur ?

Merci d'avance pour vos réponses .
Lynkis

Ses derniers messages sur les forums

forum
lynkis
le 28/06/2013 à 08:41
Probleme calcul plage horaire
Merci de ta réponse,
Même si je n'ai pas demandé de réécrire le code a ma place ( ce dont je te remercie plus que tout car c'est un peu plus compréhensible ) je suis vachement étonné de ta vitesse de réécriture de ce code qui passe de "l’incompréhensibilité" à la "compréhension" la plus totale.
Oui je sais que c'est dur mais j'aime bien le développement, mais mon stage n'étant pas de réécrire tout le code du site ( 110 pages sa fait un peu long ... ) et j'apprendrais pas en réécrivant tout sa de moi, le truc c'est qu'on ma rien expliqué du fonctionnement j'ai du chercher tout seul ... ( on ma dit " Ta le code, faut que tu fasse en sorte de pouvoir faire sa et sa ." ) Euh oui je veux bien mais ... (" ah oui tu as environ 3 jours pour comprendre le code comment il va et après tu t'attaque aux script ") ... EUH ... Ok ... Si je souhaite pouvoir renouveler mon stage l'année prochaine, je préfère rien dire et faire mon code sans rechigner ... car comme je l'ai dit, j'ai pas envie de me faire lynché durant la visite de ma prof pour le stage ... Bref, merci pour le code que tu m'a fourni je vais tenter de regarder et de trouver une solution :)
Cordialement

PS : Tu as raison d'être un peu dur envers les autres, mais si on viens avec les bons argument et une "bonne" page de code en expliquant le fonctionnement et se qui ne va pas faudrait lever un peu le pied =).
Lynkis
lynkis
le 27/06/2013 à 21:16
Probleme calcul plage horaire
T’inquiète pas je t'en veux pas mais sa m'embête énormément car on m'a refiler du code extrêmement mal écrit (je l'admet car pour déchiffrer j'ai mis du temps). Je vais me penche sur ce que tu m'a dit mais en ce qui concerne la réécriture du code, c'est mort il se démerde car je vais pas commencer a tout leur refaire alors qu'au finale j'y gagnerais rien :)
Lynkis
lynkis
le 27/06/2013 à 21:13
Probleme calcul plage horaire
Alors merci de ta réponse malgré quelle soit légèrement ardente, mais si tu as bien lu mon post, le code n'est pas de moi, et je n'ai absolument pas le temps de le réécrire en 4 semaines (désolé), je fais du mieux que je peut avec ce que l'on me donne, les commentaires ne sont pas de moi mais de celui qui a écrit la page ( même moi j'ai du mal a comprendre certaines choses) c'est pour sa que je suis ici pour solliciter de l'aide car il ne me reste plus que 1 semaine et sa fait 1 semaine que je suis entrain de me "casser le cul" à chercher une solution (j'ai pas envie de me faire lynché par mon tuteur de stage parce-que j'ai rien foutu). Merci tout de même de ta réponse.
A bon entendeur.
Lynkis

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours