PageRenderTime 39ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/Prohits/analyst/import_NS_data_sample.php

http://prohits.googlecode.com/
PHP | 470 lines | 401 code | 23 blank | 46 comment | 77 complexity | b7ece2eafb19776baf96637eaa87b137 MD5 | raw file
  1. <?php
  2. /***********************************************************************
  3. Copyright 2010 Gingras and Tyers labs,
  4. Samuel Lunenfeld Research Institute, Mount Sinai Hospital.
  5. Licensed under the Apache License, Version 2.0 (the "License");
  6. you may not use this file except in compliance with the License.
  7. You may obtain a copy of the License at
  8. http://www.apache.org/licenses/LICENSE-2.0
  9. Unless required by applicable law or agreed to in writing, software
  10. distributed under the License is distributed on an "AS IS" BASIS,
  11. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. See the License for the specific language governing permissions and
  13. limitations under the License.
  14. *************************************************************************/
  15. set_time_limit(3600*2);
  16. $frm_username = '';
  17. $PHP_SELF = '';
  18. $frm_password = '';
  19. $frm_table = '';
  20. $theaction = '';
  21. $frm_host = '';
  22. $mysql_link = '';
  23. $frm_db = '';
  24. $frm_delimiter = '';
  25. require_once("../msManager/is_dir_file.inc.php");
  26. if( $_SERVER['REQUEST_METHOD'] == "POST"){
  27. $request_arr = $_POST;
  28. }else{
  29. $request_arr = $_GET;
  30. }
  31. foreach ($request_arr as $key => $value) {
  32. $$key=$value;
  33. }
  34. $username = $frm_username;
  35. $dbpassword = $frm_password;
  36. $host = $frm_host;
  37. $table_name = $frm_table;
  38. if($username and $host and $dbpassword) {
  39. $mysql_link=mysql_pconnect($host, $username, $dbpassword);
  40. }
  41. if($frm_table and $frm_db and $mysql_link){
  42. mysql_select_db($frm_db, $mysql_link);
  43. }
  44. if($frm_table and $frm_db){
  45. //get table structure info
  46. $table_name = $frm_table;
  47. $SQL = "select * from $table_name limit 1 ";
  48. $result = mysql_query ($SQL);
  49. $fields = mysql_num_fields ($result);
  50. $rows = mysql_num_rows ($result);
  51. $i = 0;
  52. $table = mysql_field_table ($result, $i);
  53. //echo "<b>".$table."</b> table has ".$fields." fields and ".$rows." records <BR>";
  54. //echo "The table has the following fields <BR>";
  55. while ($i < $fields) {
  56. $type[$i] = mysql_field_type ($result, $i);
  57. $name[$i] = mysql_field_name ($result, $i);
  58. $len[$i] = mysql_field_len ($result, $i);
  59. $flags[$i] = mysql_field_flags ($result, $i);
  60. //echo $type[$i]." ".$name[$i]." ".$len[$i]." ".$flags[$i]."<BR>";
  61. $i++;
  62. }
  63. }
  64. //preview
  65. if($theaction == 'preview' and $frm_import_file_name){
  66. $tmp_import_file = "./tmp/tmp_import_file_$REMOTE_ADDR.txt";
  67. $myshellcmd = "mv " . $frm_import_file . " $tmp_import_file";
  68. $uploaded_file_name = $frm_import_file_name;
  69. exec($myshellcmd);
  70. if($frm_other_delimiter){
  71. $delimiter = $frm_other_delimiter;
  72. }else{
  73. $delimiter = $frm_delimiter;
  74. }
  75. //process fields_enclose charactor
  76. if($frm_fields_enclosed_by){
  77. $frm_fields_enclosed_by = stripslashes($frm_fields_enclosed_by);
  78. $fd = fopen ($tmp_import_file, "r");
  79. $fd_tmp = fopen("./tmp/tmp_import_file_$REMOTE_ADDR.modified.txt", "w");
  80. //go through the oraginal file and remove new line char between fields enclosed chars
  81. while (!feof ($fd) ) {
  82. $buffer = fgets($fd, 4096);
  83. $buffer_tmp = trim($buffer);
  84. if($buffer_tmp){
  85. $buffer = str_replace("\n","",$buffer);
  86. //this line has fields enclosed char
  87. //if find 2 '"' in same line delete '"'
  88. if(strchr($buffer, $frm_fields_enclosed_by)){
  89. if(strrpos($buffer,'"') !=strpos($buffer,'"')){
  90. $buffer = str_replace('"','',$buffer);
  91. }
  92. }
  93. if(strchr($buffer, $frm_fields_enclosed_by)) {
  94. if(!$enclosed_start) {
  95. $enclosed_start = 1;
  96. $enclosed_sotp = 0;
  97. }else {
  98. $enclosed_start = 0;
  99. $enclosed_sotp = 1;
  100. }
  101. }
  102. if($enclosed_start) {
  103. fwrite($fd_tmp, $buffer . "AAAFRANKAAA");
  104. }else{
  105. fwrite($fd_tmp, $buffer . "\n");
  106. }
  107. }
  108. }
  109. fclose ($fd);
  110. fclose($fd_tmp);
  111. $tmp_import_file = "./tmp/tmp_import_file_$REMOTE_ADDR.modified.txt";
  112. //echo $tmp_import_file;
  113. }
  114. //*******************************************
  115. if($table_name == "UploadMDS" or $table_name == "UploadMDS2" ){
  116. require("../classes/yeastDB_class.php");
  117. require("../db/dbstart.php");
  118. $YeastDB = new YeastDB();
  119. }
  120. $fd = fopen ($tmp_import_file, "r");
  121. $out_preview = "<table border=1>";
  122. //only display 20 records in preview
  123. while (!feof ($fd) and $stop!=20) {
  124. $buffer = fgets($fd, 4096);
  125. $row = explode($delimiter, $buffer);
  126. if($buffer){
  127. $out_preview .= "<tr>";
  128. for($i=0; $i < count($row); $i++){
  129. //============ for UploadMDS only =================
  130. if($table_name == "UploadMDS" or $table_name == "UploadMDS2"){
  131. if(strstr($row[$i], "ID #:")){
  132. $new_Bait = trim(strtoupper($row[$i+1]));
  133. $new_Bait = str_replace("-E","",$new_Bait);
  134. $new_Bait = str_replace("-PRE","",$new_Bait);
  135. $YeastDB->fetchORForGene($new_Bait);
  136. if(!$YeastDB->ORFName){
  137. $err_msg .= display_update_yeastDB($new_Bait,'');
  138. }
  139. }else if(preg_match ("/gi\|[0-9]*/", $row[$i], $tmp)){
  140. $tmp_arr = explode("AAAFRANKAAA",$row[$i]);
  141. for($j=0;$j<count($tmp_arr);$j++){
  142. if(preg_match ("/gi\|[0-9]*/", $tmp_arr[$j], $tmp)){
  143. $new_GI = str_replace("gi|","",$tmp[0]);
  144. $tmp_YeastDB = new YeastDB();
  145. $tmp_YeastDB->fetch( '','',$new_GI);
  146. if(!$tmp_YeastDB->ORFName){
  147. $err_msg .= display_update_yeastDB('',$new_GI);
  148. }
  149. }
  150. }//end for
  151. }
  152. }
  153. //==================================================
  154. $out_preview .= "<td>$row[$i]&nbsp;</td>";
  155. }
  156. $out_preview .= "</tr>";
  157. //$stop++;
  158. }//end if buffer
  159. }//end while
  160. $out_preview .= "</table>";
  161. if($table_name == "UploadMDS" or $table_name == "UploadMDS2"){
  162. $out_preview .= "Please click <a href='add_new_yeastDB.php' target=_blank>Here</a> to update the local yeast database.<br>";
  163. $out_preview .= $err_msg;
  164. }
  165. $out_preview .= "<br><font color=red><b>This is the end of uploaded file</b></font>";
  166. fclose ($fd);
  167. }
  168. if($theaction == 'insert' and _is_file($tmp_import_file)){
  169. if($frm_other_delimiter){
  170. $delimiter = $frm_other_delimiter;
  171. }else{
  172. $delimiter = $frm_delimiter;
  173. }
  174. $fd = fopen ($tmp_import_file, "r");
  175. //empty the table
  176. //**********************************
  177. if($table_name == "UploadMDS" or $table_name == "UploadMDS2"){
  178. //**********************************
  179. mysql_query("delete from $table_name");
  180. while (!feof ($fd) ) {
  181. $buffer = fgets($fd, 4096);
  182. //$buffer = trim($buffer);
  183. $row = explode($delimiter, $buffer);
  184. //echo $buffer;
  185. $SQL = "insert into $table_name set";
  186. for($i=0; $i < count($name); $i++){
  187. if($i){
  188. $SQL .= ",";
  189. }
  190. $tmp_value = addslashes(trim($row[$i]));
  191. $SQL .= " $name[$i]='$tmp_value'";
  192. }
  193. if($buffer){
  194. mysql_query($SQL);
  195. //echo $SQL."<br>";
  196. }
  197. }//end while
  198. //******************
  199. }//end if UploadMDS
  200. //******************
  201. fclose ($fd);
  202. $successful_msg = "Data has been imported successully";
  203. }
  204. ?>
  205. <html>
  206. <head><title>Import data</title>
  207. <script language='javascript'>
  208. function db_selected(){
  209. document.forms[0].submit();
  210. }
  211. function table_selected(){
  212. var sel = document.forms[0].frm_table;
  213. if(sel.options[sel.selectedIndex].value == ''){
  214. alert("Pleast select a table!");
  215. } else {
  216. document.forms[0].submit();
  217. }
  218. }
  219. function preview(){
  220. document.forms[0].theaction.value = 'preview';
  221. if(document.forms[0].frm_import_file.value == ''){
  222. alert("pleas upload a file!");
  223. return false;
  224. }
  225. if(!checkDelimiter() && document.forms[0].frm_other_delimiter.value == ''){
  226. alert("Please select a delimiter!");
  227. return false;
  228. }
  229. document.forms[0].submit();
  230. }
  231. function checkDelimiter() {
  232. for (var i=0; i < document.forms[0].frm_delimiter.length; i++) {
  233. if (document.forms[0].frm_delimiter[i].checked){
  234. return true;
  235. }
  236. }
  237. return false;
  238. }
  239. function clearRadio(){
  240. for (var i=0; i < document.forms[0].frm_delimiter.length; i++) {
  241. document.forms[0].frm_delimiter[i].checked = false;
  242. }
  243. }
  244. function saveToMysql(){
  245. document.forms[0].theaction.value = 'insert';
  246. document.forms[0].submit();
  247. }
  248. </script>
  249. </head>
  250. <body>
  251. <h1><font face="Arial" color=red>Import Data Into MYSQL database</font></h1>
  252. <pre>
  253. This is a tool which can import data from text file. Before you run
  254. this script you should create table in your mysql database. and make
  255. sure thate field type match the text file.
  256. </pre>
  257. <br><strong><font size="+1">Step 1: Select database and table</font></strong>
  258. <form method=post name=db_form action='' enctype="multipart/form-data">
  259. <input type=hidden name=frm_host value='<? echo $frm_host; ?>'>
  260. <input type=hidden name=frm_username value='<? echo $frm_username; ?>'>
  261. <input type=hidden name=frm_password value='<? echo $frm_password; ?>'>
  262. <input type=hidden name=theaction value=''>
  263. <input type=hidden name=uploaded_file value='<?=$uploaded_file_name;?>'>
  264. <input type=hidden name=tmp_import_file value='<?=$tmp_import_file;?>'>
  265. <table border=3>
  266. <? if(!$mysql_link) { ?>
  267. <tr>
  268. <td>
  269. Host Name:
  270. </td>
  271. <td>
  272. <input name=frm_host value='<?= ($frm_host)?$frm_host:"localhost"; ?>'>
  273. </td>
  274. </tr>
  275. <tr>
  276. <td>
  277. User Name:
  278. </td>
  279. <td>
  280. <input name=frm_username value=<? echo $frm_username; ?>>
  281. </td>
  282. </tr>
  283. <tr>
  284. <td>
  285. Password:
  286. </td>
  287. <td>
  288. <input type=password name=frm_password value=<? echo $frm_password; ?>>
  289. </td>
  290. </tr>
  291. <? }else{ ?>
  292. <tr>
  293. <td>
  294. Select Database:
  295. </td>
  296. <td>
  297. <select name="frm_db" onchange="javascriopt: db_selected()">
  298. <option value=''>--select database--
  299. <?
  300. if($mysql_link){
  301. $db_list = mysql_list_dbs($mysql_link);
  302. while ($row = mysql_fetch_array($db_list)) {
  303. if($frm_db == $row[0]){
  304. echo "<option value='".$row[0]."' selected>".$row[0]."\n";
  305. }else{
  306. echo "<option value='".$row[0]."' >".$row[0]."\n";
  307. }
  308. }
  309. }
  310. ?>
  311. </select>
  312. </td>
  313. </tr>
  314. <tr>
  315. <td>
  316. Select Table:
  317. </td>
  318. <td>
  319. <select name="frm_table">
  320. <option value=''>--select table--
  321. <?
  322. if($mysql_link){
  323. if($frm_db){
  324. $tables=@mysql_list_tables( $frm_db, $mysql_link);
  325. while ($bla=@mysql_fetch_array($tables)) {
  326. //echo $bla." sind die tabellennamen";
  327. if($frm_table == $bla[0]){
  328. echo "<option value='".$bla[0]."' selected>".$bla[0]."\n";
  329. }else{
  330. echo "<option value='".$bla[0]."' >".$bla[0]."\n";
  331. }
  332. }//end while
  333. }
  334. }
  335. ?>
  336. </select>
  337. </td>
  338. </tr>
  339. <? } ?>
  340. <tr>
  341. <td colspan=2 align=center>
  342. <? if($mysql_link){ ?>
  343. <input type=button value="Select Table" onClick="javascript: table_selected();">
  344. <? }else{ ?>
  345. <input type=button value="Connect to Mysql" onClick="document.forms[0].submit();">
  346. <? } ?>
  347. </td>
  348. </tr>
  349. </table>
  350. <?if($frm_table){?>
  351. <br><strong><font size="+1">Step 2: Upload text file</font></strong>
  352. <table border = 1>
  353. <tr>
  354. <td>upload data file: </td>
  355. <td><input type='file' name='frm_import_file' size='30'></td>
  356. </tr>
  357. <tr>
  358. <td>Field delimiter:</td>
  359. <td><input type=radio name=frm_delimiter value=' ' <?=($frm_delimiter==' ' or !$frm_delimiter)?'checked':''; if(!$frm_delimiter) ?>> Tab &nbsp;
  360. <input type=radio name=frm_delimiter value=';' <?=($frm_delimiter==';')?'checked':'';?>>Semicolon &nbsp;
  361. <input type=radio name=frm_delimiter value=',' <?=($frm_delimiter==',')?'checked':'';?>> Comma &nbsp;
  362. <input type=radio name=frm_delimiter value=' ' <?=($frm_delimiter==' ')?'checked':'';?>>Space &nbsp;
  363. <input type=text name=frm_other_delimiter value='<?=stripslashes($frm_other_delimiter);?>' size=1 onFocus="javascript:clearRadio();">Other &nbsp;
  364. </td>
  365. </tr>
  366. <tr>
  367. <td>Filed encloased by</td>
  368. <td>
  369. <select name=frm_fields_enclosed_by>
  370. <option value="">none
  371. <option value='"' <?=($frm_fields_enclosed_by=='\"' or !$frm_fields_enclosed_by)?'selected':'';?>>"
  372. <option value="'" <?=($frm_fields_enclosed_by=="\'")?'selected':'';?>>'
  373. <option value="|" <?=($frm_fields_enclosed_by=='|')?'selected':'';?>>|
  374. </select>
  375. </td>
  376. </tr>
  377. <tr>
  378. <td colspan=2 align=center><input type=button value='Preview' onClick="javascript: preview()">
  379. </td>
  380. </tr>
  381. </table>
  382. <?}?>
  383. <?if($theaction == 'preview' and is_file($tmp_import_file)){ ?>
  384. <br><strong><font size="+1">Step 3: Insert into MYSQL databbase</font></strong>
  385. <table border=0>
  386. <tr>
  387. <td align=center> <input type=button value='empty the table then save the new data to mysql database' onClick="javascript: saveToMysql()">
  388. </tr>
  389. </table>
  390. <?}?>
  391. </form>
  392. <?
  393. if(!$frm_table or !$frm_db) die;
  394. //echo $frm_buffer;
  395. //--------------------work with each table--------------------------------------
  396. //output table structure
  397. $output .= '<pre>/***************************************************************************';
  398. $output .= "\n";
  399. $output .= "<b> $table_name </b>";
  400. $output .= "\n";
  401. $output .= ' +----------------+---------------+------+-----+---------+----------------+';
  402. $output .= "\n";
  403. $output .= ' | Field | Type | Null | Key | Default | Extra |';
  404. $output .= "\n";
  405. $output .= ' +----------------+---------------+------+-----+---------+----------------+';
  406. $output .= "\n";
  407. for($i = 0; $i < $fields; $i++){
  408. $name_tmp = $name[$i];
  409. for($k = strlen($name[$i]); $k < 15; $k++){
  410. $name_tmp .= ' ';
  411. }
  412. $type_tmp = $type[$i].'('.$len[$i]. ')';
  413. for($k = strlen($type[$i].'('.$len[$i]. ')'); $k < 15; $k++){
  414. $type_tmp .= ' ';
  415. }
  416. $output .= ' | '. $name_tmp .'|'. $type_tmp.'|'. $flags[$i];
  417. $output .= "\n";
  418. }
  419. $output .= ' +----------------+---------------+------+-----+---------+----------------+';
  420. $output .= "\n";
  421. $output .= '****************************************************************************/</pre>';
  422. echo $output;
  423. if($successful_msg){
  424. echo "<font size=+2 color=red>$successful_msg</font>";
  425. if(strstr($table_name, "UploadMDS") and strstr($username, "uploadmds") ){
  426. echo "<br>";
  427. echo "<a href='./UploadMDS.php?user=$frm_username&database=$frm_db&table=$table_name&uploaded_file=$uploaded_file' target=new><h2>Save Data to $frm_db</h2></a>";
  428. }
  429. }else{
  430. echo $out_preview;
  431. }
  432. //end of file
  433. //-------------------------
  434. function display_update_yeastDB($ORFName='',$GI=''){
  435. $output = '<br>';
  436. if($GI){
  437. $output .= "Update <b>GI|$GI</b><a href='http://www3.ncbi.nlm.nih.gov/htbin-post/Entrez/query?form=6&db=p&Dopt=g&uid=$GI' target=ncbi>NCBI</a> ";
  438. }else if($ORFName){
  439. $output .=" Update <b>$ORFName</b> <a href='http://genome-www4.stanford.edu/cgi-bin/SGD/locus.pl?locus=$ORFName' target=sgd>SGD</a>";
  440. }
  441. return $output;
  442. }
  443. //end of file
  444. ?>