Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] [PHP, MySQL, JS]Использование селекта в регистрации

Ответить
Настройки темы
[решено] [PHP, MySQL, JS]Использование селекта в регистрации

Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: blackmane
Дата: 09-01-2012
Может вопрос покажется глупым, но все же, как создать динамически зависимые селекты (значения которых хранятся в БД), чтобы потом их записать в новую талицу?
В поисках ответа я наткнулся на Динамические селекты JS, и даже умудрился сделать два уровня с выборкой из бд (но мне нужно три), потом я понял что не смогу внести в конечную таблицу выбранные данные, так как вывод выглядит вот так:
PHP код: Выделить весь код

<?php

include "../data/dbconfig.php";
//if($conect == true)  {echo 'Conect DB';}
//if($select == true)  {echo 'Select TABLE';}

//selet all data from DB test
$result mysql_query("select * from mod_print where (id_firm='1')");
//if($result == true){echo 'TRUE DB<br>';}

//Poluchenie massiva
$array mysql_fetch_array($result);

echo 
" '1':{        ";

do {
    
printf("
    
    'do_%s':'%s',
    
    "
    
,$array['id'],$array['model_p']);
    
}
while(
$array mysql_fetch_array($result));

echo 
"},"
?>

Может какой form action =' ' добавить?
Речь о регистрации оборудования.
Я хочу сделать так что бы вместо поля "Модель" было два списка (первый "Фирма", второй "Модель принтера", который зависит от выбранной фирмы), тоже самое с этажем и кабинетом, и простой список матответственных лиц.
При этом существуют три таблицы:
firm_printer (id, firm)
mod_printer (id, id_firm, model_p, cartrige)
printer (id, firm, model, sn, inv_num, cartrige, et, depar, mat_face)
И хотелось бы сделать так чтобы при выборе определенной модели значение поля cartrige в таблице print копировалось из значения поля cartrige таблицы mod_print выбранной модели.


HTML код: Выделить весь код
<form name="myForm" action="add_print.php" method="post" onSubmit="return splash();"> <input type="hidden" name="action" value="add"> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr> <td>Модель</td> <td>Серийный номер</td> <td>Инвентарный номер</td> <td>Картридж</td> <td>Этаж</td> <td>Кабинет</td> <td>Мат. лицо</td> </tr> <tr> <td><input name="model" maxlength=30 size=22> </td> <td><input name="sn" maxlength=30 size=22></td> <td><input name="inv_num" maxlength=60 size=22></td> <td><input name="cartrige" maxlength=60 size=22></td> <td><input name="et" maxlength=60 size=22></td> <td><input name="depar" maxlength=60 size=22></td> <td><input name="mat_face" maxlength=60 size=22></td> </tr> </table> <table width="100%" border="0" align="center"><tr colspan=2><center><input type="submit" value="Отправить"></center></tr></table> </form>

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

P.S. хорошо знаю только CSS да HTML, PHP начинаю изучать, не говоря уж про jQuery, AJAX, JS...
P.S.S. если что то не понятно уточняйте, как то сложно объяснить то, что видишь в своей голове (

Отправлено: 20:59, 09-01-2012

 

Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


это походу отсюда http://www.tigir.com/javascript_select.htm (см. исходный код, там все видно)

http://php.net/manual/ru/language.va...s.external.php (основы)

http://docs.php.net/manual/ru/functi...etch-array.php (while вместо do-while, см. примеры внизу)

http://docs.php.net/manual/ru/functi...ape-string.php (экранируем перед вставкой).

Отправлено: 21:41, 09-01-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Sham:
это походу отсюда http://www.tigir.com/javascript_select.htm (см. исходный код, там все видно)
Да это, но:
во-первых значения вносятся в файл, а не из таблицы.
во-вторых не описанно как их занести в другую таблицу
в-третьих, исходя из первых, я не понимаю как вывести третий уровень


А почему лучше использовать while???, я понимаю что не использую первую часть - do, честно мне пока сложно все это разобрать, дык еще и в перемешку с изучением С++

Я кстати несколько изменил первое сообщение.

И еще вопрос, если, допустим, я буду в таблице хтмл писать в каждой ячейке form, то может быть ли обработаны все запросы сразу (ведь если я правильно понял, все это не сможет выстроиться в один запрос)?

Отправлено: 21:56, 09-01-2012 | #3


Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


Цитата blackmane:
А почему лучше использовать while???, »
лишняя строка
Цитата blackmane:
//Poluchenie*massiva
$array*=*mysql_fetch_array($result); »
Цитата blackmane:
в каждой ячейке form »
нужно сформировать get или post запрос, а как это делать - решать вам - формой, ссылкой; отправлять ajax или обычным запросом. Вариантов масса.

Отправлено: 09:39, 10-01-2012 | #4


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Sham:
Цитата blackmane: А почему лучше использовать while???, » »
К сожалению do необходимо, т.к. без него не идет цикл

Отправлено: 10:39, 10-01-2012 | #5


Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


do-while делает минимум 1 цикл, даже если выборки нет, в результате чего внутри цикла будут неопределенные переменные.

Отправлено: 11:02, 10-01-2012 | #6


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вроде как что начинает получатся (правда пока не на динамическом селекте ( ), но выдает ошибку:
Цитата:
Warning: Invalid argument supplied for foreach() in Z:\home\itr.itr\www\print\add_print.php on line 35
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 INSERT INTO print (mat_face) values ('Столбенко Г.Н.') )
читать дальше »

PHP код: Выделить весь код

$mat_face $_POST['mat_face'];

 if(!empty(
$mat_face))
 {
 
// Начинаем формировать переменную, содержащую этот список
 // в формате "(3,5,6,7)"
 
$query "(" ;
 foreach(
$mat_face as $val$query.= "$val,";
 
// Удаляем последнюю запятую, заменяя ее закрывающей скобкой)
 
$query substr($query0strlen($query) - ). ")" ;
 
// Завершаем формирование SQL-запроса на удаление
 
$query "INSERT INTO print (mat_face)  values ('$mat_face') ".$query;
 
// Выполняем запрос
 
if(!mysql_query($query))
 {
 echo 
mysql_error()."<br>";
 echo 
$query."<br>";
 }
 }
        
header("Location: insert_print.php"); 

HTML код: Выделить весь код
<form name="myForm" action="add_print.php" method="post" onSubmit="return splash();"> <input type="hidden" name="action" value="add"> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr> <td>Модель</td> <td>Серийный номер</td> <td>Инвентарный номер</td> <td>Картридж</td> <td>Этаж</td> <td>Кабинет</td> <td>Мат. лицо</td> </tr> <tr> <td><input name="model" maxlength=30 size=22> </td> <td><input name="sn" maxlength=30 size=22></td> <td><input name="inv_num" maxlength=60 size=22></td> <td><input name="cartrige" maxlength=60 size=22></td> <td><input name="et" maxlength=60 size=22></td> <td><input name="depar" maxlength=60 size=22></td> <td><!--<input name="mat_face" maxlength=60 size=22>--> <?php include "../data/dbconfig.php"; //if($conect == true) {echo 'Conect DB';} //if($select == true) {echo 'Select TABLE';} //selet all data from DB test $result = mysql_query("select * FROM mat_face"); $array = mysql_fetch_array($result); echo "<select size='1' name='mat_face' ><option value='all'>*Выбрать проблему...*</option>"; do { printf(" <option class='cat-title' name='mat_face[]' value='%s'>%s</option> " ,$array['name'],$array['name']); } while($array = mysql_fetch_array($result)); echo "</select>" ?> </td> </tr> </table> <table width="100%" border="0" align="center"><tr colspan=2><center><input type="submit" value="Отправить"></center></tr></table> </form>



Попытался сделать на основе удаления выбранных строк, но как то не сильно (

Цитата Sham:
do-while делает минимум 1 цикл, даже если выборки нет, в результате чего внутри цикла будут неопределенные переменные. »
Я убрал do и после обновления страницы в списке осталось только одно значение, вместо 5...

Отправлено: 11:12, 10-01-2012 | #7


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Таки получилось (на не динамическом):
PHP код: Выделить весь код

<?php

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
///////////Скрипт добавления в базу инвентаризации (print)/////////////
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
include "../data/dbconfig.php";
//if($conect == true)  {echo 'Conect DB';}
//if($select == true)  {echo 'Select TABLE';}



// получаем переменные из формы
$model   $_REQUEST['model'];
$sn $_REQUEST['sn'];
$inv_num  $_REQUEST['inv_num']; 
$cartrige  $_REQUEST['cartrige'];
$et  $_REQUEST['et'];
$depar  $_REQUEST['depar'];
$value  $_REQUEST['mat_face'];
$action=$_REQUEST['action'];
if (
$action=="add")
    {
        
// добавление данных в БД 
        
$sql="INSERT INTO print(model, sn, inv_num, cartrige, et, depar, mat_face) VALUES ('$model', '$sn', '$inv_num', '$cartrige', '$et', '$depar', '$_POST[mat_face]')";
        
$r=mysql_query ($sql);
    };

        
header("Location: insert_print.php");
?>


Отправлено: 12:18, 10-01-2012 | #8


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как сделать чтобы в поле мат ответственное лицо вводилось значение id_face (1.2.3), а форме выводилось значение name???
Сейчас записывается в конечную таблицу то, что я напишу в value (сейчас стоит поле name), хотелось бы чтобы записывался id_face, а при запросе отобразить - name.

PHP код: Выделить весь код

<?php

include "../data/dbconfig.php";
//if($conect == true)  {echo 'Conect DB';}
//if($select == true)  {echo 'Select TABLE';}

//selet all data from DB test
$result mysql_query("select * FROM mat_face");
$array mysql_fetch_array($result);
echo 
"<select size='1' name='mat_face' ><option value='all'>Выбрать...*</option>";
do {
    
printf("

  <option class='cat-title' name='mat_face[]' value='%s'>%s</option>

"
    
,$array['name'],$array['name']);
    
}
while(
$array mysql_fetch_array($result));

echo 
"</select>"
?>


Отправлено: 14:27, 10-01-2012 | #9


Аватара для blackmane

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Sham, может подскажете?
Я понял что нужно сделать, чтобы из динамических селектов передавать данные в таблицу, НО передача не возможна, так как в option второго уровня нет атрибута name, там в принципе во втором уровне нет тега option, где я должен указать "model[]".
Как мне добавить этот атрибут?

Отправлено: 20:37, 10-01-2012 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] [PHP, MySQL, JS]Использование селекта в регистрации

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] установил apache+php+MySQL но MySQL не работает ejik_off Вебмастеру 13 10-05-2011 21:54
[решено] Использование stored procedure в MySQL Strange_V Вебмастеру 2 04-06-2009 15:00
[решено] Apache 2.2.8 + Php 5.2.6 + MySQL 5.0.51b (win) - не работает php v0f41k Вебмастеру 4 11-05-2008 22:08
PHP+MySQL GhostBuster Программирование и базы данных 7 21-08-2003 21:07
php и mysql ZDemon Программное обеспечение Linux и FreeBSD 7 08-02-2003 03:33




 
Переход