patricia.b Posté 3 Octobre 2008 Posté 3 Octobre 2008 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 92Warning: 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 cacheheader("Pragma: no-cache");header("Cache-Control: no-cache, must-revalidate");// Requireinclude("planning_require.php");// Connection à la baseconnectBase();// On démarre une sessionsession_start();// Si la session n'existe pas ou si l'on deconnectif(!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éefunction connectBase(){ mysql_connect(HOSTNAME,USERNAME,PASSWORD); mysql_select_db(DATABASE);}// Insertion dans la tablefunction insertTable($nomTable,$valeurs){ $requette = "INSERT INTO $nomTable VALUES ".$valeurs; $resultat = mysql_query($requette); if($resultat) return true ; return false ;}// Selection d'une tablefunction selectTable($nomTable,$param){ $requette = "SELECT * FROM $nomTable ".$param; $resultat = mysql_query($requette); return $resultat ;}// Selection d'une table avec wherefunction selectTableWhere($nomTable,$valeurs,$param){ $requette = "SELECT * FROM $nomTable WHERE ".$valeurs." ".$param; $resultat = mysql_query($requette); return $resultat ;}// Selection de colonnes dans une table avec wherefunction 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 requetefunction 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éesfunction 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 basefunction updateSetWhere($nomTable,$set,$where){ $requette = "UPDATE $nomTable SET ".$set." WHERE ".$where; $resultat = mysql_query($requette); if($resultat) return true ; return false ;}// Deconnection de la basefunction deconnectBase(){ mysql_close();}// Crée une liste de formulaire HTML à partir d'une base de donnéefunction 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érosfunction 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 basefunction 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:mmfunction 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'imagefunction 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 lignefunction 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant