Documentation TYPO3 par Ameos |
00001 <?php 00002 /* $Id: tbl_query_box.php,v 2.4 2003/12/13 13:15:38 lem9 Exp $ */ 00003 // vim: expandtab sw=4 ts=4 sts=4: 00004 00005 // Check parameters 00006 00007 require_once('./libraries/common.lib.php'); 00008 require_once('./libraries/bookmark.lib.php'); 00009 00010 if (!($cfg['QueryFrame'] && $cfg['QueryFrameJS'] && isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'sql' || $querydisplay_tab == 'full'))) { 00011 PMA_checkParameters(array('db','table','url_query')); 00012 } 00013 00017 if (isset($show_query) && $show_query == '1') { 00018 // This script has been called by read_dump.php 00019 if (isset($sql_query_cpy)) { 00020 $query_to_display = $sql_query_cpy; 00021 } 00022 // Other cases 00023 else { 00024 $query_to_display = $sql_query; 00025 } 00026 } else { 00027 $query_to_display = ''; 00028 } 00029 unset($sql_query); 00030 00034 $fields_cnt = 0; 00035 if (isset($db) && isset($table) && $table != '' && $db != '') { 00036 $local_query = 'SHOW FIELDS FROM ' . PMA_backquote($table) . ' FROM ' . PMA_backquote($db); 00037 $result = @PMA_mysql_query($local_query); 00038 if (!$result) { 00039 PMA_mysqlDie('', $local_query, '', $err_url); 00040 } 00041 else { 00042 $fields_cnt = mysql_num_rows($result); 00043 while ($row = PMA_mysql_fetch_array($result)) { 00044 $fields_list[] = $row['Field']; 00045 } // end while 00046 mysql_free_result($result); 00047 } 00048 } 00049 00053 // loic1: defines wether file upload is available or not 00054 // ($is_upload now defined in common.lib.php) 00055 00056 if ($cfg['QueryFrame'] && $cfg['QueryFrameJS'] && isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'sql' || $querydisplay_tab == 'full')) { 00057 $locking = 'onKeyPress="document.sqlform.elements[\'LockFromUpdate\'].checked = true;"'; 00058 } else { 00059 $locking = ''; 00060 } 00061 00062 $auto_sel = ($cfg['TextareaAutoSelect'] 00063 // 2003-02-05 rabus: This causes big trouble with Opera 7 for 00064 // Windows, so let's disable it there... 00065 && !(PMA_USR_OS == 'Win' && PMA_USR_BROWSER_AGENT == 'OPERA' && PMA_USR_BROWSER_VER >= 7)) 00066 ? "\n" . ' onfocus="if (typeof(document.layers) == \'undefined\' || typeof(textarea_selected) == \'undefined\') {textarea_selected = 1; document.sqlform.elements[\'sql_query\'].select();}"' 00067 : ''; 00068 $auto_sel .= ' ' . $locking; 00069 00070 // garvin: If non-JS query window is embedded, display a list of databases to choose from. 00071 // Apart from that, a non-js query window sucks badly. 00072 00073 if ($cfg['QueryFrame'] && (!$cfg['QueryFrameJS'] && !$db || ($cfg['QueryFrameJS'] && !$db))) { 00077 if ($server > 0) { 00078 PMA_availableDatabases(); // this function is defined in "common.lib.php" 00079 } else { 00080 $num_dbs = 0; 00081 } 00082 00083 if ($num_dbs > 0) { 00084 $queryframe_db_list = '<select size=1 name="db">'; 00085 for ($i = 0; $i < $num_dbs; $i++) { 00086 $t_db = $dblist[$i]; 00087 $queryframe_db_list .= '<option value="' . htmlspecialchars($t_db) . '">' . htmlspecialchars($t_db) . '</option>'; 00088 } 00089 $queryframe_db_list .= '</select>'; 00090 } else { 00091 $queryframe_db_list = ''; 00092 } 00093 } else { 00094 $queryframe_db_list = ''; 00095 } 00096 00097 $form_items = 0; 00098 00099 if ($cfg['QueryFrame'] && $cfg['QueryFrameJS'] && isset($is_inside_querywindow) && $is_inside_querywindow) { 00100 ?> 00101 <script type="text/javascript"> 00102 <!-- 00103 document.writeln('<form method="post" target="phpmain' + <?php echo ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) ? 'opener.' : '');?>parent.frames.queryframe.document.hashform.hash.value + '" action="read_dump.php"<?php if ($is_upload) echo ' enctype="multipart/form-data"'; ?> onsubmit="return checkSqlQuery(this)" name="sqlform">'); 00104 //--> 00105 </script> 00106 <noscript> 00107 <form method="post" target="phpmain<?php echo md5($cfg['PmaAbsoluteUri']); ?>" action="read_dump.php"<?php if ($is_upload) echo ' enctype="multipart/form-data"'; ?> name="sqlform"> 00108 </noscript> 00109 <?php 00110 } else { 00111 ?> 00112 <form method="post" action="read_dump.php"<?php if ($is_upload) echo ' enctype="multipart/form-data"'; ?> onsubmit="return checkSqlQuery(this)" name="sqlform"> 00113 <?php 00114 } 00115 ?> 00116 <input type="hidden" name="is_js_confirmed" value="0" /> 00117 <?php echo PMA_generate_common_hidden_inputs($db, $table); ?> 00118 <input type="hidden" name="pos" value="0" /> 00119 <input type="hidden" name="goto" value="<?php echo $goto; ?>" /> 00120 <input type="hidden" name="zero_rows" value="<?php echo $strSuccess; ?>" /> 00121 <input type="hidden" name="prev_sql_query" value="<?php echo ((!empty($query_to_display)) ? urlencode($query_to_display) : ''); ?>" /> 00122 <?php 00123 if (!isset($is_inside_querywindow) || 00124 (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'sql' || $querydisplay_tab == 'full'))) { 00125 ?> 00126 <!-- Query box and bookmark support --> 00127 <?php 00128 if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) { 00129 ?> 00130 <input type="hidden" name="focus_querywindow" value="true" /> 00131 <?php 00132 } 00133 ?> 00134 <a name="querybox"></a> 00135 <table cellpadding="1" cellspacing="1"> 00136 <tr> 00137 <td> 00138 <?php echo sprintf($strRunSQLQuery, htmlspecialchars($db)) . $queryframe_db_list . (isset($is_inside_querywindow) ? '<br />' : ' ') . PMA_showMySQLDocu('Reference', 'SELECT'); ?> 00139 <br /> 00140 <textarea name="sql_query" rows="<?php echo $cfg['TextareaRows']; ?>" cols="<?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? ceil($cfg['TextareaCols'] * 1.25) : $cfg['TextareaCols'] * 2); ?>" wrap="virtual" dir="<?php echo $text_dir; ?>"<?php echo $auto_sel; ?>> 00141 <?php 00142 if (!empty($query_to_display)) { 00143 echo htmlspecialchars($query_to_display); 00144 } elseif (isset($table)) { 00145 echo htmlspecialchars(str_replace('%d', PMA_backquote($db), str_replace('%t', PMA_backquote($table), $cfg['DefaultQueryTable']))); 00146 } else { 00147 echo htmlspecialchars(str_replace('%d', PMA_backquote($db), $cfg['DefaultQueryDatabase'])); 00148 } 00149 ?></textarea> 00150 </td> 00151 <?php if (isset($table) && $fields_cnt > 0) { ?> 00152 <td align="center" valign="top"><?php echo (isset($is_inside_querywindow) ? '<br />' : '') . $strFields; ?>:<br /> 00153 <select name="dummy" size="4" multiple> 00154 <?php 00155 echo "\n"; 00156 for ($i = 0 ; $i < $fields_cnt; $i++) { 00157 echo ' ' 00158 . '<option value="' . PMA_backquote(htmlspecialchars($fields_list[$i])) . '">' . htmlspecialchars($fields_list[$i]) . '</option>' . "\n"; 00159 } 00160 ?> 00161 </select><br /><br /> 00162 <input type="button" name="insert" value="<?php echo($strInsert); ?>" onclick="insertValueQuery()" /> 00163 </td> 00164 <?php 00165 } 00166 ?> 00167 </tr> 00168 </table> 00169 <input type="checkbox" name="show_query" value="1" id="checkbox_show_query" checked="checked" /> 00170 <label for="checkbox_show_query"><?php echo $strShowThisQuery; ?></label><br /> 00171 <?php 00172 if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) { 00173 ?> 00174 <script type="text/javascript"> 00175 document.writeln('<input type="checkbox" name="LockFromUpdate" value="1" id="checkbox_lock" /> '); 00176 document.writeln(' <label for="checkbox_lock"><?php echo $strQueryWindowLock; ?></label><br />'); 00177 </script> 00178 <?php 00179 } 00180 00181 $form_items++; 00182 ?> 00183 </div> 00184 <?php 00185 } else { 00186 ?> 00187 <input type="hidden" name="sql_query" value="" /> 00188 <input type="hidden" name="show_query" value="1" /> 00189 <?php 00190 } 00191 00192 // loic1: displays import dump feature only if file upload available 00193 if ($is_upload && (!isset($is_inside_querywindow) || 00194 (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full')))) { 00195 $form_items++; 00196 echo ' ' . ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && $querydisplay_tab == 'full') || !isset($is_inside_querywindow) ? '<i>' . $strOr . '</i>' : '') . ' ' . $strLocationTextfile . ' :<br />' . "\n"; 00197 ?> 00198 <div style="margin-bottom: 5px"> 00199 <input type="file" name="sql_file" class="textfield" /> <?php echo PMA_displayMaximumUploadSize($max_upload_size);?><br /> 00200 <?php 00201 // some browsers should respect this :) 00202 echo ' ' . PMA_generateHiddenMaxFileSize($max_upload_size) . "\n"; 00203 00204 if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) { 00205 ?> 00206 <input type="hidden" name="focus_querywindow" value="true" /> 00207 <?php 00208 } 00209 00210 $is_gzip = ($cfg['GZipDump'] && @function_exists('gzopen')); 00211 $is_bzip = ($cfg['BZipDump'] && @function_exists('bzdecompress')); 00212 if ($is_bzip || $is_gzip) { 00213 echo ' ' . $strCompression . ':' . "\n" 00214 . ' <input type="radio" id="radio_sql_file_compression_auto" name="sql_file_compression" value="" checked="checked" />' . "\n" 00215 . ' <label for="radio_sql_file_compression_auto">' . $strAutodetect . '</label> ' . "\n" 00216 . ' <input type="radio" id="radio_sql_file_compression_plain" name="sql_file_compression" value="text/plain" />' . "\n" 00217 . ' <label for="radio_sql_file_compression_plain">' . $strNone . '</label> ' . "\n"; 00218 if ($is_gzip) { 00219 echo ' <input type="radio" id="radio_sql_file_compression_gzip" name="sql_file_compression" value="application/x-gzip" />' . "\n" 00220 . ' <label for="radio_sql_file_compression_gzip">' . $strGzip . '</label> ' . "\n"; 00221 } 00222 if ($is_bzip) { 00223 echo ' <input type="radio" id="radio_sql_file_compression_bzip" name="sql_file_compression" value="application/x-bzip" />' . "\n" 00224 . ' <label for="radio_sql_file_compression_bzip">' . $strBzip . '</label> ' . "\n"; 00225 } 00226 } else { 00227 echo ' <input type="hidden" name="sql_file_compression" value="text/plain" />' . "\n"; 00228 } 00229 ?> 00230 </div> 00231 <?php 00232 } // end if 00233 echo "\n"; 00234 00235 // web-server upload directory 00236 $is_upload_dir = false; 00237 if (!empty($cfg['UploadDir']) && !isset($is_inside_querywindow) || 00238 (!empty($cfg['UploadDir']) && isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full'))) { 00239 00240 if (substr($cfg['UploadDir'], -1) != '/') { 00241 $cfg['UploadDir'] .= '/'; 00242 } 00243 if ($handle = @opendir($cfg['UploadDir'])) { 00244 if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) { 00245 ?> 00246 <input type="hidden" name="focus_querywindow" value="true" /> 00247 <?php 00248 } 00249 00250 $is_first = 0; 00251 while ($file = @readdir($handle)) { 00252 if (is_file($cfg['UploadDir'] . $file) && PMA_checkFileExtensions($file, '.sql')) { 00253 if ($is_first == 0) { 00254 $is_upload_dir = true; 00255 echo "\n"; 00256 echo ' ' . ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && $querydisplay_tab == 'full') || !isset($is_inside_querywindow) ? '<i>' . $strOr . '</i>' : '') . ' ' . $strWebServerUploadDirectory . ' :<br />' . "\n"; 00257 echo ' <div style="margin-bottom: 5px">' . "\n"; 00258 echo ' <select size="1" name="sql_localfile">' . "\n"; 00259 echo ' <option value="" selected="selected"></option>' . "\n"; 00260 $form_items++; 00261 } // end if (is_first) 00262 echo ' <option value="' . htmlspecialchars($file) . '">' . htmlspecialchars($file) . '</option>' . "\n"; 00263 $is_first++; 00264 } // end if (is_file) 00265 } // end while 00266 if ($is_first > 0) { 00267 echo ' </select>' . "\n" 00268 . ' </div>' . "\n\n"; 00269 } // end if (isfirst > 0) 00270 @closedir($handle); 00271 } else { 00272 echo ' <div style="margin-bottom: 5px">' . "\n"; 00273 echo ' <font color="red">' . $strError . '</font><br />' . "\n"; 00274 echo ' ' . $strWebServerUploadDirectoryError . "\n"; 00275 echo ' </div>' . "\n"; 00276 } 00277 } // end if (web-server upload directory) 00278 echo "\n"; 00279 00280 // Encoding setting form appended by Y.Kawada 00281 if (function_exists('PMA_set_enc_form')) { 00282 echo PMA_set_enc_form(' '); 00283 $form_items++; 00284 } 00285 00286 // Charset conversion options 00287 if (($is_upload || $is_upload_dir) && 00288 (!isset($is_inside_querywindow) || 00289 (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full'))) 00290 && isset($db) && $db != ''){ 00291 if ($cfg['AllowAnywhereRecoding'] && $allow_recoding) { 00292 $form_items++; 00293 echo ' <div style="margin-bottom: 5px">' . "\n"; 00294 $temp_charset = reset($cfg['AvailableCharsets']); 00295 echo $strCharsetOfFile . "\n" 00296 . ' <select name="charset_of_file" size="1">' . "\n" 00297 . ' <option value="' . $temp_charset . '"'; 00298 if ($temp_charset == $charset) { 00299 echo ' selected="selected"'; 00300 } 00301 echo '>' . $temp_charset . '</option>' . "\n"; 00302 while ($temp_charset = next($cfg['AvailableCharsets'])) { 00303 echo ' <option value="' . $temp_charset . '"'; 00304 if ($temp_charset == $charset) { 00305 echo ' selected="selected"'; 00306 } 00307 echo '>' . $temp_charset . '</option>' . "\n"; 00308 } 00309 echo ' </select><br />' . "\n" . ' '; 00310 echo ' </div>' . "\n"; 00311 } // end if (recoding) 00312 } 00313 00314 // Bookmark Support 00315 $bookmark_go = FALSE; 00316 if (!isset($is_inside_querywindow) || 00317 (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'history' || $querydisplay_tab == 'full'))) { 00318 if ($cfg['Bookmark']['db'] && $cfg['Bookmark']['table']) { 00319 if (($bookmark_list = PMA_listBookmarks($db, $cfg['Bookmark'])) && count($bookmark_list) > 0) { 00320 $form_items++; 00321 echo " " . ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && $querydisplay_tab == 'full') || !isset($is_inside_querywindow) ? "<i>$strOr</i>" : '') . " $strBookmarkQuery :<br />\n"; 00322 00323 if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) { 00324 ?> 00325 <input type="hidden" name="focus_querywindow" value="true" /> 00326 <?php 00327 } 00328 00329 echo ' <div style="margin-bottom: 5px">' . "\n"; 00330 echo ' <select name="id_bookmark" style="vertical-align: middle">' . "\n"; 00331 echo ' <option value=""></option>' . "\n"; 00332 foreach($bookmark_list AS $key => $value) { 00333 echo ' <option value="' . $value . '">' . htmlspecialchars($key) . '</option>' . "\n"; 00334 } 00335 echo ' </select>' . "<br />\n"; 00336 echo ' ' . $strVar . ' (<a href="./Documentation.html#faqbookmark" target="documentation">' . $strDocu . '</a>): <input type="text" name="bookmark_variable" class="textfield" size="10" />' . "\n"; 00337 echo ' <input type="radio" name="action_bookmark" value="0" id="radio_bookmark0" checked="checked" style="vertical-align: middle" /><label for="radio_bookmark0">' . $strSubmit . '</label>' . "\n"; 00338 echo ' <input type="radio" name="action_bookmark" value="1" id="radio_bookmark1" style="vertical-align: middle" /><label for="radio_bookmark1">' . $strBookmarkView . '</label>' . "\n"; 00339 echo ' <input type="radio" name="action_bookmark" value="2" id="radio_bookmark2" style="vertical-align: middle" /><label for="radio_bookmark2">' . $strDelete . '</label>' . "\n"; 00340 echo ' <br />' . "\n"; 00341 echo ' </div>' . "\n"; 00342 $bookmark_go = TRUE; 00343 } 00344 } 00345 } 00346 00347 if (!isset($is_inside_querywindow) || (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && (($querydisplay_tab == 'files') || $querydisplay_tab == 'sql' || $querydisplay_tab == 'full' || ($querydisplay_tab == 'history' && $bookmark_go)))) { 00348 if ($form_items > 0) { 00349 ?> 00350 <table border="0"> 00351 <tr> 00352 <td valign="top"> 00353 <input type="submit" name="SQL" value="<?php echo $strGo; ?>" /> 00354 </td> 00355 <?php 00356 if ( $cfg['Bookmark']['db'] 00357 && $cfg['Bookmark']['table'] 00358 && (!isset($is_inside_querywindow) 00359 || ( isset($is_inside_querywindow) 00360 && $is_inside_querywindow == TRUE 00361 && isset($querydisplay_tab) 00362 //&& $querydisplay_tab != 'history'))) { 00363 && $querydisplay_tab == 'sql'))) { 00364 ?> 00365 <td valign="top"> 00366 <input type="submit" name="SQLbookmark" value="<?php echo $strGo . ' & ' . $strBookmarkThis; ?>" /> 00367 </td> 00368 00369 <td> 00370 <fieldset> 00371 <legend><?php echo $strBookmarkOptions; ?></legend> 00372 <?php echo $strBookmarkLabel; ?>: <input type="text" name="bkm_label" value="" /><br /> 00373 <input type="checkbox" name="bkm_all_users" id="id_bkm_all_users" value="true" /><label for="id_bkm_all_users"><?php echo $strBookmarkAllUsers; ?></label> 00374 </fieldset> 00375 </td> 00376 <?php 00377 } 00378 ?> 00379 </tr> 00380 </table> 00381 <?php 00382 } else { 00383 // TODO: Add a more complete warning that no items (like for file import) where found. 00384 // (After 2.5.2 release!) 00385 echo $strWebServerUploadDirectoryError; 00386 } 00387 } 00388 ?> 00389 </form> 00390 <?php 00391 if (!isset($is_inside_querywindow) || 00392 (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full')) && isset($db) && $db != '') { 00393 00394 // loic1: displays import dump feature only if file upload available 00395 $ldi_target = 'ldi_table.php?' . $url_query . (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? '&focus_querywindow=true' : ''); 00396 00397 if ($is_upload && isset($db) && isset($table)) { 00398 ?> 00399 <!-- Insert a text file --> 00400 <br /><br /> 00401 <li> 00402 <?php 00403 if ($cfg['QueryFrame'] && $cfg['QueryFrameJS']) { 00404 ?> 00405 00406 <script type="text/javascript"> 00407 document.writeln('<div style="margin-bottom: 10px"><a href="<?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? '#' : $ldi_target); ?>" <?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? 'onclick="opener.parent.frames.phpmain\' + opener.parent.frames.queryframe.document.hashform.hash.value + \'.location.href = \\\'' . $ldi_target . '\\\'; return false;"' : ''); ?>><?php echo addslashes($strInsertTextfiles); ?></a></div>'); 00408 </script> 00409 00410 <?php 00411 } else { 00412 ?> 00413 00414 <script type="text/javascript"> 00415 document.writeln('<div style="margin-bottom: 10px"><a href="<?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? '#' : $ldi_target); ?>" <?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? 'onclick="opener.parent.frames.phpmain' . md5($cfg['PmaAbsoluteUri']) . '.location.href = \\\'' . $ldi_target . '\\\'; return false;"' : ''); ?>><?php echo addslashes($strInsertTextfiles); ?></a></div>'); 00416 </script> 00417 00418 <?php 00419 } 00420 ?> 00421 00422 <noscript> 00423 <div style="margin-bottom: 10px"><a href="<?php echo $ldi_target; ?>"><?php echo $strInsertTextfiles; ?></a></div> 00424 </noscript> 00425 </li> 00426 <?php 00427 } 00428 } 00429 echo "\n"; 00430 ?>