Accueil > Programmes > Projets PHP pour Sites WEB > Agendas > Cyber Agenda ++ > Cyber-Agenda++ (Projet) > ajouter_jour
AGENDA
ajouter_jour
PHP
mercredi 1er mars 2006, par
<?PHP
require('admin/agenda.inc.php');
require('admin/mydata.inc.php');
require('admin/saints.fnc.php');
$titre="Ajouter un enregistrement";
define("_INIT_",0 );
define("_ACTION_",1 );
define("_DEBUG_",FALSE); // DEBUG
// define("_DEBUG_",TRUE); // DEBUG
$_SELF=$_SERVER['PHP_SELF']; // Nom de la page elle mÝme
// =============================================================================
// TESTE LE MODE D'ENTREE INIT = 0 si GET/POST est vide
// =============================================================================
$mode = isset($_POST['mode'])?$_POST['mode'] : _INIT_;
// =============================================================================
// SELON LE MODE D ENTREE
// =============================================================================
if(_DEBUG_) print "MODE=".$mode;
//==============================================================================
// Ouvre la liste des lieux
// * Si n'existe pas crée le fichier et annonce un tableau vide
// * Si existe l'ouvre te remplit le tableau des lieux
// * -------------------------------------------------
// * FileListe est le fichier qui contient les entrées
//==============================================================================
$fileliste='data/'.basename($mydata,"data.php")."lieux.php"; // Rajoute Liste au nom du fichier actif
// Ces entrée sont placées dans le tableau TAB_lieux
if (!file_exists($fileliste))
{
touch($fileliste);
$TAB_lieux = array();
}
else
{
$TAB_lieux=file($fileliste);
};
switch($mode)
{
case _INIT_ :
//==============================================================================
// ECRITURE DE LA PAGE WEB
// En mode AJOUT (valeur _INIT_ = 0)
//==============================================================================
// *** ENTETE ***
echo'
<html>
<head><title>Cyber Agenda - **{:- Bluegyn 2006 [AJOUTER JOURNEE]</title>
</head>
<body bgcolor="'.$agenda_couleur_fond.'" onload="F.lieu.focus();">
<script>window.status="Ajouter un enregistrement";</script>';
$msg='';
$date_actu='1-1-2006';
if (isset($_GET["date_actu"]))
$date_actu=$_GET["date_actu"];
if (isset($_GET["msg"]))
$msg=$_GET["msg"];
$tab = explode("-",$date_actu);
?>
<table width="100%"><tr><td WIDTH="33%"><h1>
<a href="agenda.php?d=<?echo$mydata?>"><?echo$agenda_titre?></a></h1></td><td WIDTH="33%" align="center">
<h3><img src="img/add.bmp" border="1"> <?echo$titre?></h3></td><td align="right">
<?echo date("d-m-Y").'<br>'.saint_jour();?></td></tr>
</table>
<hr>
<center>
<table width="<?echo$agenda_largeur?>">
<caption><h1>
<?echo$date_actu?></font>
</h1></caption><tr><th bgcolor="yellow" width="5%">
Heure</th><th valign="top" bgcolor="yellow" width="45%">
<?echo$legende_lieu?></th><th bgcolor="yellow" width="45%">
<?echo$legende_objet?></th><th bgcolor="yellow" width="5%">
Important</th></tr></table><hr><center>
<?PHP
$i=0;
// ========================================================
// * Ouvre le CALENDRIER
// * Le parcoure de A à Z et cherche la date du jour
// ========================================================
$fichier=fopen("data/".$mydata,"r+"); // r+ = Lecture ET écriture
while(!feof($fichier))
{ // $tableau[$i]=explode("|",fgets($fichier,256));
$ligne=explode("|",fgets($fichier,256));
$tab_date_actu=explode("-",$date_actu);
$jd_date_actu=gregoriantojd($tab_date_actu[1],$tab_date_actu[0],$tab_date_actu[2]);
if ($jd_date_actu==$ligne[0])
print
'<TH bgcolor='.$couleur_fond.'><font size="-1">'.$ligne[2].'</font></TH>'.
'<TD bgcolor="palegoldenrod"><font size="-1">'.$ligne[3].'</font></TD>'.
'<TD bgcolor="gainsboro"><font size="-1">'.$ligne[4].'</font></TD>'.
'<TD bgcolor="palegoldenrod"></TD></TR><TR>';
$i++;
};
fclose($fichier);
///////////////////////////////////////////////////////////
echo '
<form NAME="F" enctype="multipart/form-data" METHOD="POST" ACTION="'.$_SELF.'">
<input type="hidden" name="j" value="'.$tab[0].'">
<input type="hidden" name="m" value="'.$tab[1].'">
<input type="hidden" name="a" value="'.$tab[2].'">
<input type="hidden" name="CHOIX_AGENDA" value="'.$mydata.'">';
// ========================================================
// * AFFICHAGE TABLEAU
// ========================================================
echo '
<table name="T" bgcolor="'.$couleur_fond.'" border="'.$cadre_bord.'"
cellspacing="'.$cadre_espace.'" cellpadding="'.$cadre_marge.'">';
// *** 1ERE LIGNE = ENTETES ***
echo '
<tr>
<td>'.$legende_lieu.' </td>
<td>Clip</td>
<td>Heure</td>
<td>Minute</td>
</tr>';
// *** 2EME LIGNE = LES SAISIES ***
echo '
<tr>
<!--- CELL 1 = LISTE --->
<td valign="top">
<select name="liste" onClick="F.lieu.value=F.liste.value;">';
if (count($TAB_lieux)) // Si le tableau n'est pas vide
{
foreach($TAB_lieux as $lieux){echo'<option value="'.$lieux.'">'.$lieux;};
};
echo '
</select>
<input NAME="lieu" size="20" "maxlength=30"
title="Entrez une ligne de texte, Double Clic pour effacer"
onDblClick="F.lieu.value=\'\'";/> <br><br>'.$legende_objet.'
<br>
<textarea NAME="objet" cols="29" rows="6" title="Entrez plusieurs lignes de texte"></textarea>
</td>
<!-- COCHES ------------------------------------------------------------------->
<td valign="top">
<!-- input type="checkbox" name="important" value="0">Important -->
<input type="radio" checked name="important" value="0"> '.$legende_important0.'
<br>
<input type="radio" name="important" value="1">
<span style='.$style_important1.'>'.$legende_important1.'</span>
<br>
<input type="radio" name="important" value="2">
<span style='.$style_important2.'>'.$legende_important2.'</span>
<br>
<input type="radio" name="important" value="3">
<span style='.$style_important3.'>'.$legende_important3.'</span>
<br>
<input type="radio" name="important" value="4">
<span style='.$style_important4.'>'.$legende_important4.'</span><br>
</td>
<!-- HEURE -------------------------------------------------------------------->
<td>
<select NAME="h" value="'.$heure_debut.'" size="'.$hauteur_listes.'">';
for($i=$heure_debut;$i<=$heure_fin;$i++)
{
echo '<OPTION '.($i==date('H')?'SELECTED>':'>').($i<10?"0".$i:$i).'</option>';
};
echo '
</select>
</td>
<!-- MINUTES ------------------------------------------------------------------>
<td>
<select NAME="n" VALUE="00" size="'.$hauteur_listes.'">';
// Pointe l'heure sur la dizaine courante
for($i=0;$i<=59;$i+=$minutes)
{
print'<option '.($i==10*(int)(date('i')/10)?'SELECTED>':'>').($i<10?"0".$i:$i).'</option>';
};
echo '
</select>
</td>
</tr>
</table>
<HR/>
<input TYPE="BUTTON" VALUE="Retour/Annuler"
onClick="window.location.href=\'agenda.php\'">
<input TYPE="HIDDEN" NAME="mode" VALUE="1">
<input TYPE="RESET" VALUE="Initialiser">
<input TYPE="SUBMIT" VALUE="Valider/Ajouter">
</center>
</form>';
break;
// ========================================================
// ACTION DU FORMULAIRE
// * Sauvegarde des données
// ========================================================
case _ACTION_ :
// ========================================================
// * Nom du fichier de sauvegarde
// ========================================================
$filename = "data/".$mydata;
// ================================
// LECTURE DES DIFF CHAMPS POSTES
// ================================
$j=$_POST['j']; // Jour
$m=$_POST['m']; // mois
$a=$_POST['a']; // année
$date=$j.'-'.$m.'-'.$a; // date = jour mois annee
$heure=$_POST['h'].':'.$_POST['n']; // Heure
$lieu=$_POST['lieu']; // lieu
$objet=$_POST['objet']; // obket
$objet = str_replace (chr(13).chr(10) , "<BR>", $objet ) ;
$important =
(isset($_POST['important']) ? $_POST['important'] : "0");
// ================================
// TESTE LA VALIDITE DE LA DATE
// ================================
if (checkdate($m,$j,$a)==false)
{
print "<H1>Erreur de Date!</H1>";
Print ("<H1>Les valeurs saisies \"<I>".$date."</I>\" ne composent pas une date valide</H1>");
print "</CENTER><HR/>";
exit;
};
$date_nombre1=explode("-",$date);
$date_nombre2=gregoriantojd($date_nombre1[1],$date_nombre1[0],$date_nombre1[2]);
// ATTENTION seules des Double-Guillemets " "peuvent encadrer un echappement du type \n
// ***************************
$nouvel_enregistrement=
$date_nombre2."|".
$date."|".
$heure."|".
$lieu."|".
$objet."|".
$important."\n" ;
// ***************************
$nouvel_enregistrement=stripslashes($nouvel_enregistrement);
if(_DEBUG_) // Affiche le résultat intermédiaire en mode debogage
{
PRINT 'REF='.$date_nombre2.'<hr>';
PRINT 'DATE='.$date.'<hr>';
PRINT 'HEURE='.$heure.'<hr>';
PRINT 'LIEU='.$lieu.'<hr>';
PRINT 'OBJET='.$objet.'<hr>';
PRINT 'IMPORTANT='.$important.'<hr>';
echo '<form action="agenda.php"><input type="submit" value="Retour"></form>';
}; /* DEBUG */
//***
// LECTURE DU FICHIER ET MISE EN MEMOIRE
//***
$i=0;
if (file_exists($filename))
{
$fichier=fopen($filename,"r");
// PLACE CHAQUE LIGNE DANS LE TABLEAU DES LIGNES LUES
while(!feof($fichier))
{
$lignes_lues[$i]=fgets($fichier,256);
$i++;
}
fclose ($fichier);
};
//***
// AJOUT DU NOUVEL ENREGISTREMENT A LA FIN
//***
$lignes_lues[$i]=$nouvel_enregistrement;
//***
// TRI DES LIGNES EN MEMOIRE
//***
sort($lignes_lues);
//***
// ECRITURE DU FICHIER
//***
if (count($lignes_lues) > 0);
{
$fichier=fopen($filename,"w+");
foreach($lignes_lues as $tmp)
{
fputs($fichier,$tmp);
}
fclose ($fichier);
}
//==============================================================================
// Teste si le lieu est dans la liste et s'il n'y est pas le rajoute
//==============================================================================
require ('ajouter_liste.php');
// retour automatique à la page précédente:
if(!_DEBUG_)print('<meta http-equiv="refresh" content="0;URL=agenda.php">');
break;
}; /* END SWITCH */
echo '</body></html>';
1/3/2006
J’ai volontairement supprimé la page INSERER.PHP
Car elle représentait une faille de sécurité (car il suffisait de l’appeler avec les bons arguments pour rajouter un enregistrement à la base)
Maintenant elle est intégrée à ajouter_jour grâce à l’artifice du double passage aiguillé par l’instruction
switch ($mode)
- 1er Passage : case _INIT_ : break ;
- 2eme Passage case _ACTION_ : break ;
La page de mise à jour des listes ajouter_liste.php] est autonome
Elle est simplement injectée au bon endroit dans le code _ACTION_ par la directive :
- require(’ajouter_liste.php’) ;