Aller au contenu

problème avec un script d'agenda


Sujets conseillés

Posté

Bonjour,

Mes confrères conseillers municipaux m'ont demandé de mettre en ligne un agenda... comme je n'ai pas trop de temps car je travaille sur un autre projet, je suis allée chercher un script tout fait et je me retrouve avec deux erreurs (mais je suppose que la deuxième découle de la première) :

Warning: imagepng() [function.imagepng]: Unable to open 'weeks/2_2008_00.png' for writing in /home/roussillon/domains/roussillon-en-provence.fr/public_html/planning/index.php on line 92

Warning: filesize() [function.filesize]: Stat failed for weeks/2_2008_00.png (errno=2 - No such file or directory) in /home/roussillon/domains/roussillon-en-provence.fr/public_html/planning/index.php on line 95

Voici le script de la page d'index :

<?php

// Pas de cache
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");

// Require
include("planning_require.php");

// Connection à la base
connectBase();

// On démarre une session
session_start();

// Si la session n'existe pas ou si l'on deconnect
if(!isset($_SESSION['s_groupe']) or $action=="deconnect")
{
// On recupére le nom de la page en cours
$page = basename($_SERVER['SCRIPT_NAME']);

// Si pas d'action ou deconnection
if(!$action or $action=="deconnect")
{
// On detruit la session existante
session_destroy();
// On prépare la liste des groupes
$groupeSelect = selectToHtml("planning_groupes","s_groupe",0,1,5,"1");
// On inclus cette liste
include("tmpl/planning_accueil_cnt.html");
}

// Si on veux se connecter
if($action=="connect") {
// On enregistre la nom du groupe comme variable de connection
session_register("s_groupe");
// On redirige l'utilisateur
echo "<script language='javascript'>document.location.href='$page';</script>";
}
}
else
{
// Init des variables par défaut
$s_groupe = $_SESSION['s_groupe'] ;
$s_semaine = strftime("%U",mktime(0,0,0,$mon,$day,$year));
$s_annee = $year ;
if(!$s_annee ) $s_annee = date("Y") ;
if(!$s_semaine) $s_semaine = strftime("%U",time()) ;



// Planning de base
$testImg = planningBase();

// Selection des infos pour la semaine demandée
$infosSelect = selectColsTableWhere("planning_horaires.jour_semaine,
planning_horaires.heure_debut,
planning_horaires.heure_fin,
planning_horaires.info1,
planning_horaires.info2,
planning_horaires.info3",
"planning_horaires,planning_liens_grp_hor",
"planning_liens_grp_hor.groupe = '$s_groupe'
AND planning_liens_grp_hor.horaire = planning_horaires.id
AND planning_horaires.no_semaine = '$s_semaine'",
";");

// Parcours des infos selectionnées
while($infosRow = mysql_fetch_row($infosSelect))
{
// Ajout des infos à l'image de base
$infos = "$infosRow[3] - $infosRow[4]";
$testImg = ajouteHoraire($testImg,$infosRow[0],$infosRow[1],$infosRow[2],$infos);
}

$nom_grp_req = selectTableWhere("planning_groupes","id = '$s_groupe'",";");
$infos_groupe = mysql_fetch_row($nom_grp_req);
$nom_grp = $infos_groupe[1];

// Plus besoin de la base. On déconnecte
deconnectBase();

// On donne un nom à l'image
$nomFich = "weeks/".$s_groupe."_".$s_annee."_".$s_semaine.".png";

// On la sauvegarde sur le serveur
imagepng($testImg, "$nomFich"); [b]//LIGNE 92[/b]

// On récupére la taille de l'image
$sizeImg = filesize("$nomFich"); [b]//LIGNE 95[/b]

if($day && $mon && $year){ $posTopDate = 25 ; }else{ $posTopDate = -1000 ; }

// En-tête - fichiers html
include("planning_calendrier.php");
include("tmpl/planning_header.html");
include("tmpl/planning_body.html");


}


?>

et celui de la page de fonctions qui est en "require" dans la page planning_require.php.

<?php

/****************************************************/
/* FONCTIONS POUR LES REQUETES BdD */
/****************************************************/

// Connection à la base de donnée
function connectBase()
{
mysql_connect(HOSTNAME,USERNAME,PASSWORD);
mysql_select_db(DATABASE);
}

// Insertion dans la table
function insertTable($nomTable,$valeurs)
{
$requette = "INSERT INTO $nomTable VALUES ".$valeurs;
$resultat = mysql_query($requette);
if($resultat) return true ;
return false ;
}

// Selection d'une table
function selectTable($nomTable,$param)
{
$requette = "SELECT * FROM $nomTable ".$param;
$resultat = mysql_query($requette);
return $resultat ;
}

// Selection d'une table avec where
function selectTableWhere($nomTable,$valeurs,$param)
{
$requette = "SELECT * FROM $nomTable WHERE ".$valeurs." ".$param;
$resultat = mysql_query($requette);
return $resultat ;
}

// Selection de colonnes dans une table avec where
function selectColsTableWhere($cols,$nomTable,$valeurs,$param)
{
$requette = "SELECT $cols FROM $nomTable WHERE ".$valeurs." ".$param;
$resultat = mysql_query($requette);
return $resultat ;
}

// Retournée le nombre d'éléments d'une requete
function numInTableWhere($nomTable,$valeurs,$param)
{
$requette = "SELECT * FROM $nomTable WHERE ".$valeurs." ".$param;
$resultat = mysql_query($requette);
$nbresult = mysql_num_rows($resultat);
return $nbresult ;
}

// Supprime un element dans une base de données
function deleteFromWhere($nomTable,$valeurs)
{
$requette = "DELETE FROM $nomTable WHERE ".$valeurs;
$resultat = mysql_query($requette);
if($resultat) return true ;
return false ;
}

// Met à jour un element dans la base
function updateSetWhere($nomTable,$set,$where)
{
$requette = "UPDATE $nomTable SET ".$set." WHERE ".$where;
$resultat = mysql_query($requette);
if($resultat) return true ;
return false ;
}

// Deconnection de la base
function deconnectBase()
{
mysql_close();
}

// Crée une liste de formulaire HTML à partir d'une base de donnée
function selectToHtml($nomTable,$nomSelect,$colValue,$colOption,$height,$valSelected)
{
$html = "<select name=\"$nomSelect\" size=\"$height\">\n";
$requette = "SELECT * FROM ".$nomTable." ;";
$resultat = mysql_query($requette);
while($ligne = mysql_fetch_row($resultat))
{
if($ligne[$colValue]!=$valSelected)
{
$html .= "<option value=\"$ligne[$colValue]\">$ligne[$colOption]</option>\n";
}
}
$html .= "</select>\n";
return $html ;
}

//// Crée une liste de formulaire HTML à partir de numéros
function selectNumToHtml($debut,$fin,$nomSelect,$valSelected)
{
$html = "<select name=\"$nomSelect\">\n";
for($i=$debut;$i<=$fin;$i++){
if($i==$valSelected)
{
$html .= "<option value=\"$i\" selected>$i</option>\n";
}
else
{
$html .= "<option value=\"$i\">$i</option>\n";
}
}
$html .= "</select>\n";
return $html ;
}

// Crée un nouvel ID d'une base
function newIdForTable($cols,$nomTable)
{
$requette = "SELECT $cols FROM $nomTable ;";
$resultat = mysql_query($requette);
$max = 0;
while($ligne = mysql_fetch_row($resultat)){
if($ligne[0]>=$max) $max=$ligne[0];
}
return ($max+1) ;
}


/****************************************************/
/* FONCTIONS POUR LA CREATION DU PLANNING */
/****************************************************/

// Affiche un planning de base (vide)
function planningBase()
{
// Appel des variables globales
global $cExText, $cExBg, $cExCadre;
global $cadreH,$sizeMarge,$topMarge,$LRMarge,$sizeV,$sizeHorV;
global $joursSem,$police,$heureDep ;

// Initialisations de variables pour la création de l'image
$arraySem = explode("|","$joursSem");
$countSem = count($arraySem);
$totalMrg = ($countSem + 1) * $sizeMarge;
$cadreV = $sizeV - (2 * $sizeMarge) - $topMarge;
$sizeH = $LRMarge * 2 + $totalMrg + ($cadreH * $countSem);

// Crétion de l'image
$image = imagecreate($sizeH,$sizeV);

// Attribution des couleurs à l'image
$cText = imagecolorallocate($image, $cExText[0], $cExText[1], $cExText[2]);
$cBg = imagecolorallocate($image, $cExBg[0], $cExBg[1], $cExBg[2]);
$cCadre = imagecolorallocate($image, $cExCadre[0], $cExCadre[1], $cExCadre[2]);

// Couleur du fond
imagefilledrectangle($image, 0, 0, $sizeH,$sizeV,$cBg);

// Ajout des jours et des colonnes
for($i=0;$i<$countSem;$i++)
{
if($i!=0){ $cadreMarge = $sizeMarge * $i; }
$x1Cadre = $LRMarge + $cadreMarge + ($cadreH * $i);
$x2Cadre = $x1Cadre + $cadreH ;
$y1Cadre = $topMarge + $sizeMarge ;
$y2Cadre = $y1Cadre + $cadreV ;
imagefilledrectangle($image, $x1Cadre, $y1Cadre, $x2Cadre, $y2Cadre, $cCadre);
imagestring ($image, $police, $x1Cadre, 5, $arraySem[$i], $cText);
}

$j = $y1Cadre ;
$h = $heureDep ;
while($j<$sizeV && $h<=24)
{
imageline ($image, $LRMarge, $j, $sizeH, $j, $cBg);
imagestring ($image, $police, 5, $j, $h."h00", $cText);
imagestring ($image, $police, $sizeH-$LRMarge, $j, $h."h00", $cText);
$j += $sizeHorV ;
$h++;
}

// On retourne l'image finale
return $image;
}

// Convertie un decimal en heure u type hh:mm
function convertIntToHor($val)
{
$valArray = explode(".","$val");
if(!$valArray[1]) { $min = "00" ; } else { $min = (int)((($valArray[1]*10)/100)*60) ; }
return $valArray[0]."h".substr($min, 0, 2);
}

// Permet d'ajouter une plage horaire sur l'image
function ajouteHoraire($image,$nJour,$hDeb,$hFin,$infos)
{
// Appel des variables globales
global $cExHor, $cExText, $cExCadre, $cExBg ;
global $cadreH, $sizeMarge, $topMarge, $sizeHorV,$LRMarge ;
global $police, $retChariot, $heureDep;
global $margeTxt,$cdrBdr;

// Initialisations de variables (horaire, texte et infos)
$x1Hor = $LRMarge + ($sizeMarge * ($nJour-1)) + ($cadreH * ($nJour - 1)) ;
$x2Hor = $x1Hor + $cadreH ;
$y1Hor = ($hDeb - $heureDep) * $sizeHorV + $topMarge + $sizeMarge ;
$y2Hor = ($hFin - $hDeb) * $sizeHorV + $y1Hor ;

$textX = $x1Hor + $margeTxt;
$textY = $y1Hor + $margeTxt;

$infosHor = convertIntToHor($hDeb)." - ".convertIntToHor($hFin)."||$infos";

// Attribution des couleurs à l'image
$cText = imagecolorallocate($image, $cExText[0], $cExText[1], $cExText[2]);
$cHor = imagecolorallocate($image, $cExHor[0], $cExHor[1], $cExHor[2]);
$cBg = imagecolorallocate($image, $cExBg[0], $cExBg[1], $cExBg[2]);
$cCadre = imagecolorallocate($image, $cExCadre[0], $cExCadre[1], $cExCadre[2]);

// Affichage de l'horaire et du texte
imagefilledrectangle($image, $x1Hor, $y1Hor, $x2Hor, $y2Hor, $cText);
imagefilledrectangle($image, $x1Hor+$cdrBdr,$y1Hor+$cdrBdr,$x2Hor-$cdrBdr,$y2Hor-$cdrBdr,$cHor);
stringRet($image,$police,$textX,$textY,$infosHor,$cBg,$retChariot,"||");

return $image;
}

// Permet d'afficher un texte avec des retours à la ligne
function stringRet($image,$police,$x,$y,$text,$color,$sret,$cret)
{
$array_txt = explode("$cret","$text");
$count_arr = count($array_txt);
for($i=0;$i<=$count_arr;$i++)
{
imagestring ($image,$police,$x,$y,$array_txt[$i],$color);
$y = $y + $sret;
}
}


?>

Merci par avance à celle ou celui qui pourra me donner un coup de main...

Bonne fin de journée.

Veuillez vous connecter pour commenter

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



Connectez-vous maintenant
×
×
  • Créer...