Ответы пользователя по тегу PHP
  • Как реализовать кнопку?

    @MIKEk8
    Создайте ещё одну php страницу и на первой будет
    <?php
    //СТРАНИЦА1
    $connect = mysql_connect(localhost, =======, '=======');
    $select_db = mysql_select_db('=======');
    
    $select = mysql_query("SELECT * FROM "tabla" WHERE "kol_vo" <> 0 ORDER BY RAND() LIMIT 1");
    
    while ($result = mysql_fetch_array($select)) {
        echo " 
    Сначала ОБЯЗАТЕЛЬНО ознакомьтесь с сайтом: <a href = 'http://" . $result['zak'] . "' target= _blank><br>ОЗНАКОМИТЬСЯ</a><br><br> 
    Далее разместите отзыв тут: <a href = 'http://" . $result['url_otz'] . "' target= _blank><br>РАЗМЕСТИТЬ ОТЗЫВ</a><br><br> 
    Кол-во: $result[kol_vo] <br> 
    <form action='СТРАНИЦА2' method='post'>
        <input type='hidden' name='id' value='{$result['id']}'>
        <button>Кнопка</button>
    </form>
    ";
    }
    
    ?>


    А на второй
    <?php
    //СТРАНИЦА2
    $sql = "UPDATE tabla SET kol_vo = kol_vo - 1 WHERE id = {$_POST['id']}";
    $query = mysql_query($sql);
    if (!$query) {
        die('updating error' . mysql_error());
    }
    header('Location: http://localhost/СТРАНИЦА1 ');

    И после нажатия на кнопку его будет перекидывать на вторую где просто будет отрабатывает ваш скрипт и возвращать на первую.

    Можно конечно сделать через AJAX и данные из POST или GET не надо на прямую в SQL пихать, но с вашем уровнем для этого рановато. С начало поймите концепцию php.
    Ответ написан
  • Почему не работает код php?

    @MIKEk8
    0) Если сам и не можете понять что в коде происходит то лучше наймите программиста. И сами туда лучше не лезьте.
    1) У вас не верно указаны строки это 75 и 97 а не 83 и .
    2) Строка 97 ни на что не влияет т.к. в её начале стоят // которые означают что это комментарий и он не исполняется
    3) В этом комментарии написано что по умолчанию $pending = 0. Если вы его удаляете в строке 75 то внутри функции add он должен быть по умолчанию 0. НО комментарий не код. Скорей всего вы поменяли значение по умолчанию. Смотрите function add в классе messages в файле "classes/messages.php".
    4) далее вам нужно смотреть что происходит в вышеописанном методе (add) при получении $pending 1 или 0.
    В этом коде никаких условий связанных с некорректным поведением нет и удалять $pending = 0 скорей всего не надо
    Ответ написан
  • Как запустить нескольких скриптов параллельно из PHP под Windows Openserver?

    @MIKEk8
    Наверно popen вам подойдёт.
    php.net/manual/ru/function.popen.php
    Или если более заморочено то proc_open .
    php.net/manual/ru/function.proc-open.php
    Ответ написан
    Комментировать
  • Как в PHP проверить наличие интерфейса не создавая экземпляра?

    @MIKEk8 Автор вопроса
    interface MyInterface { }
    class MyClass implements MyInterface { }

    $interfaces = class_implements('MyClass');
    if($interfaces && in_array('MyInterface', $interfaces)) {
    // Class MyClass implements interface MyInterface
    }
    За ответ спасибо adamsafr:
    Подходит?
    stackoverflow.com/questions/20169805/php-check-if-...
    Ответ написан
    Комментировать
  • Как в php отключить код при компиляции?

    @MIKEk8 Автор вопроса
    Придумал другой вариант: В закрывающий комментарий блока //end debug info дабавить */ и на продакшене заменять все открывающие //start debug info на /*start debug info
    /*start debug info
    if ($i%1000000){
        echo $r . PHP_EOL;
    }
    //end debug info*/


    Протестировал на 100кк.
    Если
    /*if ($i%1000000){
    echo $r . PHP_EOL;
    }*/ то время 2,6 сек

    Если $debug=false;
    if ($debug){
    if ($i%1000000){
    echo $r . PHP_EOL;
    }} то время 3,2 сек

    Если $debug=false;
    if ($debug && $i%1000000){ //или AND
    echo $r . PHP_EOL;
    } то время 3,7 сек

    Если define('debug ',false);
    if (debug){ //или AND
    echo $r . PHP_EOL;
    } то время 3,5 сек
    Ответ написан
  • Могу ли я внутри статического метода класса (php) обращаться к свойствам класса через this?

    @MIKEk8
    Печаль-беда:
    class class_a{
        static function method(){
            if(isset($this)) echo "true"; else echo "false";
        }
    }

    1) Если вызывать статический метод как обычный $a->method(); то он всё равно вызывается как class_a::method(); т.е. в этом методе НИКОГДА нет переменой $this.
    2) PHP не даёт создать одноимённый метод но не статичный. не даёт перехватить магическим методом __call, т.к. метод method существует.
    Можно сделать метод method protected , и перехватывать его вызов в __call и __callStatic
    Ответ написан
    Комментировать
  • Не отображается русский текст в превью PDF. Что делать?

    @MIKEk8
    в iText надо добавить
    BaseFont times = BaseFont.createFont("times.ttf","cp1251",BaseFont.EMBEDDED);
    Paragraph p=new Paragraph("чета там",new Font(times,14));

    Либо если вы объединяете xfdf с pdf при помощи iText. То вот так:
    //args[0]="исходный pdf"
    //args[1]="результирующий pdf"
    //args[0]="имя xfdf файла"
    PdfReader pdfreader = new PdfReader(args[1]);
    PdfStamper stamp = new PdfStamper(pdfreader, new FileOutputStream(args[0]));
    XfdfReader fdfreader = new XfdfReader(args[2]);
    AcroFields form = stamp.getAcroFields();
    BaseFont times = BaseFont.createFont("times.ttf","cp1251",BaseFont.EMBEDDED);
    form.addSubstitutionFont(times);
    form.setFields(fdfreader);
    Ответ написан
    Комментировать