Der Sinn dieses Programms ist, die Datenbank MySQL näher und vorallem direkte kennen zu lernen.
<?php /* php-db-view * Autor: Stefan Schindler * Lizenz: GPLv3 oder neuer */ /******************* Die Konfiguration ********************************/ $glob['version'] = 0.2; $glob['pageing'] = 5; /********************* Ab hier nichts mehr verändern *******************/ setlocale (LC_ALL, 'de_CH.UTF-8'); mysql_set_charset('utf8'); header ('Content-type: text/html; charset=utf-8'); /*session_cache_expire('nocache'); session_cache_limiter('nochache');*/ global $glob; session_start(); function set_if_not_set($var, $neu) { if ($var == "") { return $neu; } else { return $var; } } function var_dump_return ($var) { ob_start(); var_dump($var); $ausgabe = ob_get_contents(); ob_end_clean(); return $ausgabe; } function ende ($msg) { if ($msg === null && $_SESSION['ende'][0] != 0) { for($i = 1; $i < $_SESSION['ende'][0]; $i++) { $_SESSION['ausgabe'] .= ' <tr> <th>'.$i.'</th> <td>'.$_SESSION['ende'][$i].'</td> </tr> '; } } else { if ($msg != "") { $letzter = $_SESSION['ende'][0] + 1; $_SESSION['ende'][$letzter] = $msg; $_SESSION['ende'][0] = $letzter; //exit(5); } } } function verlauf ($msg) { if ($msg != "") { $naechste_id = $_SESSION['verlauf'][0] + 1; $aktuelle_id = $_SESSION['verlauf'][0]; if ($aktuelle_id == 0 || $_SESSION['verlauf'][$aktuelle_id] != $msg) { $_SESSION['verlauf'][$naechste_id] = $msg; $_SESSION['verlauf'][0] = $naechste_id; } } } function echo_html_header($body, $refresh) { global $glob; if ($refresh > 0) { $refresh = '<meta http-equiv="refresh" content="'.$refresh.'; URL='.$_SERVER['PHP_SELF'].'?fenster='.$_GET['fenster'].'&array='.$_GET['array'].'">'; } else { $refresh = ''; } echo ' <html> <head> <title>php-db-view (V'.$glob['version'].')</title> <link rel="stylesheet" type="text/css" href="'.$_SERVER['PHP_SELF'].'?fenster=css"> '.$refresh.' </head> '.$body.' </html> '; return 0; } switch ($_GET['fenster']) { case 'browser': /* Standard-Definitionen */ $_SESSION['host'] = set_if_not_set($_SESSION['host'], 'localhost'); $_SESSION['user'] = set_if_not_set($_SESSION['user'], 'root'); $_SESSION['ausgabe'] = ''; $_SESSION['ende'] = array( 0 => 0, ); $_SESSION['host'] = ($_POST['host'] != "" ? $_POST['host'] : $_SESSION['host']); if ($_POST['user'] != "" && $_SESSION['user'] != $_POST['user']) { $_SESSION['db'] = $_POST['db']; $_SESSION['pw'] = $_POST['pw']; } else { $_SESSION['db'] = ($_POST['db'] != "" ? $_POST['db'] : $_SESSION['db']); $_SESSION['pw'] = ($_POST['pw'] != "" ? $_POST['pw'] : $_SESSION['pw']); } $_SESSION['user'] = ($_POST['user'] != "" ? $_POST['user'] : $_SESSION['user']); /***** Main *****/ /*** Connect ***/ ob_start(); $link = mysql_connect($_SESSION['host'], $_SESSION['user'], $_SESSION['pw']) or ende('Keine Verbindung möglich: '.mysql_error()); //$ausgabe = explode(':', ob_get_contents()); $ausgabe = ob_get_contents(); ob_end_clean(); //ende($ausgabe[2].':'.substr($ausgabe[3], 0, 5)); ende($ausgabe); /*** DB's listen ***/ $_SESSION['links'] = array(); if ($_SESSION['ende'][0] == 0) { $db_list = mysql_list_dbs($link); $i = 0; while ($row = mysql_fetch_object($db_list)) { $_SESSION['links']['db'][$i] = $row->Database; $i++; } /*** Tabellen listen ***/ if ($_SESSION['db'] != "") { mysql_select_db($_SESSION['db']) or ende("Auswahl der Datenbank fehlgeschlagen"); $result = mysql_list_tables($_SESSION['db']); if (!$result) { ende('DB Fehler, Tabellen können nicht angezeigt werden'); ende('MySQL Fehler: '.mysql_error()); } $i = 0; while ($row = mysql_fetch_row($result)) { $_SESSION['links']['tbl'][$i] = $row[0]; $i++; } } } /*** Query ***/ if ($_POST['query'] != "") { if(get_magic_quotes_gpc()) { $_POST['query'] = stripslashes($_POST['query']); } verlauf($_POST['query']); $result = mysql_query($_POST['query']);/* or (ende('Error: '.mysql_error()) and ende('SQL: '.$_POST['query']));*/ if (!$result) { ende('Error: '.mysql_error()); ende('SQL: '.$_POST['query']); } else { if (mysql_num_rows($result) == 0) { ende('Resultat ist leer!'); } else { $i = 0; $titel = ""; /*while ($row = mysql_fetch_assoc($result)) { foreach ($row as $k => $v) { $titel .= ' <th>'.$k.'</th> '; } $titel = '<tr>'.$titel.'</tr>'; var_dump ($row); break; }*/ $i = 0; $pg = $glob['pageing']; while ($row = mysql_fetch_assoc($result)) { $pg++; if ($pg > $glob['pageing']) { if ($titel == "") { foreach ($row as $k => $v) { $titel .= ' <th>'.$k.'</th> '; } $titel = '<tr>'.$titel.'</tr>'; } $pg = 0; $_SESSION['ausgabe'] .= $titel; } $ausgabe = ''; foreach ($row as $v) { $ausgabe .= ' <td>'.$v.'</td> '; } $_SESSION['ausgabe'] .= ' <tr> '.$ausgabe.' </tr> '; } } } } ende(null); /***** GUI *****/ echo_html_header (' <body class="'.$_GET['fenster'].'"> <form action="'.$_SERVER['PHP_SELF'].'?fenster=browser" method="post"> <table style="float: left;"> <tr> <td>DB-Host: <input name="host" value="'.$_SESSION['host'].'" type="text"></td> <td>Datenbank: <input name="db" value="'.$_SESSION['db'].'" type="text"></td> </tr> <tr> <td>DB-User: <input name="user" value="'.$_SESSION['user'].'" type="text"></td> <td>DB-Passwort: <input name="pw" value="'.$_SESSION['pw'].'" type="password"></td> </tr> <tr> <td colspan="4">Query: <textarea name="query" style="width: 100%;">'.$_POST['query'].'</textarea></td> </tr> <tr> <td><input type="submit" value="Abschicken" /></td> </tr> </table> <div style="float: right; width: 400px;"> Tabellen: <br /> <iframe src="'.$_SERVER['PHP_SELF'].'?fenster=links&array=tbl"></iframe> </div> <div style="float: right; right: 400px;"> Datenbanken: <br /> <iframe src="'.$_SERVER['PHP_SELF'].'?fenster=links&array=db"></iframe> </div> </form> </body> ', false); break; case 'links': /*if (is_array($_SESSION['links']) != true) { $_SESSION['links'] = array(); $_SESSION['links'][$_GET['array']] = array(); echo 1; }* if (is_int($_SESSION['links'][$_GET['array']][0] != true)) { $_SESSION['links'][$_GET['array']] = array(); echo 2; }*/ foreach ($_SESSION['links'][$_GET['array']] as $k => $v) { $ausgabe .= ' <tr> <td>'.$k.'</td> <td>'.$v.'</td> </tr> '; } echo_html_header (' <body class="'.$_GET['fenster'].'"> <table border="1"> '.$ausgabe.' </table> </body> ', -1); break; case 'verlauf_loeschen': $_SESSION['verlauf'] = array( 0 => 0, /*0 => 1, 1 => 'SELECT * FROM user',*/ ); case 'verlauf': /*if (is_array($_SESSION['verlauf']) != true) { $_SESSION['verlauf'] = array( 0 => 0, ); }*/ for($i = $_SESSION['verlauf'][0]; $i > 0; $i--) { $ausgabe .= ' <tr> <td><pre>'.$_SESSION['verlauf'][$i].'</pre></td> </tr> '; } if ($_SESSION['verlauf'][0] == 0) { $ausgabe .= 'Kein Verlauf'; } else { $ausgabe = ' <table border="1"> '.$ausgabe.' </table> '; } echo_html_header (' <body class="'.$_GET['fenster'].'"> <h3>Verlauf [ <a href="'.$_SERVER['PHP_SELF'].'?fenster=verlauf_loeschen">löschen</a> ]</h3> '.$ausgabe.' </body> ', 30); break; case 'ausgabe': echo_html_header (' <body class="'.$_GET['fenster'].'"> <table border="1"> '.$_SESSION['ausgabe'].' </table> '/*<pre>'.var_dump_return($_SESSION['verlauf']).'</pre>.*/.' </body> ', 5); break; case 'css': header('Content-type: text/css'); echo '/* PHP-DB-View Version '.$glob['version'].' */ h2, h3 { margin: 0px; } th { background-color: #eee; } .browser { background-color: #fcc; } .verlauf { background-color: #cfc; } '; break; default: echo_html_header(' <frameset rows="25%,*,10%"> <frame src="'.$_SERVER['PHP_SELF'].'?fenster=browser" name="browser"> <frame src="'.$_SERVER['PHP_SELF'].'?fenster=ausgabe" name="ausgabe"> <frame src="'.$_SERVER['PHP_SELF'].'?fenster=verlauf" name="verlauf"> </frameset>', -1); break; } ?>