[PHP] Prosty system skorek

[PHP] Prosty system skorek
PE
  • Rejestracja:około 23 lata
  • Ostatnio:ponad 8 lat
0

Jak w temacie ;) Potrzebuje pomysl na jakis prosty system skorek. Wiem ze przyklad mam w coyote ale tam jest to za trudno dla mnie zrobione :) Wiem ze latwiejszy skrypt moze miec mniejsza elastycznosc ale mmo wszystko jak by ktos mial jakis konkretny pomysl to chetnie wyslucham :)

Nawet sam pomyslalem o czyms takim i niby wszystko jest dobrze poza tabelkami :) W coyote jest to tak jakos fajne zrobione i to dziala a ja wlasnie nie wiem jak zrobic aby to dzialalo :/ Reszta wydaje sie dosc prosta tylko wlasnie te tabelki spedzaja mi sen z powiek ;)


Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0

Jak chcesz coś całkiem prostego, to po prostu zrób jedną stronę, ale odwołującą się do różnych styli CSS. Wtedy strona będzie niby taka sama, ale jak to się dobrze zrobi, to wszystko może wyglądać całkiem inaczej. Innym sposobem są template'sy, ale to już trochę kombinowanie. Ja u siebie zrobiłem system oparty na plikach TPL obsługiwanych przez bardzo prosty skrypcik, ale <ort>na razie</ort> tego nigdzie nie ma udostępnionego.


Grunt to uziemienie...
Amadek
  • Rejestracja:około 20 lat
  • Ostatnio:około 17 lat
0

Możesz napisać w PHP, system który będzie odczytywał zmienną zapisaną w cookie. A zmienna ta będzie wcześniej definiowana prez użytkownika który wybierze sobie na stronie który skin chce używac.

Bardzo łatwo to zrobić, i jest jedna zaleta iz uzytkownik zawsze gdy wejdzie na strone zawsze będzie widział wybrane przez siebie skin, no chyba ze usunie cookie ale to juz jego sprawa:D

Kooba
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 lat
0

Może taki prosty system templatesów, przypadnie Ci do gustu http://webcity.pl/webcity/artykuly.php/t/5 :|


<url>http://kooba.pl/</url>
Deti
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
0

Pedros.. zobacz dokładnie system Coyote - nie jest to takie skomplikowane - jest tylko parser, który odpowiednio je obsługuje i wstawia za komentarze odpowiednie dane, wartości.

Mowa o Coyote 0.9.1 .. w 0.9.2 jest już troche inna sytuacja.


RS
  • Rejestracja:ponad 22 lata
  • Ostatnio:8 miesięcy
0

Szablony - wlasne i proste, albo duze i fajne - Smarty, Savant ...
zmiana CSS - odsylam do stron w3c i mozilli.

Przesz to generalnie banal - parsujesz pliki zamieniajac w nich odpowiednie miejsca, albo np. ladujesz poszczegolne bloki kodu z pliku do zmiennych.

PE
  • Rejestracja:około 23 lata
  • Ostatnio:ponad 8 lat
0

Wiem ze to jest niby tylko zmiana komentarza na cos tam super to mi nawet wychodzilo ;) Schody zaczely sie gdy mam powiedzmy wstawic tabelke na strone. Przeciez nie wiem ile bedzie wygenerowanych wierszy :) Nie da sie jakos tego zrobic inaczej niz powiedzmy:


RS
  • Rejestracja:ponad 22 lata
  • Ostatnio:8 miesięcy
0
piechnat
  • Rejestracja:prawie 23 lata
  • Ostatnio:ponad 3 lata
0

i zeby kopiowac to co pomiedzy znacznikami i w petle? :>

...ostatnio jak robilem nowy design do strony domowej to wlasnie chcialem uzyc jakichs smartow czy czegos bo to teraz takie modne ale jak zobaczylem manual do tych szablonow to mi sie odechcialo uczyc...

...pomyslalem chwile i napisalem najprostsza klase do parsowania szablonow :D epoka kamienia lupanego, trzeba byc ostroznym jak sie tego uzywa ale dziala, na dole maly opis...

http://piechnat.iglu.cz/download/simple_template_parser.txt


ZI
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 18 lat
  • Postów:292
0

to ja moze wrzuce tutaj swoje wypociny:P licze na jakies komentarze i sugestje:

Kopiuj
<?php
class Template
{
    var $text;
    var $stale;
    var $warunki;
    var $iloscwaronkow=0;

    var $textpetli;
    var $petla;
    var $rekord;
    var $stalepetli;
    var $warunkipetli;
    var $iloscwaronkowpetli=0;
    
    var $nazwapola;
    var $typpola;
    var $wartoscpola;
    var $dane;

    function Template($plik)
    {
        $fd = fopen($plik, "r");
        $this ->text = fread($fd, filesize($plik));
        $this ->text =str_replace("\n","",$this ->text);
    }

    function Dodajstala($stala,$wartosc)
    {
        $this ->stale = array_merge($this->stale, $stala);
        $this ->stale[$stala]= $wartosc;
    }
    
    function Dodajpole($nazwa,$typ,$wartosc,$dane)
    {
        $this ->nazwapola[count($this ->nazwapola)] = $nazwa;
        $this ->typpola[count($this ->typpola)] = $typ;
        $this ->wartoscpola[count($this ->wartoscpola)] = $wartosc;
        $this ->dane[count($this ->dane)] = $dane;
    }

    function sprawdzformularz()
    {
        $blad=0;
        $y=count($this ->nazwapola);
        for($x=0;$x<=$y;$x++)
        {
            $this ->dodajstala("wartosc_".$this ->nazwapola[$x],$this ->dane[$x]);
            if (($this ->wartoscpola[$x]==1)&&(($_POST[$this ->nazwapola[$x]]=="")&&($_GET[wyslano]=="1")))
            {
                $this ->dodajwarunek("nieistnieje_".$this ->nazwapola[$x]);
                $blad=1;
            }
        }
        if ($_GET[wyslano]!="1")
        {
            $blad=1;
        }
        return $blad;
    }

    function Dodajwarunek($warunek)
    {
        $this ->warunki[$this ->iloscwaronkow] = $warunek;
        $this ->iloscwaronkow++;
    }

    ///////////////////funkcje petli

    function Stworzpetle($petla)
    {
        preg_match('/{petla:'.$petla.'}(.+){petla:'.$petla.'}/Ue',$this ->text, $odnalezione);
        $this -> textpetli = $odnalezione[0];
        $this -> rekord = $odnalezione[1];
    }
    
    function Dodajstalapetli($stala,$wartosc)
    {
        $this ->stalepetli = array_merge($this->stalepetli, $stala);
        $this ->stalepetli[$stala]= $wartosc;
    }
    
    function Dodajwarunekpetli($warunek)
    {
        $this ->warunkipetli = array_merge($this->warunkipetli, $this ->iloscwaronkowpetli);
        $this ->warunkipetli[$this ->iloscwaronkowpetli] = $warunek;
        $this ->iloscwaronkowpetli++;
    }
    
    function Parsujwierszpetli()
    {
        $y = $this ->iloscwaronkowpetli;
        $rekord = $this ->rekord;
        for ($x=0;$x<$y;$x++)
        {
            $warunek=$this ->warunkipetli[$x];
            preg_match_all('/{warunek:'.$warunek.'}(.+){warunek:'.$warunek.'}/Ue', $rekord, $warunki);
            for ($i=0; $i< count($warunki[0]); $i++)
            {
                $rekord = str_replace($warunki[0][$i],$warunki[1][$i],$rekord);
            }
        }
        preg_match_all('/{warunek:([^%]+)}(.+){warunek:([^%]+)}/Ue', $rekord, $warunki);
        for ($i=0; $i< count($warunki[0]); $i++)
        {
            $rekord = str_replace($warunki[0][$i],'',$rekord);
        }
        $rekord = preg_replace('/{stala:([^}]+)}/e', '$this->stalepetli["\\1"]', $rekord);
        $this ->petla.=$rekord;
        $this ->petla.="\n";
        unset($this ->stalepetli);
        unset($this ->warunkipetli);
        unset($this ->iloscwarunkowpetli);
    }
    
    function Parsujpetle()
    {
        $this ->text = str_replace($this ->textpetli, $this ->petla, $this ->text);
        unset($this ->petla);
        unset($this ->textpetli);
    }

    function Parsuj()
    {
        $y=$this ->iloscwaronkow;
        for ($x=0;$x<=$y;$x++)
        {
            $warunek=$this ->warunki[$x];
            preg_match_all('/{warunek:'.$warunek.'}(.+){warunek:'.$warunek.'}/Ue', $this->text, $warunki);
            for ($i=0; $i< count($warunki[0]); $i++)
            {
                $this->text = str_replace($warunki[0][$i],$warunki[1][$i],$this->text);
            }
        }
        preg_match_all('/{warunek:([^}]+)}(.+){warunek:([^}]+)}/Ue', $this->text, $warunki);
        for ($i=0; $i< count($warunki[0]); $i++)
        {
            $this->text = str_replace($warunki[0][$i],'',$this->text);
        }
        $this->text=preg_replace('/{stala:([^}]+)}/e', '$this->stale["\\1"]', $this->text);
        return $this->text;
    }
}
?>
Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0

Napiszę krótko: Bycze to... U mnie system skórek wygląda tak:

Kopiuj
<?
function template($info, $bloki, $plik)
  {
  $wynik="";
  $file=fopen($plik, 'r');
  while(!flock($file, LOCK_SH)) { }
  while(!feof($file))
    {
    $linia=fgets($file);
    foreach($bloki as $blok=>$wartosc)
      {
      if(strpos($linia, "{BLOG-END-".$blok."-BLOK}")!==FALSE)
        {
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
        }
      if(strpos($linia, "{BLOG-BEGIN-".$blok."-BLOK}")!==FALSE)
        {
        if($wartosc)
          {
            $linia=str_replace("{BLOG-BEGIN-".$blok."-BLOK}", "", $linia);
          }
        else
          {
          $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
          while($pos===FALSE)
            {
            $linia=fgets($file);
            $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
            }
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
          }
        }
      }
    foreach($info as $nazwa=>$wartosc)
      {
      $linia=str_replace("{BLOG-".$nazwa."}", $wartosc, $linia);
      }
    $wynik.=$linia;
    }
  flock($file, LOCK_UN);
  fclose($file);
  return $wynik;
  }

function echo_template($info, $bloki, $plik)
  {
  $file=fopen($plik, 'r');
  while(!flock($file, LOCK_SH)) { }
  while(!feof($file))
    {
    $linia=fgets($file);
    foreach($bloki as $blok=>$wartosc)
      {
      if(strpos($linia, "{BLOG-END-".$blok."-BLOK}")!==FALSE)
        {
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
        }
      if(strpos($linia, "{BLOG-BEGIN-".$blok."-BLOK}")!==FALSE)
        {
        if($wartosc)
          {
            $linia=str_replace("{BLOG-BEGIN-".$blok."-BLOK}", "", $linia);
          }
        else
          {
          $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
          while($pos===FALSE)
            {
            $linia=fgets($file);
            $pos=strpos($linia, "{BLOG-END-".$blok."-BLOK}");
            }
          $linia=str_replace("{BLOG-END-".$blok."-BLOK}", "", $linia);
          }
        }
      }
    foreach($info as $nazwa=>$wartosc)
      {
      $linia=str_replace("{BLOG-".$nazwa."}", $wartosc, $linia);
      }
    echo($linia);
    }
  flock($file, LOCK_UN);
  fclose($file);
  }
?>

Z czego te dwie funkcje się niemal powtarzają, tylko jedna z nich od razu wyrzuca na wyjście to co "myśli", podczas gdy pierwsza zwraca to w stringu do dalszej przeróbki. Oczywiście jest to silnie dostosowane do konkretnego użycia, ale proste jak sprężyna i jasne jak czarna dziura, czyli banalne :P.


Grunt to uziemienie...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.