Appel d'un formulaire suite au traitement d'un formulaire.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Appel d'un formulaire suite au traitement d'un formulaire.

par leakcim51 » 10 juil. 2006, 10:47

J'ai fait du copier coller, afin de créer une fonction que j'ai mise dans le fichier day_off_action.php

Et j'appelle la fonction dans ma boucle.
$query="SELECT * FROM $TASK_ASSIGNMENTS_TABLE , $TASK_TABLE WHERE $TASK_ASSIGNMENTS_TABLE.task_id = $TASK_TABLE.task_id AND username='$user_id' AND prev_task='-1' ";
list ($qh,$num) = dbQuery($query);
if ($num>0)
{
	while ($data=dbResult($qh))
	{
		$task_id = $data["task_id"];
		task_day_off($task_id);
	}
}
voici le code de la fonction:
// Fonction pour mettre à jour les dates de début et de fin des tâches suivantes lors de la modification des congés
function task_day_off($task_id)
{
	include("table_names.inc");
	
	$task_id_end = $task_id;
	$bool_fin='0';

	while ($bool_fin!='1'){
		$query4 = "SELECT end_date , next_task FROM $TASK_TABLE WHERE task_id='$task_id_end'";
		list($qh4,$num4) = dbQuery($query4);
		if ( $num4 > '0' )
		{
			$data4=dbResult($qh4);
			$task_id_end=$data4["next_task"];
			
			if ($task_id_end != '-1')
			{
				$date_end = date('Y-n-j',strtotime($data4["end_date"]));

				dbQuery("UPDATE $TASK_TABLE set start_date='$date_end' WHERE task_id='$task_id_end'; ");
				
				$assigned = array();
				list ($qh6,$num6) = dbQuery("SELECT username FROM $TASK_ASSIGNMENTS_TABLE WHERE task_id='$task_id_end' ");
				if ($num6>0){
					while ($data6 = dbResult($qh6))
					{
						array_push($assigned, $data6["username"]);
					}
				}
				
				list ($qh5,$num5) = dbQuery("SELECT start_date , charge FROM $TASK_TABLE WHERE task_id='$task_id_end' ");
				if ($num5>0){
					$data5=dbResult($qh5);
					$charge = $data5["charge"];
					$date = $data5["start_date"];
					$nb_day_lib = "+ 1 day";
					$end_date = strtotime($nb_day_lib,strtotime($date));
					$end_date_day = date('j',$end_date);
					$end_date_month = date('n',$end_date);
					$end_date_year = date('Y',$end_date);
					
					foreach ($assigned as $username)
					{
						list ($qh6,$num6) = dbQuery("SELECT percentage from $TASK_ASSIGNMENTS_TABLE WHERE username='$username' AND task_id='$task_id_end' ");
						$data6 = dbResult($qh6);
						if (day_ouvre(-1,$end_date_day,$end_date_month,$end_date_year,$username))
						{
							$var = $data6["percentage"];
							$charge=$charge - $var/100;
						}
					}
					
					while ($charge>0)
					{
						$date = "".$end_date_year."-".$end_date_month."-".$end_date_day;
						$nb_day_lib = "+ 1 day";
						$end_date = strtotime($nb_day_lib,strtotime($date));
						$end_date_day = date('j',$end_date);
						$end_date_month = date('n',$end_date);
						$end_date_year = date('Y',$end_date);
						foreach ($assigned as $username)
						{
							list ($qh6,$num6) = dbQuery("SELECT percentage from $TASK_ASSIGNMENTS_TABLE WHERE username='$username' AND task_id='$task_id_end' ");
							$data6 = dbResult($qh6);
							if (day_ouvre(-1,$end_date_day,$end_date_month,$end_date_year,$username))
							{
								$charge=$charge - ($data6["percentage"] / 100);
							}
						}
					}
					$date = "".$end_date_year."-".$end_date_month."-".$end_date_day;
					$end_date = strtotime($date);
					$end_date = date('Y-n-j',$end_date);
					dbQuery("UPDATE $TASK_TABLE set end_date='$end_date' WHERE task_id='$task_id_end'");
				}
			}
		}
		if ($task_id_end == -1)
		{
			$bool_fin='1';
		}
	}
}
Merci

par Ultiny » 08 juil. 2006, 04:03

Là j'ai passé 5 mn à essayer de comprendre mais je pense pas avoir réussi!

Pour l'instant ce que je peux te dire c'est que 2 redirections via header() dans une même pages n'est évidement pas possible. En revanche, une redirection vers une page qui elle même redirige est possible (ya qu'à voir les kilomètres parcourus quand on se connecte sur des services .Net de MS).

La seule chose à laquelle faire attention est de ne pas rediriger mutuellement 2 pages.

Appel d'un formulaire suite au traitement d'un formulaire.

par leakcim51 » 07 juil. 2006, 16:42

Bonjour,

je cherche à modifier un logiciel de suivi de projet afin qu'il repond mieux à mes attentes.

Donc mon projet se décompose en tâches. Chaque tâche a une date de début et une date de fin.

A une tâche je peux attribuer des personnes.

Mon problème est le suivant:
je souhaite que lorsqu'une personne pose ses jours de congés, toutes les tâches qui lui sont affectées soient modifiées afin de prendre en compte la nouvelle date de fin.

Le problème vient du fait que je dois appeler un fichier (task_action.php) qui traite le formulaire d'edition de tache (task_edit.php) lorsque je viens de traiter mes congés (ajout, suppresion, edition) grâce au fichier day_off_action.php.

la boucle pour traiter toutes les tâches et la suivante:
$query="SELECT * FROM $TASK_ASSIGNMENTS_TABLE , $TASK_TABLE WHERE $TASK_ASSIGNMENTS_TABLE.task_id = $TASK_TABLE.task_id AND username=$user_id AND prev_task='-1' ";
list ($qh,$num) = dbQuery($query);
if ($num>0)
{
	while ($data=dbResult($qh))
	{
	....	
	}
}
Est ce que je peux utiliser:
Header("Location : task_action.php?action=edit&task_id=...");
sachant que à la fin de mon task_action.php j'ai déjà un HEADER qui me renvoie vers task_maint.php

Merci d'avance