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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод списка существующих БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: И списка таблиц в определённой БД
RouTeR
Отправлено: 18 Апреля, 2007 - 17:52:14
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




Вот код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo "<form action=? method=GET>";
  3. echo db_list();
  4. echo "<input type=submit name=q value=Go></form>";
  5.  
  6. if (isset($q)) {
  7. echo $_GET['db'];
  8. }
  9.  
  10. // список БД
  11. function db_list()
  12. {
  13. $link = mysql_connect("localhost", "root", "") or die("Ошибка!");
  14. $db_list = mysql_list_dbs($link);
  15. echo "<select name="db">";
  16.   $row = 0;
  17.   while ($row < mysql_num_rows($db_list))
  18.   {
  19.     echo "<option value="$row[0]">".mysql_tablename($db_list, $row)."</option>n";
  20.     $row++;
  21.   }
  22. echo "</select>";
  23. }
  24. ?>


******************************************************************************************
Короче такая проблема, грубо говоря мне необходимо вывести в браузер после нажатия кнопки значение выпадающего списка, вот только проблема ничего не получается...
Объясните, где моя ошибка, а лучше готовыи кодом помогите???
 
 Top
-SCHATTEN-
Отправлено: 18 Апреля, 2007 - 19:05:46
Post Id



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


Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006  
Откуда: Оттуда !


Помог: 0 раз(а)




Ты просто не экранировал ковычки, и поставь error_reporting = вкл
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbcnx = mysql_connect("localhost", "root", "") or die("error");
  4. $db_list = mysql_list_dbs($dbcnx);
  5.  echo "<select name=\"db\">";
  6.    $row = 0;
  7.    while ($row < mysql_num_rows($db_list))
  8.    {
  9.      echo "<option value=\"$row[0]\">".mysql_tablename($db_list, $row)."</option>n";
  10.      $row++;
  11.    }
  12.  echo "</select>";
  13.  mysql_free_result($db_list);
  14. ?>
 
 Top
evgenijj
Отправлено: 18 Апреля, 2007 - 19:35:19
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Здесь есть некоторая неоднозначность. На сервере может быть несколько БД, а каждая БД может содержать несколько таблиц. Т.е для выбора конкретной таблицы, нам надо сначала выбрать БД, а потом таблицу. Другими словами, здесь будет два связанных списка.
Если же речь идет только о выборе БД, тогда непонятно, при чем здесь функция mysql_tablename() ?

Есть смысл сформулировать задачу более четко, иначе мы здесь будем долго гадать - а что же автор хотел сказать?
 
 Top
-SCHATTEN-
Отправлено: 18 Апреля, 2007 - 20:06:07
Post Id



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


Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006  
Откуда: Оттуда !


Помог: 0 раз(а)




Ну из того что было склепали рабочий код, посмотрим, что скажет автор дальше....
 
 Top
RouTeR
Отправлено: 18 Апреля, 2007 - 21:35:09
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




Функция mysql_tablename() - была мной использована, чтобы получить список БД, иначе у меня не получилось, но вот как раз эта функция меня и смущает...

А по поводу двух связанных списков можно поподробнее???????????\n\n(Добавление)
Постараюсь объяснить подробнее, что мне надо...
**********************************************************************
1. Получить список всех БД, находящихся на сервере mysql
2. После выбора любой БД из этого сформировнного списка, мне нужно вывести в браузер список всех таблиц выбранной базы данных
***********************************************************************
 
 Top
valenok Модератор
Отправлено: 18 Апреля, 2007 - 22:03:54
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $link = mysql_connect('localhost', 'root', '');
  4. $db_list = mysql_list_dbs($link);
  5.  
  6. if(!isset($_GET['db'])) {
  7.  
  8.   echo "<form method='GET'>";
  9.   echo '<select name="db">\\r\\n';
  10.   while ($row = mysql_fetch_object($db_list))
  11.       echo "<option value='". $row->Database . "'>". $row->Database . "</option>\\n";
  12.  
  13.   echo '</select >\\r\\n';
  14.   echo "<input type='submit' name='q' value='Go'></form>";
  15. }
  16. else
  17. {
  18.     $result = mysql_list_tables(mysql_escape_string($_GET['db']),$link);
  19.    
  20.     if (!$result) {
  21.         print "DB Error, could not list tables\\n";
  22.         print 'MySQL Error: ' . mysql_error();
  23.         exit;
  24.     }
  25.    
  26.     while ($row = mysql_fetch_row($result))
  27.         print "Table: $row[0]\\n";
  28.    
  29. }
  30. ?>
  31.  


-----
Truly yours, Sasha.
 
My status
 Top
RouTeR
Отправлено: 19 Апреля, 2007 - 16:52:19
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




Как всегда все оказалось легко и просто Закатив глазки Спасибо за помощь...
 
 Top
evgenijj
Отправлено: 20 Апреля, 2007 - 10:11:52
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




RouTeR пишет:
А по поводу двух связанных списков можно поподробнее?

Можно
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //Соединение с сервером базы данных
  4. $link = mysql_connect('localhost', 'root', '');
  5.  
  6. // Получаем cписок БД на сервере
  7. $db_list = mysql_list_dbs($link);
  8. while ( $db = mysql_fetch_row($db_list) )
  9. {  
  10.   $db_names[] = $db[0];
  11. }
  12. // Формируем JavaScript
  13. for ( $i = 0; $i < count($db_names); $i++ )
  14. {
  15.   $switch[$i] = "case ".$i.":\\n";
  16.   for ( $j = 0; $j < count($db_names); $j++ )
  17.   {
  18.     if ( $i == $j )
  19.     {
  20.       $switch[$i] = $switch[$i]."  document.getElementById('db_".$db_names[$j]."_tables').disabled = false;\\n";
  21.       $switch[$i] = $switch[$i]."  document.getElementById('db_".$db_names[$j]."_tables').style.display = 'block';\\n";
  22.     }
  23.     else
  24.     {
  25.       $switch[$i] = $switch[$i]."  document.getElementById('db_".$db_names[$j]."_tables').disabled = true;\\n";
  26.       $switch[$i] = $switch[$i]."  document.getElementById('db_".$db_names[$j]."_tables').style.display = 'none';\\n";
  27.     }
  28.   }
  29.   $switch[$i] = $switch[$i]."  break;\\n\\n";
  30. }
  31. ?>
  32. < script type="text/javascript">
  33. function dsblEnblSelect(s)
  34. {
  35.   switch(s.selectedIndex)
  36.   {
  37. <?PHP
  38. foreach( $switch as $value ) echo $value;
  39. ?>
  40.   }
  41. }
  42. </script>
  43.  
  44. <?PHP
  45. // Получаем cписок БД на сервере
  46. $db_list = mysql_list_dbs($link);
  47. $dbs_select = "<select name='dbname' onchange='dsblEnblSelect(this)'>\\n";
  48. $i = 0;
  49. while ( $db = mysql_fetch_row($db_list) )
  50. {  
  51.     $dbs_select = $dbs_select."<option value='".$db[0]."'>".$db[0]."</option>\\n";
  52.   $tbls = mysql_list_tables($db[0]);
  53.   if( $i == 0 )
  54.     $tables[$db[0]] = "<select name='db_".$db[0]."_tables' id='db_".$db[0]."_tables' style='position:relative; display:block'>\\n";
  55.   else
  56.     $tables[$db[0]] = "<select name='db_".$db[0]."_tables' id='db_".$db[0]."_tables' style='position:relative; display:none' disabled>\\n";
  57.   while( $tbl = mysql_fetch_row($tbls) )
  58.   {
  59.     $tables[$db[0]] = $tables[$db[0]]."<option value='".$tbl[0]."'>".$tbl[0]."</option>\\n";
  60.   }
  61.   $tables[$db[0]] = $tables[$db[0]]."</select>\\n";
  62.   $i++;
  63. }  
  64. $dbs_select = $dbs_select."</select>\\n";
  65.  
  66. echo "<form name='db_and_tables' action='".$_SERVER["PHP_SELF"]."' method='GET'>\\n";
  67. // Выводим список БД
  68. echo "Доступные базы данных<br/>\\n ".$dbs_select."<br/><br/>\\n";
  69. // Выводим список таблиц
  70. echo "Таблицы<br/>\\n";
  71. foreach( $tables as $value ) echo $value."\\n";
  72. echo "<br/><input type='submit' name='mysubmit' value='Выбрать' />\\n";
  73. echo "</form>\\n";
  74.  
  75. if ( isset($_GET["mysubmit"]) ) echo "< p>Выбрана БД ".$_GET["dbname"]." и таблица ".$_GET["db_".$_GET["dbname"]."_tables"]."</p>\\n";
  76.  
  77. ?>
  78.  

Вот html, готорый сгенерирует этот скрипт
PHP:
скопировать код в буфер обмена
  1.  
  2. < script type="text/javascript">
  3. function dsblEnblSelect(s)
  4. {
  5.   switch(s.selectedIndex)
  6.   {
  7.     case 0:
  8.       document.getElementById('db_banners_tables').disabled = false;
  9.       document.getElementById('db_banners_tables').style.display = 'block';
  10.       document.getElementById('db_dbtree_tables').disabled = true;
  11.       document.getElementById('db_dbtree_tables').style.display = 'none';
  12.       document.getElementById('db_mycms_tables').disabled = true;
  13.       document.getElementById('db_mycms_tables').style.display = 'none';
  14.       break;
  15.  
  16.     case 1:
  17.       document.getElementById('db_banners_tables').disabled = true;
  18.       document.getElementById('db_banners_tables').style.display = 'none';
  19.       document.getElementById('db_dbtree_tables').disabled = false;
  20.       document.getElementById('db_dbtree_tables').style.display = 'block';
  21.       document.getElementById('db_mycms_tables').disabled = true;
  22.       document.getElementById('db_mycms_tables').style.display = 'none';
  23.       break;
  24.  
  25.     case 2:
  26.       document.getElementById('db_banners_tables').disabled = true;
  27.       document.getElementById('db_banners_tables').style.display = 'none';
  28.       document.getElementById('db_dbtree_tables').disabled = true;
  29.       document.getElementById('db_dbtree_tables').style.display = 'none';
  30.       document.getElementById('db_mycms_tables').disabled = false;
  31.       document.getElementById('db_mycms_tables').style.display = 'block';
  32.       break;
  33.   }
  34. }
  35. </script>
  36.  
  37. <form name='db_and_tables' action='/index.php' method='GET'>
  38. Доступные базы данных<br/>
  39. <select name='dbname' onchange='dsblEnblSelect(this)'>
  40.   <option value='banners'>banners</option>
  41.   <option value='dbtree'>dbtree</option>
  42.   <option value='mycms'>mycms</option>
  43. </select>
  44. <br/><br/>
  45.  
  46. Таблицы<br/>
  47.  
  48. <select name='db_banners_tables' id='db_banners_tables' style='position:relative; display:block'>
  49.   <option value='banners'>banners</option>
  50.   <option value='referat'>referat</option>
  51. </select>
  52.  
  53. <select name='db_dbtree_tables' id='db_dbtree_tables' style='position:relative; display:none' disabled>
  54.   <option value='categories'>categories</option>
  55. </select>
  56.  
  57. <select name='db_mycms_tables' id='db_mycms_tables' style='position:relative; display:none' disabled>
  58.   <option value='articles'>articles</option>
  59.   <option value='news'>news</option>
  60.   <option value='pages'>pages</option>
  61. </select>
  62.  
  63. <br/>
  64. <input type='submit' name='mysubmit' value='Выбрать' />
  65. </form>
  66.  
 
 Top
RouTeR
Отправлено: 20 Апреля, 2007 - 15:02:08
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




evgenijj постараюсь разобраться!!! Улыбка
###############################

Вот еще вопрос относительно баз данных MySQL, каким образом происходит backup и restore баз данных, кто-нибудь пробовал писать на php такой модуль, если есть поделитесь, пожалуйста, ну и не плохо было узнать сам принцип работы восстановления и копирования БД???

###############################
 
 Top
valenok Модератор
Отправлено: 20 Апреля, 2007 - 19:12:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Перебирается список БД
Для каждой Бд перебираются все таблицы
Для каждой таблицы создаётся список полей и содержание
И всё это записывается в файл. (Желательно уже отформатированный в SQL виде)

А реставрация происходит посредством выполнения sql запроса который был записан в файл нашим бэкапом


-----
Truly yours, Sasha.
 
My status
 Top
evgenijj
Отправлено: 20 Апреля, 2007 - 19:25:24
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Цитата:
каким образом происходит backup и restore баз данных

Если бы возникла такая нужда - обязательно бы посмотрел исходные коды phpmyadmin. Там все это - и backup и restore уже реализовано.
 
 Top
valenok Модератор
Отправлено: 20 Апреля, 2007 - 19:28:15
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. mkdir($CopyName, 0700);
  3. $sql="SHOW TABLES";
  4. $result = mysql_query($sql) or die(mysql_errno().mysql_error());
  5. while($data=mysql_fetch_row($result)) {
  6.    $fp = fopen($CopyName.'/'.$data[0].'.sql', 'a');
  7.    if ( $fp ) {
  8.       $query = "TRUNCATE TABLE `".$data[0]."`;rn";
  9.       fwrite ($fp, $query);
  10.       $sql_data = 'SELECT * FROM `'.$data[0].'`';
  11.       $result_data = mysql_query($sql_data) or die(mysql_errno().mysql_error());
  12.       while( $data2=mysql_fetch_row($result_data) ) {
  13.          $query = '';
  14.          foreach ($data2 as $val) {
  15.             if ( is_null($val) ) $val = 'NULL';
  16.             else $val = "'".mysql_escape_string($val)."'";
  17.             if ( $query == '' ) $query = $val;
  18.             else $query .= ','.$val;
  19.          }
  20.          $query = "INSERT INTO `".$data[0]."` VALUES (".$query.");rn";
  21.          fwrite ($fp, $query);
  22.       }
  23.       fclose ($fp);
  24.    }
  25. }
  26.  
\n\n(Добавление)
Ещё вариант создание дампа БД это средства MySQL:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Для одной таблицы
  4. // http://www.mysql.ru/docs/man/BACKUP_TABLE.html
  5. $q = "BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory'";
  6.  
  7. // Или всей БД
  8. // http://www.mysql.ru/docs/man/mysqldump.html
  9. $q = "mysqldump --password=your_pass --user=user_name --all-databases";
  10.  
  11. $q = "mysqldump --all-databases > dump.sql";
  12.  


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB