Ответы пользователя по тегу PHP
  • Как сделать мультиязычный сайт?

    Exploding
    @Exploding
    wtf?
    Почему-же нет? Конечно возможно! Ставите front-page или аналог какой-то и вперед! Но это если там пару страниц. Иначе лучше все таки двиг какой-то берите! Хостинг то все равно будете покупать, а там как правило можно нажатием одной кнопки все поставить. Да или техподу сказать - они сделают.
    Ибо статика коварна! Но надежна...
    Ответ написан
  • Как правильно получить значение из нескольких многомерных массивов?

    Exploding
    @Exploding
    wtf?
    array_walk_recursive
    вот пример с php.net:
    $sweet = array('a' => 'apple', 'b' => 'banana');
    $fruits = array('sweet' => $sweet, 'sour' => 'lemon');
    
    function test_print($item, $key)
    {
        echo "$key holds $item\n";
    }
    
    array_walk_recursive($fruits, 'test_print');


    Вот еще в закромах нашел, можно приспособить под вашу задачу
    // рекуксивный обход массива $array и удаление элемента с КЛЮЧЕМ(ключами) $value
    function removeArrElemByKey( &$array, $value ){ 
    	if(count($array) > 1)
    		foreach( $array as $key => $val ){
    			if( is_array($val) ){
    				removeArrElemByKey($array[$key], $value);
    			} elseif( $val===$value ){
    				unset($array[$key]);
    			}
    		}
    }
    Ответ написан
    2 комментария
  • Как вывести имя авторизованного пользователя?

    Exploding
    @Exploding
    wtf?
    Вот так:
    if (isset($_POST['login_u'])) {
    		$login_true = mysqli_query($connections, "SELECT * FROM `users` WHERE login='".$_POST['login']."' AND password = MD5('".$_POST['password']."')");
    		if ($login_true) {
    				$user = mysql_fetch_assoc($login_true);
    				$_SESSION['login_user'] = $login_true;
    				$_SESSION['user_name'] = $user['name']; //или где там имя храниться
    		} else echo "Не правильно";
      	}	
    echo "Здрасте, ".$_SESSION["user_name"];


    Только Вы бы почитали про sql-инъекции, а то так пихать в запрос все что не попадя - все равно что тянуть все в рот, что на дороге нашел...
    Ответ написан
    22 комментария
  • Как убрать пробелы между словами?

    Exploding
    @Exploding
    wtf?
    $normal_str = "Это нормальная строка";
    $wtf_str = str_replace(" ", "", $normal_str); //Этонормальнаястрока
    Ответ написан
  • Как реализовать отправку смс 100-500 смс за раз?

    Exploding
    @Exploding
    wtf?
    Самое главное то Вы и не упомянули!)) А именно - способ отправки смс. Тут все скорее от сервис-провайдера зависит: способ получения от Вас данных, ограничения если есть (может таймаут или кол-во в сутки там например...)
    А форичем Вы по ним будете проходиться или вайлом - по моему вообще до одного места:)

    Для примера: я использую сервис, который позволяет напрямую подключаться к их БД (для каждого клиента там отдельная таблица) и просто инсертю в нее столько смс - сколько моя душа пожелает, хоть 100 хоть 1000 хоть лям (ну и средства на аккаунте:)), а дальше уже его проблемы как он их будет отправлять. Данные он получил, "расписался" - аривидерчи:)
    Ответ написан
    2 комментария
  • Как соеденить 2 массива и чтоб они выводились по цифрам?

    Exploding
    @Exploding
    wtf?
    $users[] = $user_1;
    $users[] = $user_2;

    или
    $users = array_merge($user_1, $user_2);
    Ответ написан
    Комментировать
  • Как сделать поиск по ключевым словам?

    Exploding
    @Exploding
    wtf?
    Для этого используйте конструкцию MATCH AGAINST. В мануалах там много про это есть.
    Самые главные преимущества перед LIKE:
    - поиск происходит не просто по тексту как с лайком, а по индексированным данным, что намного быстрее!
    - опять таки поскольку данные индексированы, поиск умеет определять коэффициент релевантности(!), не плохо как для голого мускула, правда?)) И результат соответственно можно отсортировать по релевантности, что очень удобно по сравнению с лайком...
    Нюансы кратко:
    - для полей по которым будет осуществляться поиск должны быть определены полнотекстовые индексы
    - такой поиск не может искать вхождения в середине слова (не фразы, а именно слова!!!). Да в принципе это очень редко встречается на практике.
    Но зато поиск будет работать гораздо быстрее чем с LIKE!
    Чтобы искать например фразу "дохлые мыши не едят зерно" по словам, надо сделать такое:
    - фразу загоняем в массив по пробелу: $request = explode(" ", $req_array);
    - из массива удаляем заранее определенные части речи типа союзов, местоимений и т.д.
    хотя и не обязательно т.к. MATCH AGAINST игнорит слова 3 и менее символов, но подсознание подлое)), а и еще ж знаки препинания убрать, мало ли...
    И потом это все дело опять в строку $to_query = implode(" ", $request);
    И в запрос:
    select * from `table` WHERE MATCH (`myfield1`, `myfield2`) AGAINST ('$to_query' IN BOOLEAN MODE)

    И еще можно сортировку по релевантности состряпать изменив немного запрос:
    select *, MATCH (`myfield1`, `myfield2`) AGAINST ('$to_query' IN BOOLEAN MODE) as `score` from `table` WHERE MATCH (`myfield1`, `myfield2`) AGAINST ('$to_query' IN BOOLEAN MODE) order by `score` desc

    В итоге мы сможем найти фразу наподобие: "зерновые культуры и мыши - друзья, но если мыши дохлые" по трем словам.
    Заметьте, что ставить "%srch_str%" или "*srch_str*" не нужно!!! СУБД понимает все.
    Вот как бы такой он поиск. Но еще я прикручивал phpmorphy для того чтобы вытягивать словоформы для каждого слова, тогда можно будет найти фразу типа: "зерна постоянно смеются над дохлыми мышами"
    Вроде бы все:)
    А, нет, не все. Еще можно помимо LIKE использовать RLIKE.
    Для этого наш последний массив слов пихаем в строку, но только вот так:
    $to_query = implode("|", $request);
    И в запрос: select * from `table` WHERE `myfield1` RLIKE '$request' or `myfield2` RLIKE '$request'
    Как бы те же яйца, что и с LIKE но немного удобнее формировать сам запрос.
    Ответ написан
    Комментировать