Ответы пользователя по тегу PHP
  • Из-за чего возникает ошибка?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Открывающих скобок 4-е, закрывающих 5.
    На следующей строке тоже самое.
    Уберите одну закрывающую скобку в этих строках.
    Ответ написан
    Комментировать
  • Как решить проблему с функцией?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Отправьте переменную в функцию, не используйте global
    function body($long){
      return $long[1][6];
    }

    .....
    if(body($long) == "Test1"){
    Ответ написан
    Комментировать
  • Как правильно сделать итерацию в цикле?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Максимум 4-е новости? Какой вид массива новстей?
    Как вариант:
    //$news = array(); массив из бд
    for($i=0;$i<4;$i++) {
      if(isset($news[$i])) {
        echo 'лишка с новостью'; // например $news[$i]['news_title']
      } else {
        echo 'пустая лишка';
      }
    }
    Ответ написан
    1 комментарий
  • Как задается поиск по колонке в БД?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Сначала фронтенд:
    1. Запрос обычно делается не сразу после нажатия кнопки а спустя некий таймаут, давая возможность пользователю ввести часть слова целиком, а после того как ввод уже остановился(например спустя 2сек после последнего события keyup) делается запрос к базе с той строкой которая получилась в итоге. (Иначе просто получится что пользователь введет быстро например слово "телевизор" и если без таймаута на сервер уйдёт 8 ненужных запросов вместо одного)

    2. После обработки результат и запрос обычно кешируется (на случай если пользователь сотрёт все и заново напишет "телевизор" - запроса к базе не будет и он получит результат из кеша, если же сотрет и напишет "тел" - будет опять запрос к базе да) Пример кеширования на jqueryui: https://jqueryui.com/autocomplete/#remote-with-cache

    Но это все ограничивается в фронтенде и по сути только для удобства пользователя.

    А на серверной стороне да - запрос выполняется при каждом обращении к скрипту, но и там может быть настроено кеширование и обходится без запроса к базе.
    Ответ написан
    Комментировать
  • Как написать свою функцию транслитерации на php?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Ну раз нужен велосипед . То я другим путем это вижу вообще:
    <?php
    
    function transLit($text){
    $alfavit = array('а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'ye', 'ё'=>'yo', 'ж'=>'zh', 'з'=>'z', 'и'=>'i', 'к'=>'k', 'л'=>'l','м'=>'m', 'н'=>'n','о'=>'o', 'п'=>'p','р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u','ф'=>'f','х'=>'kh', 'ц'=>'ts', 'ч'=>'ch', 'ш'=>'sh','щ'=>'tch', 'ъ'=>'"', 'ы'=>'y', 'ь'=>'`', 'э'=>'eh', 'ю'=>'yu', 'я'=>'ya');
    $text_a = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
    $text = '';
    foreach($text_a as $val) {
        $text .= (isset($alfavit[$val])) ? $alfavit[$val] : $val; 
    }
    return $text;
    }
    $text = "Привет мир! Как дела?";
    echo transLit($text);
    ?>


    Вывод:
    Пrivyet mir! Кak dyela?

    UPD:
    Не забудьте про регистр букв, это уже вам задачка )
    Ответ написан
    1 комментарий
  • Как сделать проверку поля на наличие данных?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    <code lang="php">
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (isset($_POST['site'])) {$site = '<b>Сайт:</b> '.$_POST['site'];}
        if (isset($_POST['geo'])) {$geo = '<b>Геграфия рекламы:</b> '.$_POST['geo'];}
        if (isset($_POST['phone'])) {$phone = '<b>Телефон:</b> '.$_POST['phone'];}
        if (isset($_POST['email'])) {$email = '<b>email:</b> '.$_POST['email'];}
        if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
    
        $to = "mail@gmail.com";
        $sendfrom   = "mail@gmail.com";
        $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
        $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
        $subject = "$formData";
        $message = "$formData
    	$site
    	$geo
    	$email
    	$phone";
        $send = mail ($to, $subject, $message, $headers);
        if ($send == 'true')
        {
            echo '<center>
     
    Спасибо за отправку вашего сообщения!
     
    </center>';
        }
        else
        {
            echo '<center>
     
    <b>Ошибка. Сообщение не отправлено!</b>
     
    </center>';
        }
    } else {
        http_response_code(403);
        echo "Попробуйте еще раз";
    }?>
    </code>
    Ответ написан
  • Как правильно вывести данные из Бд с использованием WHERE?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Скобки добавьте просто
    SELECT * FROM `users_orders` WHERE `order_date` > '$fromdate' and `order_date` < '$todate' and `manager` =  '$order_manager' and (`order_status` = '$close' or `order_status` = '$delivered') order by order_date DESC
    Ответ написан
    3 комментария
  • Oracle 10G + php7 Как в sql запрос ввести данные из поля?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Попробуйте
    $row = oci_parse($conn, "Select distinct MG.*, OTD.* from MG, OTD, HK where HK.DG>=:DST and HK.DG<=:DED");
    Ответ написан
    Комментировать
  • Как работает php min?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Максим: Так у вас сравниваются не строки с integer, а строки со строками
    К примеру
    <?php
    $a = array('0defsdfsdf', 10.5, 5.4, 3.3, 2.2, 0.1);
    echo min($a);

    выведет: 0defsdfsdf

    UPD:
    Это я написал к комментарию:
    Так вот. Если оно приводится к нулю, то чего оно не в результате? Если 0.1 больше 0


    А так ответ уже дали что
    '0defsdfsdf' > '0.1'
    Ответ написан
  • Почему возращает разную метку?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Как минимум потому что вы не указываете секунды в
    date('Y-m-d h:i', $model->published_at);
    UPD:
    timestamp хранит время с точностью до секунды
    Например:
    1486924655 - 2017-02-12 06:37:35

    После конвертации в date() без указания секунд вы получили
    2017-02-12 06:37:00

    и соотвественно timestamp:
    1486881420


    Используйте для проверки:
    date('Y-m-d h:i:s', $model->published_at);
    Ответ написан
    Комментировать
  • Возможно ли это сделать в одном цикле?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    <?php 
    $html = '';
    foreach ($v as  $vs) { ?>
    <div class="item">
    <img src="" title="" alt="" />
    </div>
    <?php 
    $html .= '<li data-target="" data-slide-to=""></li>';
    }
     ?>
    
    <ol class="carousel-indicators">
    <?=$html;?>
    </ol>

    *fix
    Ответ написан
    4 комментария
  • Как сделать капчу?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Вот репозитроий:
    https://github.com/ist-dsi/jquery-ui-slider-captcha
    Скрин из примера:
    screen.png
    Ответ написан
    Комментировать
  • Почему умирает check.php?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    <br> уберите в условии
    if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])<br> or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))


    UPD:
    Вообще в php не так сложно отслеживать ошибки. Включите на время разработки вывод ошибок, или читайте логи.

    Да и любой нормальный IDE подскажет о такой ошибке
    Ответ написан
  • Как правильно делать проверку данных из формы?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    По вашему примеру:
    Сначала вы естественно проверяете пришла ли вообще переменная isset.
    потом лучше убрать пробелы trim чтобы правильно проверить strlen, а после уже преобразуете строку как вам нужно htmlspecialchars

    То есть по сути все правильно кроме того что trim желательно сделать до strlen

    ...
    здесь написал неправильное условие и сам убрал
    Ответ написан
    Комментировать
  • Как устроить безопасный вход на сайт через facebook?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Использовать oauth
    оф. сайт:
    https://developers.facebook.com/docs/php/howto/exa...

    Или вот старенький урок:
    ruseller.com/lessons.php?id=1670
    Ответ написан
    Комментировать
  • Удаление дубликатов и таблицы?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Бэкап незабудьте
    DELETE t1 FROM tableName t1, tableName t2 WHERE t1.id < t2.id AND t1.login= t2.login

    Но если записей очень много то лучше использовать вариант с временной таблицей и INSERT

    tableName - заменить на название своей таблицы
    Ответ написан
    Комментировать
  • Как сделать редирект на мобильную версию?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    PHP тут не причем.
    Реализуется на JS
    На вашем же примере в исходном коде страницы всё есть:

    function detect_device() {
    			var w = window,
    				d = document,
    				e = d.documentElement,
    				g = d.getElementsByTagName('body')[0],
    				x = w.innerWidth || e.clientWidth || g.clientWidth,
    				y = w.innerHeight|| e.clientHeight|| g.clientHeight;
    			var isiPhone = 		navigator.userAgent.toLowerCase().indexOf("iphone");
    			var isiPad = 		navigator.userAgent.toLowerCase().indexOf("ipad");
    			var isiPod = 		navigator.userAgent.toLowerCase().indexOf("ipod");
    			var isiAndroid = 	navigator.userAgent.toLowerCase().indexOf("android");
    			if(isiPhone > -1 || isiPad > -1 || isiPod > -1 || isiAndroid > -1 && mobile == false){
    				window.location='mobile.php?page=login';
    			}
    			if(x <= 800 && mobile == false){
    				window.location='mobile.php?page=index';	
    			}			
    
    		}
    		detect_device();
    		window.onresize = function() {
    			var w = window,
    				d = document,
    				e = d.documentElement,
    				g = d.getElementsByTagName('body')[0],
    				x = w.innerWidth || e.clientWidth || g.clientWidth,
    				y = w.innerHeight|| e.clientHeight|| g.clientHeight;	
    				
    			if(x <= 800 && mobile == false){
    				window.location='mobile.php?page=index';	
    			}
    			if(x > 801 && mobile == true){
    				window.location='index.php?page=index';	
    			}		
    		};
    Ответ написан
    Комментировать
  • Не передает данные из PhP в MySQL?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Вы же просто переменную присваиваете,
    сам запрос забыли сделать
    $users_login = mysqli_query($link, "INSERT INTO `login_pass`(`login`, `pass`) VALUES ('".$login."', '".$pass."')");


    Да и вот это ? что такое?
    if($users_login == 'true')
    Оставьте просто
    if($users_login)
    Ответ написан
  • Вызвать функцию php через ajax?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Здесь нет какого-то "правильного" стандартного подхода, вы можете передавать один параметр постом например $_POST['action']
    и в зависимости от его значения(например используя switch($_POST['action'])) выполнять в PHP скрипте нужное действие.
    Можно так как вы и сделали, с опытом и для конкретных задач вы будете сами находить нужное решение.
    Будете например использовать MVC фреймворки - тогда будете осуществлять это с помощью роутингов.
    Так что метод совсем не дурацкий как вы написали, просто метод для небольшого приложения.
    Ответ написан
    Комментировать
  • Как перейти на другую страницу где написано id в div-ке?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    Раз нужно показать определенный таб, то лучше передать через
    header("Location: /admin/elektrika#tabId");
    id именно самого таба(кнопочки), а не id дива с содержимым
    и на странице которая загружается добавить немного js:
    $(function(){
        $(document.location.hash).tab('show');
    }
    Ответ написан
    Комментировать