[help] vbtt for php

Статус
В этой теме нельзя размещать новые ответы.
;279


А отображает юзера id27

А правильно что:
PHP:
$attachment[completed_by] = substr($attachment[completed_by],1);
А потом мы опять пишем:
PHP:
substr($attachment[completed_by], 0,.....
 
Ок, просто в представленной ошибке было
userid IN (360, 322, 322, );
поэтому я решил, что на конце стоит лишняя ;
А сейчас не совсем понимаю, где ошибка.
Запрос типа
Код:
SELECT userid,username FROM user WHERE userid IN (279);
вполне должен выполняться.
Ну можешь еще попробовать такой код:
PHP:
  if ($attachment[completed_by]{0} == ";")
   $attachment[completed_by] = substr($attachment[completed_by],1);
   if ($attachment[completed_by]{strlen($attachment[completed_by])-1} == ';')
   {
   	$attachment[completed_by] = substr($attachment[completed_by], 0, strlen($attachment[completed_by])-1);
   }
Так он будет убирать последний символ, только если это действительно ";"
 
  • Нравится
Реакции: Axom
Вот теперь работает правильно, спасибо!
А ошибка выдавалась только когда было больше 2-3 скачавших!
 
g0rn, если не влом, помоги ещё один баг убрать.
Нужно чтобы независимо от того какие вложения в сообщения, код искал только .torrent вложения, а то в разделах под названием тем не работает ститстика пиров (я добавил |.jpg|.jpeg|.gif|.png, чтобы статистика отображалась при их существование во вложениях, но она не работает :()!
PHP:
                  global $db, $vbphrase;   
             $query = $db->query("SELECT filename,seeders,leechers,completed FROM " . TABLE_PREFIX . "attachment WHERE postid='".$thread['firstpostid']."' LIMIT 1");
                  $res = $db->fetch_array($query);
            if (eregi(".torrent|.jpg|.jpeg|.gif|.png",$res['filename'])) // show torrent stats in thread title
            {
            $include_code =
      '<table>
    <tr>
    <td>
    <div class="smallfont"><b>'.$vbphrase[vbtt_torrent_stats].' : </b><font color="green"><b>'.$res['seeders'].'</b></font> '.$vbphrase[vbtt_torrentstats_a].' <font color="blue"><b>'.$res['leechers'].'</b></font> '.$vbphrase[vbtt_torrentstats_b].' <b>'.$res['completed'].'</b> '.$vbphrase[vbtt_torrentstats_c].' </td>
 
    </tr>
    </table>'; 
 
 
            $thread['torrent'] = "<span style='float:left'>".$include_code."</span>";
            }
 
g0rn, если не влом, помоги ещё один баг убрать.
Нужно чтобы независимо от того какие вложения в сообщения, код искал только .torrent вложения, а то в разделах под названием тем не работает ститстика пиров (я добавил |.jpg|.jpeg|.gif|.png, чтобы статистика отображалась при их существование во вложениях, но она не работает :()!
PHP:
                  global $db, $vbphrase;   
             $query = $db->query("SELECT filename,seeders,leechers,completed FROM " . TABLE_PREFIX . "attachment WHERE postid='".$thread['firstpostid']."' LIMIT 1");
                  $res = $db->fetch_array($query);
            if (eregi(".torrent|.jpg|.jpeg|.gif|.png",$res['filename'])) // show torrent stats in thread title
            {
            $include_code =
      '<table>
    <tr>
    <td>
    <div class="smallfont"><b>'.$vbphrase[vbtt_torrent_stats].' : </b><font color="green"><b>'.$res['seeders'].'</b></font> '.$vbphrase[vbtt_torrentstats_a].' <font color="blue"><b>'.$res['leechers'].'</b></font> '.$vbphrase[vbtt_torrentstats_b].' <b>'.$res['completed'].'</b> '.$vbphrase[vbtt_torrentstats_c].' </td>
 
    </tr>
    </table>'; 
 
 
            $thread['torrent'] = "<span style='float:left'>".$include_code."</span>";
            }
Не совсем тебя понял (
То есть в теме во вложении есть один .torrent файл и тебе нужно выводить статистику по сидерам, личерам и т.д.?
А причем тут тогда jpg, png и т.д.?
 
Потому что мне надо чтобы можно было ещё скриншоты вместе с торрентом загружать в одной теме.
А если не добавить .jpg|.jpeg|.gif|.png, то не будет отображаться статистика под if'ом.
А так она отображает, но не работает, так как она расчина что в сообщение будет загружен только .torrent файл.
Вот мне и надо сделать чтобы она работала, когда в сообщение кроме .torrent файла, присутствуют и другие вложения.


Вот файл сам на всякие случаи:
 

Вложения

  • product-vbtt3php.rar
    18,7 KB · Просмотры: 3
Попробуй так:
PHP:
global $db, $vbphrase;   
$query = $db->query("SELECT filename,seeders,leechers,completed,extension FROM " . TABLE_PREFIX . "attachment WHERE postid='".$thread['firstpostid']."'");
while($res = $db->fetch_array($query))
{
	if ($res['extension'] == 'torrent') // show torrent stats in thread title 
	{
		$include_code =
      '<table>
    <tr>
    <td>
    <div class="smallfont"><b>'.$vbphrase[vbtt_torrent_stats].' : </b><font color="green"><b>'.$res['seeders'].'</b></font> '.$vbphrase[vbtt_torrentstats_a].' <font color="blue"><b>'.$res['leechers'].'</b></font> '.$vbphrase[vbtt_torrentstats_b].' <b>'.$res['completed'].'</b> '.$vbphrase[vbtt_torrentstats_c].' </td>
 
    </tr>
    </table>';
   	} 
} 
$thread['torrent'] = $include_code ? "<span style='float:left'>".$include_code."</span>" : "";
 
  • Нравится
Реакции: Axom
Ок, просто в представленной ошибке было

поэтому я решил, что на конце стоит лишняя ;
А сейчас не совсем понимаю, где ошибка.
Запрос типа
Код:
SELECT userid,username FROM user WHERE userid IN (279);
вполне должен выполняться.
Ну можешь еще попробовать такой код:
PHP:
  if ($attachment[completed_by]{0} == ";")
   $attachment[completed_by] = substr($attachment[completed_by],1);
   if ($attachment[completed_by]{strlen($attachment[completed_by])-1} == ';')
   {
       $attachment[completed_by] = substr($attachment[completed_by], 0, strlen($attachment[completed_by])-1);
   }
Так он будет убирать последний символ, только если это действительно ";"
После того как прописал было всё нормально, а теперь один скачал и вот:
Код:
Database error in vBulletin 3.6.8:
Invalid SQL:
SELECT userid,username FROM user WHERE userid IN (360, 322, 322, , 130);
MySQL Error  : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 130)' at line 1
 
Хм, ну видимо $attachement[completed_by] имеет вид типа 360;322;322;;130;
Почему там две ; хз. Может трекер неверно обновляет эту информацию.
Как вариант поставь после
PHP:
   if ($attachment[completed_by]{strlen($attachment[completed_by])-1} == ';')
   {
       $attachment[completed_by] = substr($attachment[completed_by], 0, strlen($attachment[completed_by])-1);
   }
Это:
PHP:
$attachment[completed_by] = str_replace(";;", ";", $attachment[completed_by]);
Должно помочь...
 
  • Нравится
Реакции: Axom
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху