Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как получить имена столбцов таблице?
Форумы портала PHP.SU » » Вопросы новичков » Как получить имена столбцов таблице?

Страниц (2): [1] 2 »
 

1. DeMonyan - 12 Ноября, 2011 - 00:37:31 - перейти к сообщению
Собственно хочется скрипт написать универсальный, ему передаются данные из формы, и имя таблицы, а он уже сам разбирается какие данные в какой столбец затолкать. Ну и собственно стоит ли так париться, вообще реализуемо?
2. caballero - 12 Ноября, 2011 - 01:13:49 - перейти к сообщению
для получения списка столбцой есть специальная БД в nydql - information_schema

но даже если знать какие столцы в БД как определить куда какой толкать?
а если поля формы и бд совпаают то зачем их узнавать
4. DeMonyan - 12 Ноября, 2011 - 13:23:59 - перейти к сообщению
caballero пишет:
для получения списка столбцой есть специальная БД в nydql - information_schema

но даже если знать какие столцы в БД как определить куда какой толкать?
а если поля формы и бд совпаают то зачем их узнавать


Определить какой куда толкать - это уже задача форму правильно расположить. А если поля формы совпадают с полями бд, то обращаться то к ним всё раво как-то надо... Если элементы формы я могу например назвать data_1, data_2 ... data_n, и потом их спокойно перебирать по очереди, ибо количество столбцов то узнать можно в таблице. Но в запрос на добавление данных нужно же вносить названия столбцов... Поэтому мне кажется проще использовать название столбцов для имён инпутов и перебирать их по именам столбцов а не по номерам.
5. DeMonyan - 12 Ноября, 2011 - 15:44:39 - перейти к сообщению
Собственно решение своего вопроса я нашёл, может кому пригодится:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4. $server="localhost";
  5. $user="user";
  6. $pass="password";
  7. $db="database";
  8.  
  9. $connection = mysql_connect($server,$user,$pass) or die("Access denide");
  10.  
  11. if ($connection) $msg="Connection access";
  12. echo $msg;
  13.  
  14. $db="virta";
  15.  
  16. $select_db=mysql_select_db($db,$connection) or die("Base not choose");
  17.  
  18. $table="table";
  19.  
  20. if ($select_db) {
  21.     $query="Select * from ".$table;
  22.     $result=@mysql_query($query,$connection) or die("ЖОПА!");
  23.     if ($result) echo ' Ok';
  24. };
  25.  
  26. $fields = mysql_list_fields("$db", $table);
  27. $columns = mysql_num_fields($fields);
  28.  
  29. echo "<br /><hr /><br />Таблица: ".$table."
  30.  
  31. <FORM ACTION=\"add_user.php\" METHOD=\"POST\">
  32. <table>
  33. <th height=41>Поля базы</th>
  34. <th height=41><b>Данные</th></tr>";
  35.  
  36. for ($i = 0; $i < $columns; $i++) {
  37. $col_name = mysql_field_name($fields, $i) . "\n";
  38.  
  39. echo "<tr><td>".$col_name."</td><td><input type=text name=".$col_name." size=20></td></tr>";
  40. }
  41.  
  42. echo "</table>";
  43. ?>


Теперь возник вопрос в продолжение: как считать тип данных столбца?
6. OrmaJever - 12 Ноября, 2011 - 16:24:20 - перейти к сообщению
DeMonyan а прочитать то что я выше написал?

вернёт всё что нужно
7. DeMonyan - 12 Ноября, 2011 - 18:05:25 - перейти к сообщению
Я уже тоже самое нашёл на нормальном языке. ))) Тобишь на русском. Хоть знаний и хватит для прочтения и на инглише, но любой язык исключая родной считаю не нормальным и использую только в случае невозможности найти информацию на "нормальном" языке. За ссылку спасибо большое, стало понятно что искать на русском. )))

А подскажите пожалуйста как теперь для таблицы узнать: foreign key?
8. caballero - 12 Ноября, 2011 - 18:22:30 - перейти к сообщению
все типы данных столбцов в таблице information_schema.columns - какие проблеммы
9. DeMonyan - 12 Ноября, 2011 - 20:07:33 - перейти к сообщению
caballero пишет:
все типы данных столбцов в таблице information_schema.columns - какие проблеммы


Не понял...
10. snikers987 - 12 Ноября, 2011 - 20:11:27 - перейти к сообщению
DeMonyan пишет:
caballero пишет:
все типы данных столбцов в таблице information_schema.columns - какие проблеммы


Не понял...


Есть база information_schema в ней есть таблица columns в ней хранятся все типы данных столбцов, что не понятно?
11. Данил_123 - 12 Ноября, 2011 - 21:04:37 - перейти к сообщению
DeMonyan очень внимательно вчитывался в первый пост.. И понял(но это сильно опровергает посты остальных..).. Т.ч не уверен.. У вас есть форма с нее данные уходят в обработчик, и вы хотите понять как они пихаются в столбцы? В запросе на запись указывать в той же последованости(передал 'имя' и "пароль") и в той же порядке прописываете в запросе на запись.. Ну или вторым способом, но писать лень..

ЗЫ:походу не то написал.. Как понял..
12. DeMonyan - 12 Ноября, 2011 - 22:10:41 - перейти к сообщению
Данил_123 пишет:
DeMonyan очень внимательно вчитывался в первый пост.. И понял(но это сильно опровергает посты остальных..).. Т.ч не уверен.. У вас есть форма с нее данные уходят в обработчик, и вы хотите понять как они пихаются в столбцы? В запросе на запись указывать в той же последованости(передал 'имя' и "пароль") и в той же порядке прописываете в запросе на запись.. Ну или вторым способом, но писать лень..

ЗЫ:походу не то написал.. Как понял..


Мне нужно сформировать форму на основе типа данных в столбцах, передать её обработчику который по имени таблицы создаст запрос на добавление введённых данных.

На данный момент я не могу обработать колонку корректно, если в неё нужно ввести данные выбрав одно из значений колонки другой таблицы, foreign key нужен...
13. DeMonyan - 13 Ноября, 2011 - 00:42:44 - перейти к сообщению
Вот такой запрос в MySQL в принципе выдаёт нужные данные: SHOW CREATE TABLE 'имя таблицы', но не могу понять как его использовать в PHP?! В идеале хочется создавать форму для конкретной таблицы на основе метаданных о ней. Если тип int или varchar, то поле ввода, если set то select , если int и foreign key то тоже select. Как сделать селект на основе данных из запроса в принципе понимаю, не сложно. На основе set тут сложнее, но тоже думаю решаемо, мне сложно потому что операторов работы со строкой не знаю в PHP.
14. DeepVarvar - 13 Ноября, 2011 - 00:46:28 - перейти к сообщению
DeMonyan пишет:
SHOW CREATE TABLE
нахрена так грозно?
15. DeMonyan - 13 Ноября, 2011 - 00:50:45 - перейти к сообщению
DeepVarvar пишет:
DeMonyan пишет:
SHOW CREATE TABLE
нахрена так грозно?


А можете дать пример кода как результат этого запроса обработать? Или статью где это прочесть? Яндексом нарыл только SHOW CREATE TABLE...
(Добавление)
Ваш запрос не даст информацию о том откуда считать возможные данные для ввода в столбец.

А в SHOW CREATE TABLE есть вот такие данные

KEY `region` (`Region`),
CONSTRAINT `cities_ibfk_1` FOREIGN KEY (`region`) REFERENCES `regions` (`idReg
ion`)

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

 

Powered by ExBB FM 1.0 RC1