76

Re: Help

Ketsyki сказал:

Пробовал кавычки менять. Не катит. Данные в БД не идут.

Но запрос SELECT - это выборка данных из БД, а не вставка. Для вставки данных используется запрос INSERT.

77

Re: Help

Поправил ошибку smile Она оказалась совсем не в том месте smile Я в написании одной переменной сделал ошибку (когда уже в БД вставляется) ^_^

78 (изменено: Ketsyki, 2010-12-11 19:28:35)

Re: Help

А вот если такая ситуация: пользователь не может найти свой город. Т.е. надо дать возможность добавить город в БД. И вот как это удобнее всего сделать? Сделать ссылку на новую страницу и там прицепить добавление города? Или еще как-то можно?
Кароче, как сделать такую штуку удобным и простым способом? Есть еще мысля,сделать через Jquery выпадающую панель http://anton.shevchuk.name/wp-demo/jque … panel.html и при нажатии на нее заблокируется и очистится список "Город", а в это панели будет графа для ввода названия города. И данные из этой графы отправятся в базу данных городов. Но тут тоже есть проблемка: че если юзеры закроют панель, не будет ли проблем с выборкой города из этой панели.

Кароче, как лучше всего дать возможность добавлять города?

79

Re: Help

Попробуйте рядом со списком городов спрятать поле ввода (style="display: none;") и в список городов добавить еще один выбор:
<option value="add" style="font-weight: bold;">Добавить...</option>
При выборе которого будет появляться текстовое поле ввода в котором можно будет ввести название нового города и отправить его на сервер через Ajax.

Как вариант - можно не отправлять новый город на сервер через Ajax, а обработать введенные данные поля при разборе POST запроса и если будет определен новый город, то сперва добавить его в БД, а затем уже все остальные данные.

80

Re: Help

Вот таким кодом я кидаю города  список:

if ($type == 'city') {
     
     $cities = $DB->select('SELECT *

                                    FROM city
                                    WHERE region_id = ?d
                                    ORDER BY name', $id);
     if (!empty($cities)) {
         echo "out.options[out.options.length] = new Option('выберите город...','none');\n";
     echo "out.options[out.options.length] = new Option('Добавить город','-1');\n"; \\ Вот этой строкой я добавляю в список строчку "Добавить город" с value=-1?
         foreach ($cities as $city) {
              echo "out.options[out.options.length] = new Option('".$city['name']."','".$city['city_id']."');\n";
         }
     }
     else {
          echo "out.options[out.options.length] = new Option('нет городов','none');\n";
     }
}

Дальше пишу на javascript код, который смотрит value, и если value<0, то показывает строчку для ввода города.

Дальше файл, который у меня обрабатывает форму смотрит: если в выпадающем списке value =-1, то считывает название города из строчки для добавления города. Дальше, коннектится к базе данных городов. Добавляет туда новый город, под уникальным id. Потом коннектится к другой БД и впихивает туда все, включая новый город.

Так?

81

Re: Help

Ketsyki сказал:

Потом коннектится к другой БД и впихивает туда все, включая новый город.
Так?

Совершенно верно.

82

Re: Help

А учебник по javascript не посоветуете? smile А то по статейкам в нете не могу разобраться
Вот например, выпадающий список называется country_id, input называется Addcity
Вот пишу функцию

<script>
function Addcity(obj)

{
var country_id = obj.country_id.value \\Присваиваю переменной country_id значение value из выпадающего списка.
if country_id=-1;
   obj.Addcity.style='display: visible;'; \\Атрибуту style инпуту Addcity присваиваю display: visible;

}
</script> 

Это правильно? (скорее всего нет)

Дальше, для выпадающего списка пишу:

onChange="Addcity()" \\Т.е. функция вызывается при выборе элемента из списка

А вот дальше че делать?

83

Re: Help

Добавляем идентификаторы (id).
<select id="country_id" onchange="Addcity();">
Далее так же на поле ввода:
<input type="text" id="Addcity" />

function Addcity() {
var country_id = document.getElementById("country_id");
if (country_id.value == "-1")
   document.getElementById("Addcity").style.display = "inline";
}

Книги посоветую эти: http://forum.php-myadmin.ru/viewtopic.php?id=1385

84

Re: Help

Все, извиняюсь. Я тут напутал с переменными. Вместо country надо было city ^_^

85

Re: Help

А как реализуют такую штуку:
В базу данных надо добавить новый город с новым, уникальным ID, которого еще нет  в БД? Есть мысль, создать отдельный файл, в нем будет храниться максимальное значение id из БД и каждый раз, когда добавляется новый город ID в файле будет увеличиться и присваиваться городу. Или есть способы по-лучше?

86

Re: Help

Ketsyki сказал:

В базу данных надо добавить новый город с новым, уникальным ID, которого еще нет  в БД?

Это один из основополагающих принципов хранения данных.

Перейдите на редактирование поля ID и установите ему целочисленный тип, например int(10) и отметьте параметр AUTO_INCREMENT; затем в структуре таблицы установите поле ID как первичный ключ.

Теперь каждая добавляемая запись будет создаваться под уникальным идентификатором в поле ID, который автоматически будет увеличиваться.

Чтобы автоматически создать новое уникальное значение в поле ID при записи, в запросе INSERT не надо упоминать поля ID, либо можно назначить ему значение NULL.

87

Re: Help

У меня просто мааааленькая проблемка. У меня ID присваиваются так:
Например, пусть регион имеет id 100000, то id городов буду иметь вид от 100000 до 100020
у следующего региона id уже 100100 и id городов от 100100 до 100158
Т.е. единственный вариант, это взять число, большее максимального значения id в БД и при каждом добавлении города увеличиться его на 1.
Я так уже сделал, создал для этого отдельный файл-счетчик. Ток че-то не работает, но завтра затестю, в чем проблема.

88

Re: Help

Ketsyki сказал:

Например, пусть регион имеет id 100000, то id городов буду иметь вид от 100000 до 100020

Думаю для решения задачи лучше было создать отдельную таблицу регионов и отдельную городов. Затем связать эти таблицы по идентификаторам.

89

Re: Help

А теперь вопрос по phpmyadmin. Как хранить ссылки на файлы и можно ли сделать так, чтоб при нажатии на ссылку открывался этот файл?

90

Re: Help

Ketsyki сказал:

А теперь вопрос по phpmyadmin. Как хранить ссылки на файлы и можно ли сделать так, чтоб при нажатии на ссылку открывался этот файл?

Для каждого поля можно задать преобразование. С помощью преобразования можно выводить ссылки и картинки из БД.

Выберите редактирование поля; укажите MIME тип, после чего задайте вид преобразований и при необходимости его параметры.

91

Re: Help

Так, а я вот сейчас делаю проверку формы. Юзаю Jquery и столкнулся с такой проблемой.
Есть код:

    $(document).ready(function() {

 $.validator.addMethod("Surname",function(value,element){
    return this.optional(element) || /^[a-zA-Z0-9._-]{3,16}$/i.test(value);
    },"Фамилия пользователя от 3 - 15 символов.");

    
        // Validate signup form
        $("#signup").validate({
                rules: {
                        
        Surname: "required Surname",
            
                        
                        

                },
                

        });
    
   
    
    

    });

</script>

Код рабочий, но для него используется jquery 1.3.0, а у меня стоит 1.4.2, поэтому, фразу о том, что фамилия должны быть длиннее он отображает нормально, но вот фразу о том, что поле не заполнено он отображает в виде непонятных символов.
Код брал тут http://dwlessons.ru/verstka/jquery-prov … html#valid

92

Re: Help

Проблему решил. Зашел в файл со скриптом validate в сообщениях стер надпись "Пожалуйста введите данные" и написал "Введите данные". Все стало работать. Я конечно не понимаю, как вообще это могло решить проблему, ибо проблема явно была с языком и кодировкой. Но проблема решилась

93

Re: Help

sad
Пишу код для проверки формы.

<script type="text/javascript">

 
     

    $(document).ready(function() {

 $.validator.addMethod("Surname",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Фамилия должна содержать не менее 2 символов.");


$.validator.addMethod("Name1",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Имя должно содержать не менее 2 символов.");


 $.validator.addMethod("Patronymic",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Отчество должно содержать не менее 2 символов.");
    

$.validator.addMethod("Email", function(value, element) {  
    return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i.test(value);  
    }, "Введите корректный e-mail.");


$.validator.addMethod( 
       "selectNone1",
      function(value, element) { 
        if (element.value == "none") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 

$.validator.addMethod("Date", function(value, element) {  
    return this.optional(element) || /^[0-9]+\-[0-9]+\-[0-9]{2}$/i.test(value);  
    }, "Введите дату рождения.");
    

$.validator.addMethod( 
       "selectNone",
      function(value, element) { 
        if (element.value == "none") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 


        // Validate signup form
        $("#signup").validate({
                rules: {
                        
        
        Surname: "required Surname",
        Name1: "required Name1",
        Patronymic: "required Patronymic",
        Email: "required Email",
        
                  
          Sex: { 
            selectNone1: true 
          }, 
         
        Date: "required Date",


         country: { 
            selectNone: true 
          },

          
        }
                
                

        });
    
   
    
    

    });

</script>

И вот сама форма:

<b>Фамилия</b><br />
<input name="Surname" type="text" id="Surname" /><br />

<b>Имя</b><br />
<input name="Name1" type="text" id="Name1" /><br />

<b>Отчество</b><br />
<input name="Patronymic" type="text" id="Patronymic" /><br />

<b>E-mail</b><br />
<input name="Email" type="text" id='Email' /><br />

<b>Пол</b><br />
<select name="Sex" id="Sex" class="required">
<option value=""></option>
<option value="Мужской">Мужской</option>
<option value="Женский">Женский</option>
</select><br /><br />

<b>Дата рождения</b><br />

<input name="Date" id="Date" type="text" /><br />


<b>Страна</b><br /> 
          
               <select name="country_id" id="country" onchange="getList('region', 'country')" style="width:300px;" />
<option value="">Выберите страну</option> 
<option value="4">Австралия</option> 
                                                   <option value="63">Австрия</option> 
                                                   <option value="81">Азербайджан</option> 
                                                   <option value="173">Ангуилья</option> 
                                                   <option value="177">Аргентина</option> 
                                                   <option value="245">Армения</option> 
                                                   <option value="7716093">Арулько</option> 
                                                   <option value="248">Беларусь</option> 
                                                   <option value="401">Белиз</option> 
                                                   <option value="404">Бельгия</option> 
                                                   <option value="425">Бермуды</option> 
                                                   <option value="428">Болгария</option> 
                                                   <option value="467">Бразилия</option> 
                                                   <option value="616">Великобритания</option> 
                                                   <option value="924">Венгрия</option> 
                                                   <option value="971">Вьетнам</option> 
                                                   <option value="994">Гаити</option> 
                                                   <option value="1007">Гваделупа</option> 
                                                   <option value="1012">Германия</option> 
                                                   <option value="1206">Голландия</option> 
                                                   <option value="2567393">Гондурас</option> 
                                                   <option value="277557">Гонконг</option> 
                                                   <option value="1258">Греция</option> 
                                                   <option value="1280">Грузия</option> 
                                                   <option value="1366">Дания</option> 
                                                   <option value="2577958">Доминиканская республика</option> 
                                                   <option value="1380">Египет</option> 
                                                   <option value="1393">Израиль</option> 
                                                   <option value="1451">Индия</option> 
                                                   <option value="277559">Индонезия</option> 
                                                   <option value="277561">Иордания</option> 
                                                   <option value="3410238">Ирак</option> 
                                                   <option value="1663">Иран</option> 
                                                   <option value="1696">Ирландия</option> 
                                                   <option value="1707">Испания</option> 
                                                   <option value="1786">Италия</option> 
                                                   <option value="1894">Казахстан</option> 
                                                   <option value="2163">Камерун</option> 
                                                   <option value="2172">Канада</option> 
                                                   <option value="582029">Карибы</option> 
                                                   <option value="2297">Кипр</option> 
                                                   <option value="2303">Киргызстан</option> 
                                                   <option value="2374">Китай</option> 
                                                   <option value="582040">Корея</option> 
                                                   <option value="2430">Коста-Рика</option> 
                                                   <option value="582077">Куба</option> 
                                                   <option value="2443">Кувейт</option> 
                                                   <option value="2448">Латвия</option> 
                                                   <option value="582060">Ливан</option> 
                                                   <option value="2505884">Ливан</option> 
                                                   <option value="2509">Ливия</option> 
                                                   <option value="2514">Литва</option> 
                                                   <option value="2614">Люксембург</option> 
                                                   <option value="582041">Македония</option> 
                                                   <option value="277563">Малайзия</option> 
                                                   <option value="582043">Мальта</option> 
                                                   <option value="2617">Мексика</option> 
                                                   <option value="582082">Мозамбик</option> 
                                                   <option value="2788">Молдова</option> 
                                                   <option value="2833">Монако</option> 
                                                   <option value="2687701">Монголия</option> 
                                                   <option value="582065">Морокко</option> 
                                                   <option value="277551">Нидерланды</option> 
                                                   <option value="2837">Новая Зеландия</option> 
                                                   <option value="2880">Норвегия</option> 
                                                   <option value="582051">О.А.Э.</option> 
                                                   <option value="582105">Остров Мэн</option> 
                                                   <option value="582044">Пакистан</option> 
                                                   <option value="582046">Перу</option> 
                                                   <option value="2897">Польша</option> 
                                                   <option value="3141">Португалия</option> 
                                                   <option value="3156">Реюньон</option> 
                                                   <option value="3159">Россия</option> 
                                                   <option value="277555">Румыния</option> 
                                                   <option value="5647">Сальвадор</option> 
                                                   <option value="277565">Сингапур</option> 
                                                   <option value="582067">Сирия</option> 
                                                   <option value="5666">Словакия</option> 
                                                   <option value="5673">Словения</option> 
                                                   <option value="5678">Суринам</option> 
                                                   <option value="5681">США</option> 
                                                   <option value="9575">Таджикистан</option> 
                                                   <option value="277567">Тайвань</option> 
                                                   <option value="582050">Тайланд</option> 
                                                   <option value="582090">Тунис</option> 
                                                   <option value="9638">Туркменистан</option> 
                                                   <option value="277569">Туркмения</option> 
                                                   <option value="9701">Туркс и Кейкос</option> 
                                                   <option value="9705">Турция</option> 
                                                   <option value="9782">Уганда</option> 
                                                   <option value="9787">Узбекистан</option> 
                                                   <option value="9908">Украина</option> 
                                                   <option value="10648">Финляндия</option> 
                                                   <option value="10668">Франция</option> 
                                                   <option value="277553">Хорватия</option> 
                                                   <option value="10874">Чехия</option> 
                                                   <option value="582031">Чили</option> 
                                                   <option value="10904">Швейцария</option> 
                                                   <option value="10933">Швеция</option> 
                                                   <option value="582064">Эквадор</option> 
                                                   <option value="10968">Эстония</option> 
                                                   <option value="3661568">ЮАР</option> 
                                                   <option value="11002">Югославия</option> 
                                                   <option value="11014">Южная Корея</option> 
                                                   <option value="582106">Ямайка</option> 
                                                   <option value="11060">Япония</option> 
</select> <br /><br />
                                            
                                 
                                            
                                      
                                
            
          
         <b>Регион</b><br />
         <div style="display: none" id="loading_region"><img alt="" src="ajax_loader.gif" />Загрузка...</div>
          
  
               <select name="region_id" id="region" onchange="getList('city', 'region')" style="width:300px;"><br /><br />
                                            
  
                                  </select> <br /><br />
          
  
         <b>Город</b><br /> 
         <div style="display: none" id="loading_city"><img alt="" src="ajax_loader.gif" />Загрузка...</div> 
          
               <select name="city_id" id="city" style="width:300px;" onchange="getList('school', 'city'), addCityFunc() ">
                                          
                                  </select> <br /><br />

<input id="addCity" name="Addcity" type="text" style="display: none;" >  




<b>Учебное заведение</b><br /> 
         <div style="display: none" id="loading_school"><img alt="" src="ajax_loader.gif" />Загрузка...</div>
          
               <select name="school_id" id="school" style="width:300px;" onChange="addSchoolFunc()"><br />
                                          
                                  </select> <br /><br />
<input id="addSchool" name="Addschool" type="text" style="display: none;" > 

          


          
         

          
   


<b>Адрес</b><br />
<input name="Address" type="text"> <br />

<b>Класс</b><br />
<select name="Class" id="Class" /> <br />
<OPTION value=""></OPTION>
<option value=11>11</option>
<option value=10>10</option>
<option value=9>9</option>
<option value=8>8</option>
<option value=7>7</option>
</select><br /><br />





<b>Загрузить файл</b><br />
<input name ='file1' type='file'> <br />












<b>Фамилия научного руководителя</b><br />
<input name="SSurname" type="text"> <br />

<b>Имя научного руководителя</b><br />
<input name="SName" type="text"> <br />

<b>Отчество научного руководителя</b><br />
<input name="SPatronymic" type="text"> <br />


 




<input type="submit" value="Отправить">
<input type="reset" value="Очистить">





</form>
</div>

</div>


</div>
</div>


</body>
</html>

Вот там вот повыше, написана формула для проверки, выбран ли пол. И возникла такая проблема, что я этим же кодом пытаюсь проверить, выбрана ли страна, но код не работает, т.е. сообщение о том, что страна не выбрана не выдается. И такая фигня со всему выпадающими списками, кроме списка с полом. sad

94

Re: Help

Добавьте аттрибут class="required", именно он указывает на поле, которое должно иметь значение. Зачем добавлять addMethod, я признаться не понял.

По моему это лишнее.

$.validator.addMethod( 
       "selectNone1",
      function(value, element) { 
        if (element.value == "none") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 

95

Re: Help

Немного подправил код:

<script type="text/javascript">

 
     

    $(document).ready(function() {

 $.validator.addMethod("Surname",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Фамилия должна содержать не менее 2 символов.");


$.validator.addMethod("Name1",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Имя должно содержать не менее 2 символов.");


 $.validator.addMethod("Patronymic",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Отчество должно содержать не менее 2 символов.");
    

$.validator.addMethod("Email", function(value, element) {  
    return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i.test(value);  
    }, "Введите корректный e-mail.");


$.validator.addMethod( 
       "selectNone1",
      function(value, element) { 
        if (element.value == "") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 

$.validator.addMethod("Date", function(value, element) {  
    return this.optional(element) || /^[0-9]+\-[0-9]+\-[0-9]{2}$/i.test(value);  
    }, "Введите дату рождения.");



$.validator.addMethod( 
       "selectNone2",
      function(value, element) { 
        if (element.value == "-2") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 


$.validator.addMethod( 
       "selectNone3",
      function(value, element) { 
        if (element.value == "-1") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 



$.validator.addMethod( 
       "selectNone4",
      function(value, element) { 
        if (element.value == "-1") 
        { 
          return false; 
        } 
        
else
return true; 
      }, 
      "Заполните поле." 
    ); 


$.validator.addMethod( 
       "selectNone5",
      function(value, element) { 
        if (element.value == "-1") 
        { 
          return false; 
        } 
        
else
return true; 
      }, 
      "Заполните поле." 
    ); 



$.validator.addMethod( 
       "selectNone6",
      function(value, element) { 
        if (element.value == "") 
        { 
          return false; 
        } 
        else return true; 
      }, 
      "Заполните поле." 
    ); 





$.validator.addMethod("SSurname",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Фамилия должна содержать не менее 2 символов.");

$.validator.addMethod("SName",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Имя должна содержать не менее 2 символов.");

$.validator.addMethod("SPatronymic",function(value,element){
    return this.optional(element) || /^[а-яА-Я-]{2,}$/i.test(value);
    },"Отчество должна содержать не менее 2 символов.");
    

        // Validate signup form
        $("#signup").validate({
                rules: {
                        
        
        Surname: "required Surname",
        Name1: "required Name1",
        Patronymic: "required Patronymic",
        Email: "required Email",
        
                  
          Sex: { 
            selectNone1: true 
          }, 
         
        Date: "required Date",

        country_id: { 
            selectNone2: true
        },

        region_id: { 
            selectNone3: true
        },


        city_id: { 
            selectNone4: true
},

school_id: { 
            selectNone5: true
},
        

    Class: { 
            selectNone6: true
},            
SSurname: "required SSurname",
SName: "required SName",
SPatronymic: "required SPatronymic",
          
        }
                
                

        });
    
   
    
    

    });

</script>

А у меня же такая штука, что при выборе в выпадающем списке "Добавить город" с value=-2, появляется input, в который надо ввести новый город. Т.е. при выборе "Добавить город" сообщения о том, что надо выбрать что-нибудь из выпадающего списка появится не должно, но должно появится сообщение о том, что надо заполнить появившийся input. Пытался сделать это через

if($("#city")[0].value<-1)

, но че-то не работает...

96

Re: Help

Попробуйте так. Хотя не понял где вы это прописали.

Ketsyki сказал:

if($("#city").value<-1)

Если возникают проблемы с логикой программы, то используйте отладчик Firebug в Firefox, где можно поставить точку прерывания и отловить ошибку.

97

Re: Help

Парни, выручайте, вопрос: Как сменить пользователя в  phpMyAdmin ? neutral
Нового пользователя я создал, а вот как зайти под его логином и паролем не раздуплю  sad

98

Re: Help

sLIVA сказал:

Как сменить пользователя в  phpMyAdmin ?

При авторизации методом config, пользователь меняется в конфигурационном файле. Если необходимо разрешить доступ к phpMyAdmin под разными пользователями, то в конфигурационном файле следует сменить метод авторизации на cookie и указать в blowfish_secret любой набор букв и цифр (запоминать их не надо).

$cfg['blowfish_secret'] = 'w8j87roxjjyym';
$cfg['Servers'][$i]['auth_type'] = 'cookie';

99

Re: Help

Благодарю cool