Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (10)
  • Динамическое добавление полей в форме?

    nixmale
    @nixmale
    <div id="parentId">
      <div>
        <nobr><input name="name[1]" type="text" style="width:300px;" />
        <select size="1" name="type[1]" style="width:150px;">
          <option value="text">Текстовое поле</option>
          <option value="int">Целое число</option>
          <option value="float">Число-цена</option>
        </select>
        <a style="color:red;" onclick="return deleteField(this)" href="#">[—]</a>
        <input name="url[1]" type="text" style="width:300px;" />
        <a style="color:green;" onclick="return addField()" href="#">[+]</a></nobr>
      </div>
    </div>
    
    <script>
    var countOfFields = 1; // Текущее число полей
    var curFieldNameId = 1; // Уникальное значение для атрибута name
    var maxFieldLimit = 25; // Максимальное число возможных полей
    function deleteField(a) {
      if (countOfFields > 1)
      {
     // Получаем доступ к ДИВу, содержащему поле
     var contDiv = a.parentNode;
     // Удаляем этот ДИВ из DOM-дерева
     contDiv.parentNode.removeChild(contDiv);
     // Уменьшаем значение текущего числа полей
     countOfFields--;
     }
     // Возвращаем false, чтобы не было перехода по сслыке
     return false;
    }
    function addField() {
     // Проверяем, не достигло ли число полей максимума
     if (countOfFields >= maxFieldLimit) {
     alert("Число полей достигло своего максимума = " + maxFieldLimit);
     return false;
     }
     // Увеличиваем текущее значение числа полей
     countOfFields++;
     // Увеличиваем ID
     curFieldNameId++;
     // Создаем элемент ДИВ
     var div = document.createElement("div");
     // Добавляем HTML-контент с пом. свойства innerHTML
     div.innerHTML = "<nobr><input name=\"name[" + curFieldNameId + "]\" type=\"text\" style=\"width:300px;\" /> <select size=\"1\" name=\"type[" + curFieldNameId + "]\" style=\"width:150px;\"><option value=\"text\">Текстовое поле</option><option value=\"int\">Целое число</option><option value=\"float\">Число-цена</option></select> <a style=\"color:red;\" onclick=\"return deleteField(this)\" href=\"#\">[—]</a> <input name=\"url[" + curFieldNameId + "]\" type=\"text\" style=\"width:300px;\" /> <a style=\"color:green;\" onclick=\"return addField()\" href=\"#\">[+]</a></nobr>";
     // Добавляем новый узел в конец списка полей
     document.getElementById("parentId").appendChild(div);
     // Возвращаем false, чтобы не было перехода по сслыке
     return false;
    }
    </script>
    
    Ответ написан
    1 комментарий
  • Идеи для Хабрастартапа: Посевная стадия: Мозговой штурм

    nixmale
    @nixmale
    Я тоже предложу один проект, правда не знаю как это правильно описать.
    Вообщем я хочу не какой либо сервис продвинуть, а предложить новую технологию, о которой пока не знают ни в Яндекс, ни даже в Google, и на основе ее создать конкурентный брэнд. Быстро перестроиться эти компании не смогут, так как сами на корню ее присекли, а значит есть шанс составить серьезную конкуренцию. Для этого необходима группа серьезных и заинтересованных в этом людей, не боящихся например фразы «Конкурировать с Яндексом».

    Продолжать?
    Ответ написан
    5 комментариев
  • Древовидные комментарии

    nixmale
    @nixmale
    Если речи идет о SQL, то есть одно очень хорошее решение для сортировки древовидных комментариев в один SQL запрос без LEFT JOIN, кстати которое с применением AJAX позволяет перезагружать отдельные ветки, начинающиеся с любого комментария в цепочки.

    Предположим добавление комментариев к теме выглядит следующим образом:
    $arr = array(
         array('id'=>1, 'pid'=>0, 'name'=>'Comment 1'),
          array('id'=>2, 'pid'=>1, 'name'=>'Comment 1.1'),
          array('id'=>3, 'pid'=>1, 'name'=>'Comment 1.2'),
          array('id'=>6, 'pid'=>1, 'name'=>'Comment 1.3'),
           array('id'=>4, 'pid'=>2, 'name'=>'Comment 1.1.1'),
           array('id'=>5, 'pid'=>2, 'name'=>'Comment 1.1.2'),
           array('id'=>7, 'pid'=>2, 'name'=>'Comment 1.1.3'),
         array('id'=>8, 'pid'=>0, 'name'=>'Comment 2'),
          array('id'=>12, 'pid'=>8, 'name'=>'Comment 2.1'),
          array('id'=>17, 'pid'=>8, 'name'=>'Comment 2.2'),
           array('id'=>13, 'pid'=>12, 'name'=>'Comment 2.1.1'),
            array('id'=>16, 'pid'=>13, 'name'=>'Comment 2.1.1.1'),
         array('id'=>9, 'pid'=>0, 'name'=>'Comment 3'),
          array('id'=>14, 'pid'=>9, 'name'=>'Comment 3.1'),
           array('id'=>15, 'pid'=>14, 'name'=>'Comment 3.1.1'),
         array('id'=>10, 'pid'=>0, 'name'=>'Comment 4'),
         array('id'=>11, 'pid'=>0, 'name'=>'Comment 5'),
         );
    


    Каждый комментарий имеет id и id родителя (pid). Ответ на тему должен принимать pid = 0, а ответ на комментарий — id комментария на который отвечаете соответственно. В конечном итоге дерево должно выглядеть так, как показано в массиве образце.

    Чтобы раскрыть дерево за 1 SQL, достаточно достать из базы все комментарии имеющие идентификатор темы, отсортировав их так: ORDER BY pid ASC, id ASC. В результате получим следующий массив.

    $arr = array(
         array('id'=>1, 'pid'=>0, 'name'=>'Comment 1'),
         array('id'=>8, 'pid'=>0, 'name'=>'Comment 2'),
         array('id'=>9, 'pid'=>0, 'name'=>'Comment 3'),
         array('id'=>10, 'pid'=>0, 'name'=>'Comment 4'),
         array('id'=>11, 'pid'=>0, 'name'=>'Comment 5'),
          array('id'=>2, 'pid'=>1, 'name'=>'Comment 1.1'),
          array('id'=>3, 'pid'=>1, 'name'=>'Comment 1.2'),
          array('id'=>6, 'pid'=>1, 'name'=>'Comment 1.3'),
           array('id'=>4, 'pid'=>2, 'name'=>'Comment 1.1.1'),
           array('id'=>5, 'pid'=>2, 'name'=>'Comment 1.1.2'),
           array('id'=>7, 'pid'=>2, 'name'=>'Comment 1.1.3'),
         array('id'=>12, 'pid'=>8, 'name'=>'Comment 2.1'),
          array('id'=>17, 'pid'=>8, 'name'=>'Comment 2.2'),
          array('id'=>14, 'pid'=>9, 'name'=>'Comment 3.1'),
          array('id'=>13, 'pid'=>12, 'name'=>'Comment 2.1.1'),
           array('id'=>16, 'pid'=>13, 'name'=>'Comment 2.1.1.1'),
           array('id'=>15, 'pid'=>14, 'name'=>'Comment 3.1.1'),
         );
    


    Теперь требуется изменить структуру массива.

         for ($i = 0, $c = count($arr); $i < $c; $i++)
         {
           $new_arr[$arr[$i]['pid']][] = $arr[$i];
         }
    


    И завершающая рекурсионная функция.

         function my_sort($data, $parent = 0, $level = 0)
         {
           $arr = $data[$parent];
    
           for($i = 0; $i < count($arr); $i++)
           {
             echo '<div style="padding-left:' . $level . 'px;">';
             echo $arr[$i]['name'];
               if(isset($data[$arr[$i]['id']])) my_sort($data, $arr[$i]['id'], 20);
             echo '</div>';
           }
         }
    


    Теперь чтобы показать все дерево одним разом, достаточно вызвать

    my_sort($new_arr, 0);
    Ответ написан
    6 комментариев
  • Как пропиарить небольшой сервис не имея больших денег на это?

    nixmale
    @nixmale
    Так ведь SEO это основа. Без нее никуда. Добавь уникальных статей на сайт, наставь ссылок. К концу октября сайт уже может видеть в топ-10 Яндекса твоя целевая аудитория. И не сколько денег потратить нужно, сколько хорошенько поработать над самим сайтом.
    Ответ написан
    7 комментариев
  • Подсветка кода в стандартном редакторе WP

    nixmale
    @nixmale
    Есть одна довольно любопытная вещица, но как ее прикрутить к админке сайта я не представляю. Быть может вам пригодится.
    data:text/html;base64,PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt9PC9zdHlsZT48ZGl2IGNsYXNzPSJlIiBpZD0iZWRpdG9yIj48L2Rpdj48c2NyaXB0IHNyYz0iaHR0cDovL2QxbjB4M3FqaTgyejUzLmNsb3VkZnJvbnQubmV0L3NyYy1taW4tbm9jb25mbGljdC9hY2UuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PjxzY3JpcHQ+dmFyIGU9YWNlLmVkaXQoImVkaXRvciIpO2Uuc2V0VGhlbWUoImFjZS90aGVtZS9tb25va2FpIik7ZS5nZXRTZXNzaW9uKCkuc2V0TW9kZSgiYWNlL21vZGUvcGhwIik7PC9zY3JpcHQ+
    
    Ответ написан
    1 комментарий