Diskuze: Stylovani souboru PHP
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Josef Kuchař - Pepa489:16.5.2015 15:38
Použij prosím tlačítko zdrojový kód, tento kód je jedna z největších špagetti prasáren co jsem vyděl, ale každý nějak začínal
<?php
/**
* ÚVOD
* Typ uživatele: 1-admin, 2-učitel, 3-rodič, neexistuje $_SESSION["typ"]-nepřihlášený uživatel
*/
require_once("Databaze.php");
class Galerie extends Databaze {
private $pripony = array("jpg", "jpeg", "Jpg", "Jpeg", "JPG", "JPEG");
protected $mysqli;
public function __construct()
{
parent::__construct();
}
public function vypisNacteniScriptu()
{
if(!empty($_GET["stranka"]))
{
switch($_GET["stranka"])
{
case "noveAlbum":
echo '<script src="upload/jquery-1.4.min.js" type="text/javascript"></script>
<script src="upload/jquery.flash.min.js" type="text/javascript"></script>
<script src="upload/progressBar.js" type="text/javascript"></script>
<script src="upload/agile-uploader-3.0.js" type="text/javascript"></script>
<link type="text/css" rel="stylesheet" href="upload/agile-uploader.css" />';
break;
case "alba":
echo '<link href="lightbox.css" rel="stylesheet" />
<script src="js/jquery-1.11.0.min.js"></script>
<script src="js/lightbox.js"></script>';
break;
case "upravitAlbum":
echo '<script src="upload/jquery-1.4.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$(\'#oznacitVse\').click(function(event) { //on click
if(this.checked) { // check select status
$(\'.chboxObr\').each(function() { //loop through each checkbox
this.checked = true; //select all checkboxes with class "checkbox1"
});
}else{
$(\'.chboxObr\').each(function() { //loop through each checkbox
this.checked = false; //deselect all checkboxes with class "checkbox1"
});
}
});
});
</script>';
}
}
}
// Má na starost výpis obsahu stránky (volá dané metody na výpis dané části). Dále rozděluje přístup podle typu uživatele. Nepřihlášený uživatel nemá přístup ke galerii vůbec.
public function vypisObsah()
{
if(!$_GET && isset($_SESSION["typ"])) //Zobrazí rozcestník pokud: uživatel je přihlášený a neexistuje proměnná $_GET
{
echo $this->vypisUvod();
return;
}
elseif(isset($_SESSION["typ"]) && isset($_GET["stranka"])) // Přihlášený uživatel vybere kam chce jít pomocí proměnné "stranka".
{
switch($_GET["stranka"]) // Pokud zadá stránku,která není v nabídce -> vyhodí chybu.
{
case "alba": // Vypíše seznam alb
$this->vypisAlba();
break;
case "noveAlbum": // Vypíše přidání nového alba
if($_SESSION["typ"] != 3)
{
$this->vypisNoveAlbum();
}
else echo "Nemáš přístup k této stránce!";
break;
case "upravitAlbum": // Vypíše upravu alb
if($_SESSION["typ"] != 3)
{
$this->vypisAlba();
}
else echo "Nemáš přístup k této stránce!";
break;
default:
echo "Zadaná stránka neexistuje!";
}
}
else echo "Musiš se přihlásit pro vstup na tuto stránku!";
}
private function vypisUvod()
{
switch($_SESSION["typ"])
{
case 1:
return '<p><a href="galerie.php?stranka=alba">Prohlédnout alba</a></p>
<p><a href="galerie.php?stranka=noveAlbum">Nové album</a></p>
<p><a href="galerie.php?stranka=upravitAlbum">Upravit alba</a></p>';
break;
case 2:
return '<p><a href="galerie.php?stranka=alba">Prohlédnout alba</a></p>
<p><a href="galerie.php?stranka=noveAlbum">Nové album</a></p>
<p><a href="galerie.php?stranka=upravitAlbum">Upravit alba</a></p>';
break;
case 3:
return '<p><a href="galerie.php?stranka=alba">Prohlédnout alba</a></p>';
break;
}
}
private function vypisNoveAlbum()
{
$albumNazev = "";
$albumPopisek = "";
$albumId = "";
if(!empty($_POST["pridejObr-albumNazev"]) && !empty($_POST["pridejObr-albumPopisek"]))
{
$albumNazev = $_POST["pridejObr-albumNazev"];
$albumPopisek = $_POST["pridejObr-albumPopisek"];
}
if(!empty($_POST["pridejObr-albumId"]))
{
$albumId = $_POST["pridejObr-albumId"];
}
echo '<form id="multipleDemo" enctype="multipart/form-data">
<input type="hidden" name="album_id" value="'.$albumId.'">
<label for="album_nazev">Název alba</label><br />
<input type="text" name="album_nazev" value="'.$albumNazev.'"><br />
<label for="album_popisek">Popisek pro album</label><br />
<textarea rows="4" cols="30" name="album_popisek" maxlength="255">'.$albumPopisek.'</textarea><br />
<div id="multiple"></div>
</form>
<a href="#" onClick="document.getElementById(\'agileUploaderSWF\').submit();">Submit</a>
<script type="text/javascript">
$("#multiple").agileUploader({
submitRedirect: "?stranka=alba",
formId: "multipleDemo",
flashVars: {
firebug: true,
form_action: "./obsluha/galerieZapis.php",
file_limit: 20,
max_post_size: (20000 * 1024),
file_post_var: "Filedata",
max_height: 1500,
max_width: 1500
}
});
</script>';
}
public function zpracujObrazek()
{
$sql = 'SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = "'.SQL_DATABASE.'" AND TABLE_NAME = "obrazek"';
$posledni_obr = $this->vyberJedenVysledek($sql);
$posledni_obr = ($posledni_obr == -1) ? 1 : $posledni_obr;
if(empty($_POST["album_id"]))
{
$sql = 'SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = "'.SQL_DATABASE.'" AND TABLE_NAME = "album"';
$posledni_album = $this->vyberJedenVysledek($sql);
$posledni_album = ($posledni_album == -1) ? 1 : $posledni_album;
}
else
{
$posledni_album = $_POST["album_id"];
}
foreach($_FILES["Filedata"]["error"] as $key => $error)
{
if($error == UPLOAD_ERR_OK)
{
$jmenoDocasne = $_FILES["Filedata"]["tmp_name"][$key];
$jmeno = basename($_FILES["Filedata"]["name"][$key]);
$pripona = substr(strrchr($jmeno,'.'), 1);
if(in_array($pripona, $this->pripony))
{
move_uploaded_file($jmenoDocasne, "./../images/temp/".$posledni_obr.".".$pripona);
$this->udelejMiniaturu($posledni_obr.".".$pripona, $posledni_obr.".".$pripona);
rename("./../images/temp/".$posledni_obr.".".$pripona, "./../images/obrazky/".$posledni_obr.".".$pripona);
$sql = 'INSERT INTO obrazek(id_album, pripona) VALUES('.$posledni_album.', "'.$pripona.'")';
$this->prerus($sql);
$posledni_obr++;
}
}
}
$sql = "SELECT id_album FROM album WHERE id_album = ".$posledni_album;
if($this->vyberPoleObjektu($sql))
{
return;
}
$album_nazev = "";
$album_popisek = "";
$vytvoreno = date("Y-m-d H:i:s", time());
if($_POST)
{
if(!empty($_POST["album_nazev"]))
{
$album_nazev = $_POST["album_nazev"];
}
if(!empty($_POST["album_popisek"]))
{
$album_popisek = $_POST["album_popisek"];
}
}
$sql = 'INSERT INTO album(nazev, vytvoreno, popisek) VALUES("'.$album_nazev.'", "'.$vytvoreno.'", "'.$album_popisek.'")';
$this->prerus($sql);
}
private function udelejMiniaturu($obr, $nazev)
{
$strana = 250;
$imgt = "";
$imgcreatefrom = "";
$nova_width = "";
$nova_width = "";
$obrDetail = getimagesize("./../images/temp/".$obr);
$width = $obrDetail[0];
$height = $obrDetail[1];
if($width >= $height)
{
$nova_width = $strana;
$nova_height = intval($nova_width * $height / $width);
}
else
{
$nova_height = $strana;
$nova_width = intval($nova_height * $width / $height);
}
if($obrDetail[2] == IMAGETYPE_JPEG)
{
$imgcreatefrom = "imagecreatefromjpeg";
$imgt = "ImageJPEG";
}
if($imgt)
{
$staryObr = $imgcreatefrom("./../images/temp/$obr");
$novyObr = imagecreatetruecolor($nova_width, $nova_height);
imagecopyresized($novyObr, $staryObr, 0, 0, 0, 0, $nova_width, $nova_height, $width, $height);
$imgt($novyObr, "./../images/miniatury/" . "mini_".$nazev);
//imageantialias($novyObr, true);
}
}
private function vypisAlba()
{
if(!empty($_GET["id"]) && $_GET["stranka"] === "upravitAlbum")
{
$this->vypisUpravitAlbum();
return;
}
elseif(!empty($_GET["id"]) && $_GET["stranka"] == "alba")
{
$this->vypisAlbum();
return;
}
$pocetNaStranku = 2;
$strankovani = (empty($_GET["strankovani"])) ? 0 : ($_GET["strankovani"] - 1)*$pocetNaStranku;
$sql = "SELECT COUNT(id_album) AS pocet FROM album";
$pocet = $this->vyberJedenVysledek($sql);
$sql = "SELECT id_album, nazev, popisek FROM album ORDER BY vytvoreno DESC LIMIT $strankovani,$pocetNaStranku";
if($poleAlb = $this->vyberPoleObjektu($sql))
{
foreach ($poleAlb as $album) {
echo '<a href="?stranka='.$_GET["stranka"].'&id=' . $album->id_album . '">';
echo '<div class="vypis_alb">';
echo "<h2>$album->nazev</h2><br />";
echo "<p>$album->popisek</p><br />";
$sql = "SELECT id_obrazku, id_album, pripona FROM obrazek WHERE id_album=$album->id_album LIMIT 6";
if ($poleObrazku = $this->vyberPoleObjektu($sql)) {
foreach ($poleObrazku as $obrazek) {
echo '<img src="./images/miniatury/mini_' . $obrazek->id_obrazku . '.' . $obrazek->pripona . '" width=80 />';
}
}
echo '</div>';
echo '</a>';
}
for ($i = 1; $i <= ceil($pocet / $pocetNaStranku); $i++) {
echo "<a href='?stranka=".$_GET['stranka']."&strankovani=$i'>$i</a> ";
}
}
else echo "Neplatný příkaz!";
}
private function vypisAlbum()
{
$sql = "SELECT nazev, vytvoreno, popisek FROM album WHERE id_album = ".$_GET['id'];
if($poleAlb = $this->vyberPoleObjektu($sql))
{
foreach($poleAlb as $album)
{
echo "<div id=\"albumHlavicka\">";
echo "<h2>$album->nazev</h2>";
echo "<p>$album->popisek</p>";
echo "</div>";
}
}
else
{
echo "Album neexistuje!";
return;
}
$sql = "SELECT id_obrazku, pripona FROM obrazek WHERE id_album = ".$_GET['id'];
if($poleObrazku = $this->vyberPoleObjektu($sql))
{
$pocet = 0;
echo '<div id="obrazky">';
echo '<table>';
foreach ($poleObrazku as $obrazek)
{
$pocet++;
if($pocet == 1)
{
echo '<tr>';
}
echo '<td><a href="./images/obrazky/'.$obrazek->id_obrazku.'.'.$obrazek->pripona.'" data-lightbox="example-set" data-title="">
<img src="./images/miniatury/mini_'.$obrazek->id_obrazku.'.'.$obrazek->pripona.'" width="150" />
</td>';
if($pocet == 4)
{
echo '</tr>';
$pocet = 0;
}
}
echo '</table>';
echo '</div>';
}
else
{
echo "Nenalezeny žádné obrázky!";
}
}
private function vypisUpravitAlbum()
{
if(!empty($_POST["album_tl_upravit"]))
{
$this->upravParametryAlba();
}
if(!empty($_POST["album_tl_obrVymazat"]))
{
$this->vymazObrazky();
}
if(!empty($_POST["vymazAlb-tl"]))
{
$this->vymazAlbum();
return;
}
$sql = "SELECT id_album, nazev, popisek FROM album WHERE id_album = " . $_GET["id"];
if($album = $this->vyberPoleObjektu($sql))
{
echo '<form method="post">';
echo '<label for="album_nazev">Název alba</label><br />';
echo '<input type="text" name="album_nazev" value="' . $album[0]->nazev . '" /><br />';
echo '<label for="album_popisek">Popisek pro album</label><br />';
echo '<textarea rows="4" cols="30" name="album_popisek" maxlength="255">'.$album[0]->popisek.'</textarea><br />';
echo '<input type="submit" name="album_tl_upravit" value="Upravit" />';
echo '</form>';
echo '<h2>Vyber obrázky, které chceš odstranit</h2>';
$sql = "SELECT id_obrazku, pripona FROM obrazek WHERE id_album = ".$_GET['id'];
if($poleObrazku = $this->vyberPoleObjektu($sql))
{
$pocet = 0;
echo '<div id="obrazky">';
echo '<form method="POST">';
echo '<input type="checkbox" id="oznacitVse"/> Označit vše <br />';
echo '<table>';
foreach ($poleObrazku as $obrazek)
{
$pocet++;
if($pocet == 1)
{
echo '<tr>';
}
echo '<td>
<img src="./images/miniatury/mini_'.$obrazek->id_obrazku.'.'.$obrazek->pripona.'" width="150" />
<input type="checkbox" class="chboxObr" name="obrVymaz[]" value="'.$obrazek->id_obrazku.'"/>
</td>';
if($pocet == 4)
{
echo '</tr>';
$pocet = 0;
}
}
echo '</table>';
echo '<input type="submit" name="album_tl_obrVymazat" value="Vymazat obrázky" />';
echo '</form>';
echo '</div>';
}
else
{
echo "Nenalezeny žádné obrázky!";
}
echo '<form method="post" action="?stranka=noveAlbum">
<input type="hidden" name="pridejObr-albumNazev" value="'.$album[0]->nazev.'" />
<input type="hidden" name="pridejObr-albumPopisek" value="'.$album[0]->popisek.'" />
<input type="hidden" name="pridejObr-albumId" value="'.$album[0]->id_album.'" />
<input type="submit" name="pridejObr-tl" value="Přidat obrázky do alba" />
</form>';
echo '<form method="post">
<input type="hidden" name="vymazAlb-albumId" value="'.$album[0]->id_album.'" />
<input type="submit" name="vymazAlb-tl" value="Vymazat album" />
</form>';
}
else
{
echo "Album neexistuje!";
return;
}
}
private function vymazObrazky()
{
if(empty($_POST["obrVymaz"]))
{
echo "Nevybral jsi žádné obrázky!";
return;
}
foreach($_POST["obrVymaz"] as $obrazek)
{
$sql = "SELECT pripona FROM obrazek WHERE id_obrazku = ". $obrazek;
$obr = $this->vyberPoleObjektu($sql);
$sql = "DELETE FROM obrazek WHERE id_obrazku = ".$obrazek;
if($this->prerus($sql))
{
unlink("./images/obrazky/".$obrazek.".".$obr[0]->pripona);
unlink("./images/miniatury/mini_".$obrazek.".".$obr[0]->pripona);
}
else
{
echo "Nepodařilo se vymazat obrázek: " . $obrazek;
}
}
echo "Obrázky byly úspěšně vymazány.";
}
private function upravParametryAlba()
{
$kontrolaNazev = 1;
$kontrolaPopisek = 1;
if(!$this->kontrolaRegVyrazu($_POST["album_nazev"], '/^[\pL\pN -]{2,}$/u'))
{
echo "Název alba je špatně zadán!";
$kontrolaNazev = 0;
}
if(!$this->kontrolaRegVyrazu($_POST["album_popisek"], '/^[\pL\pN\s.:-_!?,%]{2,}$/u'))
{
echo "Popisek alba byl špatně zadán!";
$kontrolaPopisek = 0;
}
if(!($kontrolaNazev * $kontrolaPopisek))
return FALSE;
$sql = "UPDATE album SET nazev = \"" . $_POST["album_nazev"] . "\", popisek = \"" . $_POST["album_popisek"] . "\" WHERE id_album = ". $_GET["id"];
if(!$this->prerus($sql))
{
echo "Změnu se nepodařilo uložit!";
return FALSE;
}
echo "Změna byla úspěšně provedena.";
return TRUE;
}
private function vymazAlbum()
{
$sql = "SELECT id_obrazku, pripona FROM obrazek WHERE id_album = ".$_POST["vymazAlb-albumId"];
$obrazky = $this->vyberPoleObjektu($sql);
$sql = "DELETE FROM obrazek WHERE id_album =".$_POST["vymazAlb-albumId"];
$vymazObr = $this->prerus($sql);
$sql = "DELETE FROM album WHERE id_album = ".$_POST["vymazAlb-albumId"];
$vymazAlbum = $this->prerus($sql);
if(($vymazAlbum * $vymazObr))
{
foreach($obrazky as $obrazek)
{
unlink("./images/obrazky/".$obrazek->id_obrazku.".".$obrazek->pripona);
unlink("./images/miniatury/mini_".$obrazek->id_obrazku.".".$obrazek->pripona);
}
echo "Vymazání bylo úspěšné!";
}
}
private function kontrolaRegVyrazu($prom, $regularVyraz)
{
if(preg_match($regularVyraz, $prom)) return TRUE;
else return FALSE;
}
}
Martin Konečný (pavelco1998):16.5.2015 15:55
Dotaz - kdo ti poslal tenhle script (nebo spíš, kdo ho psal)?
terezagabrielova:16.5.2015 15:57
Spolužák, já ho mám nastylovat
Martin Konečný (pavelco1998):16.5.2015 16:22
Máš smůlu v tom, že spolužák vůbec neví, že je důležitá i
přehlednost (kromě toho, že to má špatně napsaný).
Tvým cílem tedy je té stránce udělat nějakou grafiku nebo co?
terezagabrielova:16.5.2015 16:36
Zde http://prntscr.com/75uvrx mam nastylovat galerii, ke ktere mi dal ten soubor PHP
hanpari:16.5.2015 16:43
At ti da html vystup, ten nastyluj pomoci css do externiho souboru a pak mu dej vysledek, at ho zapracuje. Tj. doplni pripadne atributy class a id do zdrojoveho kodu. Mel by mu stacit seznam zmen v html kodu, zbytek bude v externim css
hanpari:16.5.2015 16:45
Pardon chyba v reakci precti si prispevek nad timto
Martin Konečný (pavelco1998):16.5.2015 16:53
V tom případě jak píše hanpari, ať ti pošle jen HTML a ne celej PHP
script. Ty to pomocí CSS nastyluješ a pošleš zpět. On si pak udělá v tom
kódu změny, které budou třeba.
Je škoda, že vás na škole neučí něco jako šablonovací systémy.
offtopic
pavelco1998: já bych byl rád i za tohle, jsem ve třetím ročníku IT, a
ohledně webu jsme se naučili základní html tagy a v PHP nás tam učej tak
hnusný a nepřehledný prásárny, okolo OOP to ani neletělo, maximálně tak
funkce a ještě k tomu bez parametru, na co taky když se dá použít
globální proměnná...
Zobrazeno 11 zpráv z 11.