За последние 24 часа нас посетили 16909 программистов и 1646 роботов. Сейчас ищут 1014 программистов ...

Скрипты Голосовалки и Комментариев

Тема в разделе "Прочее", создана пользователем ShamahN, 28 ноя 2008.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Знаю что нагуглить можно, просто хочется проверенные (самому писать совсем некогда)... Может кто пользовался или сам написал и не жалко?! Буду очень признателен. Главное чтобы комментарии были древовидными, т.е. можно было оставить комментарий на комментарий, и так любой глубины. На голосовалку вообще пилевать.. Главное чтобы голосовала, а что надо подправлю
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    а писать-то тут, часа 2-3 всего...
     
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Mr.M.I.T., занимаюсь другим... :)
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    держи,
    писал с ходу...
    PHP:
    1. <?
    2. class voter {
    3.  public $ident;
    4.  static $data;
    5.  function __construct($ident) {
    6.      $this->ident=$ident;
    7.  }
    8.  function GetVoteArr() {
    9.      $data=self::GetSerial('votedata');
    10.      $res=array();
    11.      if ($data[$this->ident]) {
    12.          $res['tema']=$data[$this->ident]['tema'];
    13.          $allbals=$this->GetAllBals($data[$this->ident]);
    14.          for($i=0,$c=count($data[$this->ident])-1,$row=$data[$this->ident];$i<$c;$i++) {
    15.              $res['vars'][$i]['bals']=$row[$i]['bals'];
    16.              $res['vars'][$i]['name']=$row[$i]['name'];
    17.              $res['vars'][$i]['id_var']=$i;
    18.              if ($row[$i]['bals'])
    19.                  $res['vars'][$i]['procent']=round($row[$i]['bals']/$allbals*100);
    20.              else
    21.                  $res['vars'][$i]['procent']=0;
    22.          }
    23.        return $res;
    24.      }
    25.      return false;
    26.  }
    27.  function addbal($id_var) {
    28.      $data=self::GetSerial('votedata');
    29.      $ips=self::GetSerial("badips");
    30.      $data[$this->ident][$id_var]['bals']++;
    31.      $ips[]=md5($_SERVER['REMOTE_ADDR']);
    32.      self::SetSerial($data,'votedata');
    33.      self::SetSerial($ips,'badips');
    34.  }
    35.  function hevoted() {
    36.      $data=self::GetSerial("badips");
    37.      if (@in_array(md5($_SERVER['REMOTE_ADDR']),$data)) {
    38.          return true;
    39.      }
    40.      return false;
    41.  }
    42.  private function GetAllBals($data) {
    43.      $GLOBALS['allbals']=0;
    44.      array_walk($data,create_function('$val,$key','$GLOBALS[\'allbals\']+=$val[\'bals\'];'));
    45.      return $GLOBALS['allbals'];
    46.   }
    47.  static function setVote($ident,$tema,$vars) {
    48.      $arr=self::GetSerial('votedata');
    49.      $arr[$ident]['tema']=htmlspecialchars($tema);
    50.      for($i=0,$c=count($vars);$i<$c;$i++) {
    51.          $arr[$ident][$i]['name']=htmlspecialchars($vars[$i]);
    52.          $arr[$ident][$i]['bals']=0;
    53.      }
    54.      self::SetSerial($arr,'votedata');
    55.  }
    56.  static function GetSerial($name) {
    57.    if(!self::$data[$name]){
    58.      $fp=@file_get_contents("$name.php");
    59.      $fp=str_replace("<?die();?>","",$fp);
    60.      self::$data[$name]=unserialize($fp);
    61.    }
    62.      return self::$data[$name];
    63.  }
    64.  static function SetSerial($arr,$name) {
    65.      $arr="<?die();?>".serialize($arr);
    66.      if (file_exists("$name.php"))
    67.          unlink("$name.php");
    68.      file_put_contents("$name.php",$arr);
    69.  }
    70. }
    71. ?>
    вроде должно работать =))
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Что это? :)
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    спасибо... Руки дойдут попробую разобраться :) спс
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Kreker
    эт защита ;)
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    замени ещё
    PHP:
    1. $res['vars'][$i]['procent']=round($allbals/$row[$i]['bals']*100);
    на
    PHP:
    1. $res['vars'][$i]['procent']=round($row[$i]['bals']/$allbals*100);
    это
    PHP:
    1. private function GetAllBals($data) {
    2.      $res=0;
    3.      $res+=array_walk($data,create_function('$val,$key','return $val[\'bals\'];'));
    4.      return $res;
    5.   }
    на
    PHP:
    1. private function GetAllBals($data) {
    2.      $GLOBALS['allbals']=0;
    3.      array_walk($data,create_function('$val,$key','$GLOBALS[\'allbals\']+=$val[\'bals\'];'));
    4.      return $GLOBALS['allbals'];
    5.  }
    // короче, я уже заменил =)
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    пример использования
    PHP:
    1. <?
    2. if (!file_exists("votedata.php"))
    3.     voter::setVote("id","The Thema",array("Ответ 1","Ответ 2","Ответ 3"));
    4. $v=new voter("id");
    5. $arr=$v->GetVoteArr();
    6. if(!$v->hevoted()) {
    7.   if (isset($_POST['otv'])) {
    8.       $v->addbal($_POST['otv']);
    9.       header("refresh:0;");
    10.   }
    11.   print $arr['tema']."<br><form method=POST>";
    12.   for($i=0,$c=count($arr['vars']);$i<$c;$i++) {
    13.       print "<input type=radio value='{$arr['vars'][$i]['id_var']}' name='otv'> {$arr['vars'][$i]['name']}<br>";
    14.   }
    15.   print "<input type=submit></form>";
    16. }else {
    17.   print $arr['tema']."<br>";
    18.   for($i=0,$c=count($arr['vars']);$i<$c;$i++) {
    19.       print "{$arr['vars'][$i]['name']}({$arr['vars'][$i]['bals']}) - {$arr['vars'][$i]['procent']}%<br>";
    20.   }
    21. }
    22. ?>
     
  10. md5

    md5 Активный пользователь

    С нами с:
    29 янв 2007
    Сообщения:
    250
    Симпатии:
    0
    Mr.M.I.T.
    в гавнокодерстве вам не занимать
     
  11. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    да да да! =))
    UPD/ А, нет!! :wink:
     
  12. dAllonE

    dAllonE Guest

    md5, я думаю это было просто легкой иронией над

    UPD: Чем-то мне мою первую гостевую напоминает...

    UPD UPD: И еще некоторые более поздние работы уровня : ибать нужно до 19 успеть!!!!
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    главное работает! =))
    хотя впринципе, будет нормально, если добавить пяток проверок, и итоговый массив запихивать в св-ва по типу данных
    потому что такой массив это не гуд
    Код (Text):
    1.  $res['vars'][$i]['procent']
    фигасе, у тебя первая гостевая ООП была 0_о

    Таг, кто будет писать комментарии? :twisted:
     
  14. dAllonE

    dAllonE Guest

    Mr.M.I.T., я в PHP после краткого знакомства с Java SE пришел, на чем же еще могла быть моя первая гостевая? ;)
     
  15. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    все гут! Отлично впишется :) Еще бы комментарии до 19 успеть
    Mr.M.I.T. надо ж дать :)
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну тогда,
    древовидные комментарии на скорую руку,
    с постаничным выводом не уверен

    PHP:
    1. <?
    2. $cnf=array();
    3. $cnf['db_name']='';
    4. $cnf['db_user']='';
    5. $cnf['db_encode']='cp1251';
    6. $cnf['db_pass']='';
    7. $cnf['db_host']='localhost';
    8. $cnf['table_name']='comments';
    9. $cnf['db_pref']='pref';
    10. $cnf['page_num']=10;
    11. $cnf['page_block']=5;
    12. $cnf['data_format']='d.m.Y H:i';
    13.  
    14.  
    15. class db {
    16.   public $link,$pref,$cnf,$numrows,$afectrows;
    17.   function __construct($cnf) {
    18.         $this->link = mysql_connect($cnf['db_host'],$cnf['db_user'],$cnf['db_pass']) or die(mysql_error());
    19.         if ($cnf['db_encode'])
    20.             mysql_query('SET NAMES '.$cnf['db_encode']);
    21.         mysql_select_db($cnf['db_name'],$this->link);
    22.         $this->pref=$cnf['db_pref'];
    23.         $this->cnf=$cnf;
    24.   }
    25.   function query($sql) {
    26.       $sql=str_replace(array("?p","?P"),$this->pref,$sql);
    27.       $sql=mysql_query($sql);
    28.       $this->numrows=@mysql_num_rows($sql);
    29.       return $sql;
    30.   }
    31.   function fetch_array($res) {
    32.       return mysql_fetch_assoc($res);
    33.   }
    34.   function super_query($sql) {
    35.       $res=array();
    36.       $sql=$this->query($sql);
    37.       if ($this->numrows) {
    38.           while($row=$this->fetch_array($sql)) {
    39.               $res[]=$row;
    40.           }
    41.       }
    42.       return $res;
    43.   }
    44.   function result_query($sql) {
    45.       $sql=$this->query($sql);
    46.       return @mysql_result($sql,0);
    47.   }
    48.   function SqlGetNumRows($table,$where=1) {
    49.       return $this->result_query("SELECT COUNT(*) FROM `?p_$table` WHERE $where");
    50.   }
    51.   function SqlGetRow($table,$row,$where=1) {
    52.       return $this->result_query("SELECT `$row` FROM `?p_$table` WHERE $where LIMIT 1");
    53.   }
    54.   function SqlGetRows($table,$row,$where=1) {
    55.       return $this->super_query("SELECT `$row` FROM `?p_$table` WHERE $where");
    56.   }
    57.   function SqlGetLines($table,$where) {
    58.       return $this->super_query("SELECT * FROM `?p_$table` WHERE $where");
    59.   }
    60.   function SqlGetLine($table,$where) {
    61.       return $this->fetch_array($this->query("SELECT * FROM `?p_$table` WHERE $where LIMIT 1"));
    62.   }
    63.   function table_exists($name) {
    64.       if (!file_exists("isinst.file")) {
    65.           $res=mysql_list_tables($this->cnf['db_name']);
    66.           while($row=mysql_fetch_row($res)) {
    67.               if ($row[0]==$this->pref."_".$name){
    68.                   fopen("isinst.file","w");
    69.                   return true;
    70.               }
    71.           }
    72.           return false;
    73.        }
    74.     return true;
    75.   }
    76.   function insert($table,$value) {
    77.         $ident=false;
    78.         if (!is_array($table) && is_array($value[0])) {
    79.             $values='';
    80.             for($i=0,$c=count($value);$i<$c;$i++) {
    81.                   $values.="("; $in='';
    82.                   foreach($value[$i] as $key=>$val) {
    83.                       if (is_string($key))
    84.                           $in.="`$key`,";
    85.                       $values.="'".mysql_real_escape_string($val)."',";
    86.                    }
    87.                  $values=substr($values,0,-1);
    88.                  $values.="),";
    89.                  if ($in) $in="(".substr($in,0,-1).")";
    90.             }
    91.             $values=substr($values,0,-1);
    92.             $ident=$this->query("INSERT INTO `".$this->pref."_".$table."` ".$in." VALUES ".$values);
    93.         }else if (!is_array($table) && is_array($value)) {
    94.             $values='';$in='';
    95.             foreach($value as $key=>$val) {
    96.                 $values.="'".mysql_real_escape_string($val)."',";
    97.                 if (is_string($key))
    98.                      $in.="`$key`,";
    99.             }
    100.             $values=substr($values,0,-1);
    101.             $values="($values)";
    102.             if ($in) $in="(".substr($in,0,-1).")";
    103.             $ident=$this->query("INSERT INTO `".$this->pref."_".$table."` ".$in." VALUES ".$values);
    104.         }else if(!is_array($table) && !is_array($value)) {
    105.            $ident=$this->query("INSERT INTO  `".$this->pref."_".$table."` VALUES ($value)");
    106.         }
    107.         $this->afectrows=mysql_affected_rows();
    108.         return $ident;
    109.     }
    110.  
    111.     function update($table,$value,$where=1) {
    112.         $ident=false;
    113.         if(!is_array($value[0])) {
    114.           if(is_array($where))
    115.              trigger_error("Ошибка: 3 параметр метода `update` в данном случае не может быть массивом",E_USER_ERROR);
    116.           $set='';
    117.           foreach($value as $key=>$val) {
    118.               $set.="`$key`='".mysql_real_escape_string($val)."',";
    119.           }
    120.           $set=substr($set,0,-1);
    121.           $ident=$this->query("UPDATE ".$this->pref."_".$table." SET ".$set." WHERE $where");
    122.           $this->afectrows=mysql_affected_rows();
    123.         }else {
    124.           $this->afectrows=0;
    125.            for($i=0,$c=count($value);$i<$c;$i++) {
    126.               $set='';$wh=1;
    127.               foreach($value[$i] as $key=>$val) {
    128.                  $set.="`$key`='".mysql_real_escape_string($val)."',";
    129.               }
    130.               if (is_array($where))
    131.                   $wh=$where[$i];
    132.               else
    133.                   $wh=$where;
    134.  
    135.               $ident=true;
    136.               if(!$this->query("UPDATE ".$this->pref."_".$table." SET ".$set." WHERE $wh")) {
    137.                   $ident=false;
    138.                   break;
    139.               }
    140.               $this->afectrows+=mysql_affected_rows();
    141.            }
    142.         }
    143.        return $ident;
    144.     }
    145.     function del($table,$value) {
    146.          $ident=false;
    147.          if (!is_array($table) && !is_array($value)) {
    148.              $ident=$this->query("DELETE FROM ".$this->pref."_".$table." WHERE ".$value);
    149.          }else if (!is_array($table) && is_array($value)) {
    150.              $sql="DELETE FROM ".$this->pref."_".$table." WHERE ";
    151.              for($i=0,$c=count($value);$i<$c;$i++) {
    152.                  $sql.=$value[$i].($i!==$c-1?" OR ":"");
    153.              }
    154.          }
    155.          $this->afectrows=mysql_affected_rows();
    156.          return $ident;
    157.      }
    158.      static function escape($var) {
    159.          return mysql_real_escape_string($var);
    160.      }
    161. }
    162.  
    163.  
    164.  
    165. class comments {
    166.   public $db,$cnf,$error;
    167.   public $post=array();
    168.   public $vars=array();
    169.   function __construct() {
    170.       global $cnf;
    171.       $this->cnf=$cnf;
    172.       $this->db=new db($cnf);
    173.       $this->init();
    174.   }
    175.   private function install() {
    176.      $this->db->query("
    177.           CREATE TABLE `{$this->cnf['db_pref']}_{$this->cnf['table_name']}` (
    178.             `id` int(11) NOT NULL auto_increment,
    179.             `parent` varchar(300) NOT NULL,
    180.             `name` tinytext NOT NULL,
    181.             `text` text NOT NULL,
    182.             `data` varchar(100) NOT NULL,
    183.            PRIMARY KEY  (`id`),
    184.            KEY `parent` (`parent`)
    185.            ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
    186.  
    187.     ") or die(mysql_error());
    188.   }
    189.   private function init() {
    190.       if(!$this->db->table_exists($this->cnf['table_name'])) {
    191.           $this->install();
    192.           header("Refresh:2");
    193.           $this->error("Установка...");
    194.       }else {
    195.           $this->controller();
    196.       }
    197.   }
    198.   private function error($error) {
    199.       $this->error.="<div class='error'>$error</div>";
    200.   }
    201.   private function controller() {
    202.       if (!$this->userReq()){
    203.          $this->post=$this->GetPost();
    204.          $this->vars['page']=$this->GetPage();
    205.          $this->vars['form']=$this->GetForm();
    206.       }
    207.   }
    208.   private function GetNPage() {
    209.       $n=(db::escape($_GET['n'])-1)*$this->cnf['page_num'];
    210.       if ($n<0)$n=0;
    211.       return $n;
    212.   }
    213.   private function GetNRealPage() {
    214.      $n=db::escape($_GET['n']);
    215.      if (!$n) $n=0;
    216.      return $n;
    217.   }
    218.   private function GetPage() {
    219.       return support::Pager($this->cnf['page_num'],$this->cnf['page_block'],
    220.                             $this->GetNRealPage(),"{$_SERVER['PHP_SELF']}?n={i}",$this->SqlGetNumComRows()
    221.                            );
    222.   }
    223.   private function GetForm() {
    224.       return "
    225.        <script laguage='javascript'>
    226.           function setParent(par) {
    227.               document.getElementById('parent').value=par;
    228.               window.location='#form';
    229.           }
    230.        </script>
    231.        <form method=POST>
    232.          <a name='form'></a>
    233.          <table width=100% border=1>
    234.          <tr>
    235.          <td>Name</td><td><input type=text name='name'></td>
    236.          <tr>
    237.          <td>Text</td><td><textarea name='text' cols=50 rows=8></textarea></td>
    238.          <tr>
    239.          <td colspan=2><input type=submit></td>
    240.          </table>
    241.          <input type=hidden name='parent' value='0' id='parent'>
    242.        </form>
    243.      ";
    244.   }
    245.   private function GetPost() {
    246.       $sql=$this->SqlGetComList();
    247.       if ($this->db->numrows) {
    248.           return $this->Formatter($sql);
    249.       }else {
    250.           $this->error("Ошибка: Нет не одного сообщения");
    251.       }
    252.     return array();
    253.   }
    254.   private function Formatter($sql) {
    255.       $res=array();
    256.       while($row=$this->db->fetch_array($sql)) {
    257.           $row['data']=date($this->cnf['data_format'],$row['data']);
    258.           $row['board']=$this->GenBoard($row['parent']);
    259.           $row['text']=nl2br($row['text']);
    260.           $res[]=$row;
    261.       }
    262.       return $res;
    263.   }
    264.   private function GenBoard($p) {
    265.       return count(explode("-",$p))-1;
    266.   }
    267.   private function SqlGetComList() {
    268.      return $this->db->query("
    269.                  SELECT *
    270.                  FROM ?p_comments
    271.                  ORDER BY `parent`
    272.                  LIMIT ".$this->GetNPage().",".$this->cnf['page_num']."
    273.                             ");
    274.   }
    275.   private function SqlGetNumComRows() {
    276.       return $this->db->SqlGetNumRows($this->cnf['table_name']);
    277.   }
    278.   private function userReq() {
    279.       if (support::issetpost("name,text")) {
    280.           if(!support::emptypost("name,text")) {
    281.               $this->AddAction();
    282.               return true;
    283.           }else {
    284.               $this->error("Ошибка: Обязательные поля нужно заполнить");
    285.           }
    286.       }
    287.       return false;
    288.   }
    289.   private function AddAction() {
    290.       $res=support::Walker($_POST,array("func"=>"htmlspecialchars","keys"=>array("text","name")));
    291.       if (!$_POST['parent'] || !is_numeric($_POST['parent']))
    292.          $parent=0;
    293.       else
    294.          $parent=db::escape($_POST['parent']);
    295.       $parentres=$this->db->SqlGetRow($this->cnf['table_name'],"parent","id='".db::escape($parent)."'");
    296.       if ($parentres) {
    297.          $parentrow=$this->db->SqlGetNumRows($this->cnf['table_name'],"parent LIKE ('$parentres%')")-1;
    298.          $parentres.="-".($parentrow+1);
    299.       }else {
    300.           $parentrow=$this->db->SqlGetNumRows($this->cnf['table_name'],"parent NOT LIKE ('%-%')");
    301.           $parentres=$parentrow+1;
    302.       }
    303.       if ($this->db->insert($this->cnf['table_name'],
    304.                                       array(
    305.                                          "id"=>"NULL",
    306.                                          "name"=>$res['name'],
    307.                                          "text"=>$res['text'],
    308.                                          "parent"=>$parentres,
    309.                                          "data"=>time(),
    310.                                       ))) {
    311.           $this->error("Сообщение добавлено");
    312.           header("Refresh:1");
    313.       }else {
    314.           $this->error("Ошибка при добавлении сообщения");
    315.           header("Refresh:2");
    316.       }
    317.   }
    318. }
    319.  
    320.  
    321.  
    322.  
    323. class support {
    324.   static function emptypost($p) {
    325.       $p=explode(",",$p);
    326.       for($i=0,$c=count($p);$i<$c;$i++) {
    327.           if (empty($_POST[$p[$i]])) {
    328.               return true;
    329.           }
    330.       }
    331.       return false;
    332.   }
    333.   static function issetpost($p) {
    334.       $p=explode(",",$p);
    335.       for($i=0,$c=count($p);$i<$c;$i++) {
    336.           if (!isset($_POST[$p[$i]])) {
    337.               return false;
    338.           }
    339.       }
    340.       return true;
    341.   }
    342.   static function Walker($arr,$opt) {
    343.       $fcc='
    344.       if(!$opt[\'keys\']) $opt[\'keys\']=array();
    345.       if (in_array($key,$opt[\'keys\']) || empty($opt[\'keys\'])) {
    346.             $val=$opt[\'func\']($val);
    347.       }';
    348.       array_walk($arr,create_function('&$val,$key,$opt',$fcc),$opt);
    349.       return $arr;
    350.   }
    351.   static function Pager($page_num,$page_block,$n,$tpl,$all) {
    352.          if($n<=0)$n=1;
    353.          $max=ceil($all/$page_num);
    354.          if ($max<=0) $max=1;
    355.          $ot=$n-2;
    356.          if ($ot<=0) $ot=1;
    357.          $po=$ot+$page_block-1;
    358.          if ($po>$max) $po=$max;
    359.          $page='';
    360.          if ($po==$max) $ot=$po+1-$page_block;
    361.          if ($ot<=0) $ot=1;
    362.          if ($ot==2) $page.='...';
    363.          if ($ot>2) {
    364.            $page.="<a href='".str_replace('{i}','1',$tpl)."'>[1]</a>";
    365.          if ($ot>3) $page.="<a href='".str_replace('{i}','2',$tpl)."'>[2]</a>";
    366.            $page.='...';
    367.          }
    368.          for($i=$ot;$i<=$po;$i++) {
    369.            if ($n==$i) {
    370.              $page.="<b>[$i]</b>";
    371.            }else {
    372.              $page.="<a href='".str_replace('{i}',$i,$tpl)."'>[$i]</a>";
    373.            }
    374.          }
    375.          if ($po<=$max-2){
    376.             $page.='...';
    377.          if ($po<$max-2) $page.="<a href='".str_replace('{i}',($max-1),$tpl)."'>[".($max-1)."]</a>";
    378.             $page.="<a href='".str_replace('{i}',$max,$tpl)."'>[$max]</a>";
    379.          }
    380.          if ($po==$max-1) $page.='...';
    381.        return $page;
    382.      }
    383. }
    384.  
    385.  
    386.  
    387. $com=new comments();
    388. print "
    389.  <style>
    390.    .error {
    391.        border:1px solid red;
    392.    }
    393.  </style>
    394.      ";
    395. if ($com->error)
    396.     print $com->error."<br>";
    397. for($i=0,$c=count($com->post),$row=$com->post;$i<$c;$i++) {
    398.     $margin=$row[$i]['board']*20;
    399.     print "
    400.      <table width=100% border=1 style='margin-left:".$margin."px'>
    401.      <tr>
    402.      <td>{$row[$i]['name']} - {$row[$i]['data']}</td>
    403.      <tr>
    404.      <td>{$row[$i]['text']}<br><a href='javascript://' onclick=\"setParent('{$row[$i]['id']}');\">Ответить</a></td>
    405.      </table>
    406.    ";
    407. }
    408. print "<br>Str:".$com->vars['page']."<br>".$com->vars['form'];
    409. ?>
    410.  
     
  17. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Mr.M.I.T.
    постраничный вывод и не нужен...
    ты все с нуля прям так и написал??? тебе нечем заняться?? :)):):):) спасибо конечно, но тебе никто не говорил, что ты монстер :)
     
  18. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ога, мне 30 мин не жалко =)
    заняться ой как есть чем, вот только лень...
     
  19. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Mr.M.I.T.
    За 30 минут 400 строк рабочего кода?)
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Kreker
    ну за 40 =)
    а что?
    ведь одно дело писать то что никогда не писал, в другое - писать одно и тоже сто первый раз...

    у меня тут времени больше ушло на планирование структуры дерева...
     
  21. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    а можно поинтересоваться почему так реализовано дерево?? почему чисто ид в поле парент не захотел хранить?
     
  22. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ShamahN
    имеешь ввиду рекурсию?
    тогда будет куча запросов, или как-то кешировать нужно...
    а если имеешь ввиду хранить иды через тире, тогда order by работать не будет, дерево сложно выводить...
     
  23. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Mr.M.I.T.
    уже разобрался... Сейчас делаю администрирование комментариев. Типа изменить, удалить
     
  24. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    угу угу,
    тебе кстати придётся ещё изменить таблицу, сделать привязку к публкациям =)
    а то я забыл что-то 0о...
     
  25. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Mr.M.I.T.
    думаю в паренте добавить перед твоим парентом что-нить типа "idstat&" или поле добавить... по-моему одно и то же...
    кста, а класс bd этот ж скорее всего заготовка у тебя какая-нить? или ты его каждый раз заново ваяешь?
    Я к чему спрашиваю. Просто никогда не пользовался классами для БД (может и не стоит), а тут решил попробовать... думаешь самому накатать или взять какой-нить dbsimple?