compare_db.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php // $Id: compare_db.php 9246 2006-09-25 13:24:53Z bmol $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2004 Dokeos S.A.
  6. Copyright (c) 2003 Ghent University (UGent)
  7. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  8. For a full list of contributors, see "credits.txt".
  9. The full license can be read in "license.txt".
  10. This program is free software; you can redistribute it and/or
  11. modify it under the terms of the GNU General Public License
  12. as published by the Free Software Foundation; either version 2
  13. of the License, or (at your option) any later version.
  14. See the GNU General Public License for more details.
  15. Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
  16. Mail: info@dokeos.com
  17. ==============================================================================
  18. */
  19. /**
  20. ==============================================================================
  21. * This script allows you to know which tables have been modified
  22. * between two versions of Dokeos databases.
  23. *
  24. * @package dokeos.install
  25. ==============================================================================
  26. */
  27. /**** Database configuration ****/
  28. $mysql_server='localhost';
  29. $mysql_user='root';
  30. $mysql_pass='';
  31. $bases1=array('dokeos16_main','dokeos16_stats','dokeos16_scorm','dokeos16_COURSE');
  32. $bases2=array('dokeos154_main','dokeos154_stats','dokeos154_scorm','dokeos154_COURSE');
  33. /********************************/
  34. mysql_connect($mysql_server,$mysql_user,$mysql_pass) or die(mysql_error());
  35. foreach($bases1 as $num_base=>$base)
  36. {
  37. $modif_tables=array();
  38. $tables_db1=array();
  39. $tables_db2=array();
  40. $dump=array();
  41. $query1="SHOW TABLES FROM `$bases1[$num_base]`";
  42. $result1=mysql_query($query1);
  43. if($result1)
  44. {
  45. $i=0;
  46. while($row1=mysql_fetch_row($result1))
  47. {
  48. $dump[$i]['table_name']=$row1[0];
  49. $dump[$i]['fields']=array();
  50. $query2="SHOW FIELDS FROM `$bases1[$num_base]`.`$row1[0]`";
  51. $result2=mysql_query($query2) or die(mysql_error());
  52. $j=0;
  53. while($row2=mysql_fetch_row($result2))
  54. {
  55. $dump[$i]['fields'][$j][0]=$row2[0];
  56. $dump[$i]['fields'][$j][1]=$row2[1];
  57. $dump[$i]['fields'][$j][2]=$row2[2];
  58. $dump[$i]['fields'][$j][3]=$row2[3];
  59. $dump[$i]['fields'][$j][4]=$row2[4];
  60. $dump[$i]['fields'][$j][5]=$row2[5];
  61. $j++;
  62. }
  63. $i++;
  64. }
  65. foreach($dump as $table)
  66. {
  67. $query="SHOW FIELDS FROM `$bases2[$num_base]`.`".$table['table_name']."`";
  68. $result=mysql_query($query);
  69. if(!$result)
  70. {
  71. $modif_tables[]=$table['table_name'];
  72. }
  73. else
  74. {
  75. $i=0;
  76. if(sizeof($table['fields']) != mysql_num_rows($result))
  77. {
  78. $modif_tables[]=$table['table_name'];
  79. }
  80. else
  81. {
  82. while($row=mysql_fetch_row($result))
  83. {
  84. $field_infos=$table['fields'][$i];
  85. foreach($row as $key=>$enreg)
  86. {
  87. if($row[$key] != $field_infos[$key])
  88. {
  89. $modif_tables[]=$table['table_name'];
  90. break;
  91. }
  92. }
  93. $i++;
  94. }
  95. }
  96. }
  97. $tables_db1[]=$table['table_name'];
  98. }
  99. $query="SHOW TABLES FROM `$bases2[$num_base]`";
  100. $result=mysql_query($query) or die(mysql_error());
  101. while($row=mysql_fetch_row($result))
  102. {
  103. $tables_db2[]=$row[0];
  104. }
  105. $diff=array_diff($tables_db2,$tables_db1);
  106. foreach($diff as $enreg)
  107. {
  108. $modif_tables[]=$enreg;
  109. }
  110. $modif_tables=array_unique($modif_tables);
  111. echo '<pre>'.print_r($modif_tables,true).'</pre>';
  112. }
  113. }
  114. mysql_close();
  115. ?>