Ответы пользователя по тегу PHP
  • Как исправит ошибку out of memory allocated 1404829696?

    shaks
    @shaks
    забивается память, нужно подчищать значение переменных. но т.к. засрать столько памяти надо еще умудрится значит скорей всего у вас там вечный цикл гдето или какойто массив растет в геометрической прогрессии.
    Ответ написан
    Комментировать
  • Почему при использовании ajax всегда 0?

    shaks
    @shaks
    Чтото вы не то спросили. У вас всегда должна быть единица а не ноль. Т.к. вы всегда передаете check.
    Ответ написан
    Комментировать
  • Как получить доступ к неизвестному элементу многомерного массива?

    shaks
    @shaks
    $qty = array_map(function($a){
        return array_sum(array_column($a['size'], 'qty'));
    }, $array['cart']);
    
    print_r($qty);
    
    echo(array_sum($qty));


    Т.к. у тебя наверняка в массиве size может содержаться несколько размеров (а раз так то и кол-во под каждый размер разное), то в колбек функции я возвращаю сразу сумму "qty" по каждой из позиции, а потом уже получаю общую сумму

    P.S. Функция array_column доступна в пхп >= 5.5.0
    Здесь php.net/manual/en/function.array-column.php в комментариях можно найти "самопис" этой функции
    Ответ написан
    Комментировать
  • Как сделать автоподстановку значения поля SQL при пустой строке?

    shaks
    @shaks
    Необходимо же сделать так, чтобы при незаполненном поле формы в соответствующую ячейку БД записывалось дефолтное значение таблицы.


    www.mysql.ru/docs/man/ALTER_TABLE.html
    ALTER [IGNORE] TABLE tbl_name  [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

    В твоем случае будет чтото типа такого:
    ALTER  TABLE `tbl_name`  CHANGE  `changelog`  `changelog` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT 'changelog.txt'
    # @ phpmyadmin
    Ответ написан
  • Перебрать правильно массив php?

    shaks
    @shaks
    помогите извлеч из этого массива списочек вида [artist] - [title] , не догоняю вообще

    print_r(array_column($array['response']['items'], 'title', 'artist'));
    Ответ написан
    Комментировать
  • If все поля формы пусты?

    shaks
    @shaks
    И как ещё можно написать "если все поля формы пусты" кроме (!name) && (!$email) && (!topic) && (!$message)?

    Старайтесь избегать такой нечитабельной писанины, это во первых, во вторых !$var - в первую очередь проверка на булево значение а не на пустоту. Хоть в контексте задачи на это плевать, но об этом лучше знать, и всегда проверять именно на то значение, которое ожидается или же наоборот, - не ожидается.
    if($var) - вернет true на то что внутри переменной или чтто есть (пробел например), или оно булевое ДА. и вернет false если переменная пустая, булевое НЕТ или же равно NULL.

    Задача весьма "странная" если честно

    $answer = false;
    $fields  = ['name', 'email', 'topic', 'message'];
    foreach($fields as $field)
    {
        $$field=trim($$field);
        if(false===(empty($$field))) // Если поле не пустое, значит надо пробовать отправлять (исправил !empty() на 'false===empty()" см. коммент от @FanatPHP )
        {
            $mail_send = true || false;# здесь код отвечающий за отправку мыла
            if($mail_send)
                $answer=true;
            break; // выходим из цикла независимо от результата отправки
        }
    }


    var answer = 0;
    if (a === 0) {
          $(".clear").css("border-color", "red");
        } else {
          $('.clear').val('');
        }
    Ответ написан
  • Хранимый запрос и ODBC?

    shaks
    @shaks
    $sth = $db->prepare("SELECT * FROM qr1 WHERE id1= :id1 AND id2 = :id2");
        $sth->execute(array(
            'id1'=> 12,
            'id2'=> 13,
        ));


    :param в твоей строке sql заменяеться на одноименные (но без двоеточия) ключ массива, который ты вскармливаешь методу execute
    Ответ написан
  • Вывод столбца mysql с определенным значением?

    shaks
    @shaks
    SELECT COUNT(*) as 'count' FROM `users` WHERE `status` = 0


    PS. Ваш код гавно. Смотри в сторону ORM или PDO
    Ответ написан
    Комментировать
  • Как записать байтовую строку в файл на php?

    shaks
    @shaks
    fopen('file.txt', 'wb') # где b говорит о том что писать будем байт код
    Ответ написан
  • Как сделать такой формат даты и времени?

    shaks
    @shaks
    $ php -a
    Interactive mode enabled
    
    php > setlocale(LC_TIME, 'ru_RU.UTF-8');
    php > echo(strftime("%d %B %Yg., %H:%M", time()))."\n";
    01 Март 2015g., 14:09
    php >

    неплохой вариант, только месяц не склоняется.
    Ответ написан
    Комментировать
  • Как оформить уровни вложенности в условии?

    shaks
    @shaks
    Бро, честно признаюсь, минут 5 втыкал в твои условия. Краткая форма записи условия if-else служит для упрощения визуального восприятия кода, у тебя же получилось с точностью наоборот.
    Не нужно городить трехэтажную краткую форму записи условия.
    Собственно, как подсказал Дмитрий вот вариант на проверку вхождения в массив. Я не знаю правильно ли я расшифровал твой, можно смело сказать, - обфусцированный код, но собственно воть:
    <?php
    
    $conditions = array( # условия вхождения N в один из значений массива. Ключом массива является возвращаемый результат если условие истинно..
        0=> array(1, 2, 3), // Если твой data[lr1rt] равен 1, 2 или 3. то вернется ноль.
        5=> array(4,5,6),
        4=> array(7,8,9,10)
    );
    
    for($data['lr1rt']=0; $data['lr1rt']<=10; $data['lr1rt']++) // Цикл для теста влепил. Он тебе не нужен )
    {
    
        $result = 1; #если не подошло ни одно из условий
        foreach($conditions as $res => $cond) // Пробегаемся по массиву
        {
            if(in_array($data['lr1rt'], $cond)) // ищим вхождение
            {
                $result = $res;
                break; // если вхождение нашли, выходим из ближайшего цикла (в данном случае это foreach
            }
        }
        echo "lr1rt: {$data['lr1rt']} | $result\n";
    }
    /*
    Результат работы при текущих "настройках"
    lr1rt: 0 | 1
    lr1rt: 1 | 0
    lr1rt: 2 | 0
    lr1rt: 3 | 0
    lr1rt: 4 | 5
    lr1rt: 5 | 5
    lr1rt: 6 | 5
    lr1rt: 7 | 4
    lr1rt: 8 | 4
    lr1rt: 9 | 4
    lr1rt: 10 | 4
    
    */
    Ответ написан
    1 комментарий
  • Как отправить в заголовке `x-auth-user`: `username` средствами php?

    shaks
    @shaks
    Както так, как сказал Денис Сафронов (я кстати знаю одного дениса сафронова, в черноморске живет.. ы ), для этого лучше использовать курл, вот пример небольшой.
    try{
        $ch = curl_init('http://192.168.1.33/api/2.0?blabla=1111');
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'x-auth-user: user',
            'x-auth-pass: pass'
        ));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        $result = curl_exec($ch);
        if (curl_errno($ch))
            throw new Exception(curl_error($ch));
        echo($result);
    }catch (Exception $e){
        echo($e->getMessage());
    }
    Ответ написан
    3 комментария
  • Как извлечь из MySQL данные по нескольким критериям силами PHP?

    shaks
    @shaks
    Я не побоюсь выразить наверное то, что крутится у многих на языке, кто прочел это) - Это пиздец, дружище ) Большой, кромешный пиздец )
    Выход из ситуации. - nosql. Забудь про Мускул. Сделай все на mongodb например. Все данные хранить в древовидных коллекциях. Вобщем почитай, как раз все твои проблемы решаться оч легко и изящно.

    NoSql позволит тебе в одной коллекции (аля таблице) хранить как автомобили с их характеристиками, так и туалетную бумагу, домашних животных и разные сорта вятского кваса.

    Upd А по сабжу, если уж на мускуле делать, то нужно делать через связи has_many и/или has_and_belongs_to_many/has_many through, а не лепить айди через запятую и искать регулярками.

    Т.е. есть таблица товаров. Есть таблица фильтров, и есть соединяющая таблица товаров и фильтров.
    У каждого товара есть id, у каждого фильтра есть id, а в соединяющей таблице пишутся id'ы товаров и фильтров. Таким образом ты получишь нужную тебе связь.
    Если ты чувствуешь что делаешь чтото не так, то скорей всего так оно и есть :) С таким подходом как у тебя, теряется вся логическая цепочка, мускул сойдет с ума, ибо не будет ведать что он творит )
    Ответ написан
    4 комментария
  • Как отправить POST через JavaScript, на php обработчик?

    shaks
    @shaks
    На форму вешается обработчик onsumit, и дальше уже, делается ajax запрос. Функцию запроса можно состряпать самому (см ответ от Владислав Павлов), или же глянуть в сторону библиотеки jquery или js фреймворка prototypejs

    при этом положить массив с значениями в LocalStorage, чтобы затем можно было заполнять input, чтобы пользователь не потерял данные при хождении по страницам.

    Хранить можно где угодно, можно в сессии, можно в БД, можно и в локальном хранилище. Все зависит условий и поставленной задачи. Имею ввиду, если это данные профиля юзера например, то о локальном хранилище и речи быть не может.
    ибо легче запомнить html код со значениями, и затем просто вставить его?

    html запоминать не надо, нужно запоминать значения.
    Ответ написан
    Комментировать
  • Как реализовать работу с BitCoin на сайте?

    shaks
    @shaks
    https://blockchain.info/ru/api/api_receive
    делаешь запрос на апи, указывая колбек урл свой, получаешь кошель. как на кошель поступает какаято денюшка, блокчейн отстукивает на указанный колбек урл. В мануале все подробно описано. Незачто )
    Ответ написан
    Комментировать
  • Какие могут быть причины, того что файл не загружается?

    shaks
    @shaks
    $a = $_FILES['fileToUpload']['name'];
    move_uploaded_file($_FILES['fileToUpload']['tmp_name'], "uploads/{$a}")


    Зы.
    - Оставлять родное имя файлу не следует, следует заменять все символы, не входящие в UTF-8, на "_" например.
    - Нужно предвидеть то что файл с указанным именем уже существует в папке uploads
    Ответ написан
  • Как сделать редактирование и исправить ошибку?

    shaks
    @shaks
    По сабжу:
    enctype="multipart/form-data" -
    читаем и осознаем что это такое тут - https://ru.wikipedia.org/wiki/Multipart/form-data

    Ваш код называется - быдлокод, совсем не DRY и имеет sql уязвимости. Времена php3 уже давно прошли. Начните с книг. По пхп есть очень много качественной литературы.

    if(isset($_GET['edit_id'])){ # а если переменная isset, но пустая? т.е. domain.com/?edit_id
        $edit_id=$_GET['edit_id']; # А если $_GET['edit_id'] это массив? или например равна любому символу отличному от цифры. 
        db_connect();  # тут все понятно ) лол
        $query="SELECT*FROM Processors WHERE ID='".$edit_id."'"; #Почему имя таблицы с большой буквы? Почему ID верхним регистром? 
        $result=mysql_query($query)or die(mysql_error()); # посетителю показываем ошибку чтобы ему было удобнее производить взлом ?)
        $row=mysql_fetch_assoc($result);
        db_close();# правильно, закрываем соединение с базой, чтобы через 2 строчки ниже, заново открыть) Умница!
     
        if(isset($_POST['edit'])){
            
        db_connect(); # открываем.. опять))
        $querys='UPDATE Processors SET Price = '.$_POST['Price'].', Article = '.$_POST['Article'].' WHERE ID='.$edit_id; # опять нет проверок входящих переменных, опять не общепринятое написание имён таблиц в БД.
        $result=mysql_query($querys)or die("Error:".mysql_error()); # показываем ошибку. 
     
        db_close(); 
       header("location: edit.php?edit_id=".$_GET['edit_id']);
    }


    Это ужас!! )

    1. Все входящие переменные нужно проверять. Как их присутствие, так их тип (строка/массив), так и их значение
    2. Ошибки нужно логировать в файл, а не показывать в браузере
    Ответ написан
  • Понять принцип работы обьектов в php на примере?

    shaks
    @shaks
    Советую взяться за изучение ООП фреймворков. Тогда ты на практике уже поймешь что к чему и в чем прелесть 3х китов ООП. На php мне очень нравится фреймоврк kohana. Или самому попробовать вникнуть в паттерн проектирования MVC (Model - модель. Отвечает за работу с базой. View - представление.. класс отвечающий за работу с шаблонами. Controller - контроллер). В двух словах, это 3 базовых класса из которых вырастает бОльшая часть твоего приложения.
    У каждой таблицы своя модель(Model) как правило, и все эти модели унаследуются от базовой модели. Вьюха (представление) - за работу с хтмлом.. а Контроллер находится между моделями и вьюхами, и указывает кому что делать. Инфы в инете валом по MVC.
    Параллельно почитай книги про паттерны проектирования.
    Ответ написан
    2 комментария
  • Error 1064 (DB1) ,что это значит?

    shaks
    @shaks
    В следующий раз выкладывай сам sql запрос который уходит в мускул. А по сабжу, написано же четко и ясно - косяк в синтаксисе, - иди кури мануалы (так и написано примерно).
    ОШИБКИ НАДО ЧИТАТЬ. Первое правило программиста ;)
    Ответ написан
    Комментировать