gechger
Goto Top

SQL Script ausführen auf einem PC ohne MYSQL Administrator

Habe gerade erst mit SQL angefangen und habe da eine allgemeine Frage

Hallo Forum,

mein erstes Problem habe ich mit Eurer Hilfe schon gelöst. Jetzt noch ein weiteres Szenario:

In meiner Firma habe ich den MYSQL Administrator für den Zugriff auf die Datenbanken laufen. Ein mobiler User mit Notebook soll jetzt Daten von der Datenbank auslesen können, ohne sich vorher in die Datenbank einwählen zu müssen. Ich möchte nicht, daß er mit dem MYSQL Administrator eventuell irgendetwas verändert.

Das Script, das ausgeführt werden soll lautet:

SELECT * FROM `mzlife` where `werte` like '%blog=1201%';

wobei er den Tabellennamen und den LIKE -Wert wählen muß. Er darf nichts zurückschreiben, sondern zu Kontrollzwecken die Daten nur lesen können.
Vielleicht eignet sich Excel dazu, oder ein HTML Code. Die Zugangsdaten, um an die Datenbank zu kommen, darf er ebenfalls nicht sehen.

Ich habe keinerlei Erfahrung mit php oder vba. Ich beherrsche nur HTML.

Frage: ist so ein Szenario überhaupt möglich, was muß auf dem Notebook ggfls. installiert werden, um es eventuell möglich zu machen und wenn es geht, gibt es für sowas Scriptbeispiele?

Vielen Dank für jede Anregung

Schöne Grüße
Christof

Content-Key: 93249

Url: https://administrator.de/contentid/93249

Printed on: April 19, 2024 at 19:04 o'clock

Member: kugelschreiber
kugelschreiber Jul 30, 2008 at 14:35:54 (UTC)
Goto Top
Hi.

Besorg/Installier Dir einen Webserver, welcher Deine Datenbank ansteuern kann, wenn dies nicht bereits geschehen ist.
Dann erstellst Du im Dokumentroot (meist heißt der "htdocs") eine Datei namens "auslesen.php" und kopierst Dir folgenden Code dort rein! Und passt die Verbindungsdaten an!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<title>Datenbank auslesen</title>
</head>

<body>
<?
//Verbindungsdaten
$host = "hostname";  
$db_name = "db_name";  
$user = "user";  
$password = "password";  
//Verbindung herstellen
$cldb = mysql_connect($host, $user, $password); // or die(mysql_error());

//Abfrage
$SQLString = "SELECT * FROM  mzlife WHERE werte LIKE '%blog=1201%'";  
$abfrage = mysql_db_query($db_name,$SQLString); // or die(mysql_error());
?>
<table>
<?
//Zeilenweise Ausgabe
while($array = mysql_fetch_array($abfrage)){
?>
	<tr>
		<td><?= $array[spaltenname1]; ?></td>
		<td><?= $array[spaltenname2]; ?></td>
		<td><?= $array[spaltenname3]; ?></td>
		<td><?= $array[spaltenname4]; ?></td>
		<?
		/*
		. usw.
		. usw.
		. usw.
		*/	
		?>
	</tr>
<?
} // ENDE while($array = mysql_fetch_array($abfrage)){
?>
</table>
</body>
</html>

Die User können dann per Browser http://rechnername/auslesen.php

Auf die Daten zugreifen, sehen aber weder Passwort noch PHP/MySql Code, sondern nur reines HTML

Gruß Kuli
Member: gechger
gechger Jul 31, 2008 at 06:16:16 (UTC)
Goto Top
Hi Kuli,

das ist ja cool. Sieht echt einfach aus. Da setz ich mich gleich mal ran und probier das aus.

Daaaanke

Schöne Grüße
Christof
Member: gechger
gechger Jul 31, 2008 at 11:06:46 (UTC)
Goto Top
Hallo Kuli,

hab das mal getestet und es funktioniert. Hab den XAMPP installiert und das Script ausgeführt. Es liefert mir die gewünschte Information.

Da für einen praxisgerechten Einsatz noch einiges zu tun ist, habe ich noch eine Frage zum Verständnis.
Die Zeilen 11 - 14 sind doch Variablen, oder? Die kann man doch sicher füllen, z. Bsp. aus einer Eingabemaske heraus.

Zum besseren Verständnis, was ich eigentlich erreichen will:
Unsere Firma baut in Kundendienst- und Monteursfahrzeugen ein Zeiterfassungssystem ein, und das bundesweit. Die meisten schicken die Daten von den Fahrzeugen via GPRS in unsere MYSQL Datenbanken. Wenn wir Autos neu ausrüsten, muß die Funktionalität getestet werden, also ruft mich der Monteur von unterwegs an, ich schaue in die Datenbank, und prüfe nach, ob alles benötigten Daten vorhanden sind. Nun bin ich aber nicht immer da. Ich möchte also, daß der Monteur selbst prüfen kann, ob alles in Ordnung ist. Er soll aber nicht selbst in die Datenbank schauen können.

Mein Ziel ist es, auf dem Notebook des Monteurs eine Eingabemaske zur Verfügung zu stellen, in der er den Kundennamen eingibt, die eindeutige ID-Nummer des eingebauten Gerätes (bLOG=$Variable) und ggfls. auch noch das auszugebende Datum. Hinter dem Kundennamen sollen versteckt die entsprechenden Zugangsdaten liegen, die automatisch im Script eingefügt werden sollen. Der Monteur sieht also direkt, ob der Einbau korrekt durchgeführt wurde, ohne an sensible Daten zu gelangen.

Eingabemasken habe ich in HTML bereits erstellt. Da ich aber sicher php dafür brauche und niemanden darum bitten mag, so ein Script für mich zu erstellen, möchte ich eigentlich nur Tipps für die Marschroute zur Lösung, damit ich nicht so blind im riesigen php Dschungel herumirre, sondern zielgerichtet lernen kann. Vielleicht auch eine Webseite, die einem Newbie den Einstieg in php erleichtert, so mit kurzen Erklärungen, wozu welche Befehle dienen.

Naja, so ein kleiner roter Faden wäre nicht schlecht.

Ginge das?

Schöne Grüße
Christof
Member: TheHans
TheHans Jul 31, 2008 at 13:11:46 (UTC)
Goto Top
Hallo gechger,
habe nicht gerade viel Erfahrung, würde in deinem Fall aber dem Benutzer Leserechte auf der Datenbank geben. Dann mit z.B. Aqua Data Studio den Zugriff auf dem Laptop einrichten und den Script abspeichern.
Hier findest du ADS http://www.heise.de/software/download/aqua_data_studio/23459.
Vielleicht kannst Du ja damit etwas anfangen.
Gruss HH
Member: gechger
gechger Jul 31, 2008 at 13:19:23 (UTC)
Goto Top
Hallo HH,
probier ich auch gerne mal aus. Ich möchte unseren Technikern die Sache so einfach wie möglich machen.

Danke für den Tip

Gruss
Christof
Member: kugelschreiber
kugelschreiber Jul 31, 2008 at 16:02:55 (UTC)
Goto Top
Hallo Christof,

die Variablen 11-14 sind ja Deine Zugangsdaten zur Datenbank. Die brauchst (solltest) Du gar nicht ändern.

Was Du machen kannst ist folgendes.

Schalte ein HTML-Formular davor und schicke die Variablen per action-Atribut an dieses Script , oder binde das Formular in das Script unten ein und schicke somit die Variablen an sich selbst.

Per PHP kannst Du mit:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<title>Datenbank auslesen</title>
</head>

<body>
<?
if($_POST['Submit'] == "Abschicken"){  

	//Verbindungsdaten
	$host = "hostname";  
	$db_name = "db_name";  
	$user = "user";  
	$password = "password";  
	//Verbindung herstellen
	$cldb = mysql_connect($host, $user, $password); // or die(mysql_error());
	
	//Abfrage
	$suchbegriff = $_POST['suchbegriff'];  
	$SQLString = "SELECT * FROM  mzlife WHERE werte LIKE '%".$suchbegriff."%'";  
	$abfrage = mysql_db_query($db_name,$SQLString); // or die(mysql_error());
	?>
	<table>
	<?
	//Zeilenweise Ausgabe
	while($array = mysql_fetch_array($abfrage)){
	?>
		<tr>
			<td><?= $array[spaltenname1]; ?></td>
			<td><?= $array[spaltenname2]; ?></td>
			<td><?= $array[spaltenname3]; ?></td>
			<td><?= $array[spaltenname4]; ?></td>
			<?
			/*
			. usw.
			. usw.
			. usw.
			*/	
			?>
		</tr>
	<?
	} // ENDE while($array = mysql_fetch_array($abfrage)){
	?>
	</table>
<?
}else{
?>
	<form method="post">  
	<table>
		<tr>
			<td>Suchbegriff</td>
			<td><input type="text" name="suchbegriff" /></td>  
		</tr>
		<tr>
			<td colspan="2"><input type="submit" name="Submit" value="Abschicken" /></td>  
		</tr>
	</table>
	</form>
<?
}
?>

</body>
</html>

Das sollte reichen oder.

Spezieller kannst Du vorher noch eine Loginmaske davorschalten und gegen eine Tabelle mit User und Password in der Datenbank authentifizieren.

Gruß Kuli
Member: gechger
gechger Aug 01, 2008 at 07:01:16 (UTC)
Goto Top
Guten Morgen Kuli,

die Datenbankeinträge müssen variabel sein, weil jeder Kunde eine eigene Datenbank und ein eigenes Kennwort hat. Die Datenbanken haben bei STrato auch so unübersichtliche Namen wie dbo00012345, das kann sich keiner merken. Ich will also alle Kunden in einer eigenen Datenbank ablegen, und über eine Eingabemaske mit Kundennamen die zugehörigen Anmeldedaten auslesen.
Der Techniker soll nur Kundennamen, Fahrzeugnummer und Datum eingeben, um die Daten ausgegeben zu bekommen.

Ich habe die Seite php-einfach.de gefunden und mal angefangen, mich ins php einzuarbeiten. Lösungansätze habe ich da gefunden, aber bis zur Umsetzung dauert es noch. Deine Tipps kommen mir sehr gelegen, vielen Dank dafür. Ich bin für alle weiteren Tips sehr offen.

Schöne Grüße
Christof
Member: kugelschreiber
kugelschreiber Aug 03, 2008 at 11:30:36 (UTC)
Goto Top
Hi Christof,

dann mache Dir eine Tabelle in der LOGIN Datenbank mit folgenden Userdaten:

- user_id, user_name, user_password, user_datenbank

Somit kannst Du nach erfolgreichem anmelden des Users SEINE Datenbank (user_datanbank auslesen und diese ihm zuordnen.

Gruß Kuli
Member: gechger
gechger Aug 07, 2008 at 06:37:38 (UTC)
Goto Top
Hi Kuli,

vielen Dank für die ausführliche Hilfe. So werde ich es machen. Habe mir im I-Net auch schon einige Beispiele angesehen. Sobald ich halbwegs verstanden habe, wie die Beispiele funktionieren, setze ich das einfach mal um.

Ich finde es gut, daß soviel im php-Bereich veröffentlicht wird und freue mich über die Hilfsbereitschaft, die in vielen Foren sichtbar wird.

Also noch mal vielen Dank, ich setze diesen Beitrag auf gelöst.

Schöne Grüße
Christof
Member: gechger
gechger Aug 18, 2008 at 07:57:37 (UTC)
Goto Top
So, ich habe mein erstes Script mit Eurer Hilfe fertig bekommen. Es sieht jetzt so aus:

<!DOCTYPE HTML PUBLIC "-W3CDTD HTML 4.01 TransitionalEN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Fahrzeuginformationen holen</title>
</head>

<body>
<?php
error_reporting(E_ALL); #zeig alle Fehler
ini_set('display_errors', '1'); #sorgt dafür, dass überhaupt Fehler angezeigt werden

Datenbankinformation zum Abruf der Kundendaten

$host = "host";
$user = "dboXXXXX";
$kennwort = "12345";
$dbname = "dbxxxxx";
$tabelle ="kddaten";

Eingabeformular
?>
<form action="fahrzeugholen.php" method="post">
<br>
Kundenname:<br>
<input name="kundenname"><br>
Fahrzeug-ID:<br>
<input name="fahrzeug"><br>
Datum:<br>
<input name="datum"><br>
WICHTIG: Datum eingeben in Form yyyy-mm-tt<br><br>
<input type="submit" value="Absenden"><br>
</form>
<?php

Verbindung mit der Datenbank
$cldb = mysql_connect($host, $user, $kennwort); or die(mysql_error());
mysql_select_db($dbname);

Variablen, die durch das Eingabeformular gefüllt werden
$kundenname=$_POST["kundenname"];
$fahrzeug=$_POST["fahrzeug"];
$datum=$_POST["datum"];

Script, welches ausgeführt werden soll
$sql = ("SELECT * FROM kddaten where name='$kundenname'");

Ausgabe der abgefragten Informationen...
$result=mysql_Query ($sql);

...und Ausgabe in ein Array
$row = mysql_fetch_row($result);

Verbindung mit Datenbank, welches die zu ermittelnden Werte beinhaltet
$host1 = "host";
$user1 = "$row[1]"; Inhalte des Arrays, die Indexnummern per ECHO abgefragt, liefert genaue Informationen
$kennwort1 = "$row[3]";
$dbname1 = "$row[2]";
$tabelle1 ="$row[4]";
$anmeldung="$row[5]";

Verbindug mit der zweiten Datenbank
mysql_select_db($dbname1);

SQL Script, welches jetzt ausgeführt werden soll
$sql1 = ("SELECT * FROM $tabelle1 where werte like '%bLOG=$fahrzeug%' and werte like '%$datum%'");

Ausgabe der Informationen
$abfrage = mysql_db_query($dbname1,$sql1); or die(mysql_error());

und schreiben in eine Tabelle
?>
<table rules=row>
<?
while($array = mysql_fetch_array($abfrage)){
?>
<tr>
<td><?= $array[werte]; ?></td>
</tr>

<?
} // ENDE while($array = mysql_fetch_array($abfrage)){
?>
</table>
<?


mysql_close();


?>
</body>
</html>

Hier noch mal besonderen Dank an Kuli.

Schöne Grüße
Christof