Über dieses Skript/Programm

Der Sinn dieses Programms ist, die Datenbank MySQL näher und vorallem direkte kennen zu lernen.

Version 0.2

<?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;
	}
?>