# Auswahlfeld mit SQL-Daten



## computerpap (2. Mai 2008)

Hallo

Ich bräuchte mal Hilfe bei folgenden Problem:

Ich habe in einem Formular ein Auswahlfeld und einen Submit-Button. Weiterhin habe ich eine MySQL-Datenbank, diese hat eine Tabelle "Anlagen". Die einzelnen Spalten heißen "ID, Name, Text, Batterie". Ich möchte jetzt, dass ich im Auswahlfeld alle Datensätze angezeigt bekomme, die in der Spalte "Name" stehen. Wenn ich eine Auswahl selektiert habe, soll nach Klicken auf den Submit-Button der Rest aus den anderen Spalten zu diesen Datensatz angezeigt werden. Leider habe ich keine Ahnung wie der Code aussehen muß. Vielleicht hat ja einer ein paar Ansätze für mich.

MfG
computerpap


----------



## computerpap (2. Mai 2008)

Ich hab mal folgendes zusammen geschrieben:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Anlagen eingeben</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="Style.css">
</head>
<body>
<p><a href="home.html">Home</a></p>
<h3>Anlagen &Uuml;bersicht</h3><br><br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  
	method="post">
<select name="DB" size="5">
 <option>
 <?php

if (!empty($_POST["submit"])) {
include("zugriff.inc.php");
$sql = "SELECT Anlagenname FROM anlage";
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
  echo "$row[Anlagenname]";
}
}
?>

 </option>
<input type="submit" value="Datensatz suchen"  
	name="submit">
</form>


</body>
</html>

Aber es t nicht so, wie ich es will. In den Auswahlfeld steht erst was drin, wenn ich auf den Button klicke und dann stehen die Datensätze hintereinander und nicht untereinander wie in einem Auswahlfeld üblich. Wer kann mir helfen?

MfG
computerpap


----------



## DeeJTwoK (2. Mai 2008)

Ich kann dir wahrscheinlich helfen 


```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Anlagen eingeben</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="Style.css">
</head>
<body>
<p><a href="home.html">Home</a></p>
<h3>Anlagen &Uuml;bersicht</h3><br><br>

<?php
if (empty($_POST["submit"])) {
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  
	method="post">
<select name="DB" size="5">

<?php
include("zugriff.inc.php");
$sql = "SELECT Anlagenname FROM anlage";
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
  echo " <option>". $row[Anlagenname] ." </option>";
}
?>

<input type="submit" value="Datensatz suchen"  
	name="submit">
</form>

<?php
} else {
//Anzeige des richtigen Datensatzes aus der DB mit Hilfe von $_POST["DB"]
}
?>

</body>
</html>
```

So ungefähr sollte das funktionieren.

Gruß,
D.


----------



## computerpap (2. Mai 2008)

Hallo

Dank deiner Hilfe bin ich schon ein ganzes Stück weiter. Die Datensätze werden jetzt untereinander im Auswahlfeld angezeigt. Vielen Dank. Weißt du auch, wie ich nach Klick auf den Button den Rest des selektierten Datensatzes angezeigt bekomme?

MfG
computerpap


----------



## kalle123456 (2. Mai 2008)

Hallo,

vielleicht so, habe es nicht getestet, also verzeihe mir wenn du Fehler findest. 


```
<?php
include("zugriff.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Anlagen eingeben</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="Style.css">
</head>
<body>
<p><a href="home.html">Home</a></p>
<h3>Anlagen &Uuml;bersicht</h3><br><br>
<?
if(isset($_POST["submit"]) && is_numeric($_POST['DB'])){
   $query =  mysql_query("SELECT * FROM anlage WHERE ID = '".mysql_real_escape_string($_POST['DB'])."' ");// mysql_query vergessen :)
   $data = mysql_fetch_row($query);
   echo $data[0].'<br />'; //ID ?
   echo $data[1].'<br />'; //Name ?
   echo $data[2].'<br />'; //Text ?
   echo $data[3]; //Batterie ?
}else{
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<select name="DB" size="5">
<?php
   $sql = "SELECT ID, Anlagenname FROM anlage ORDER BY Anlagenname ASC ";
   $result = mysql_query($sql);
   while ($row = mysql_fetch_object($result)){
      echo '<option value="'.$row->ID.'">'.$row->Anlagenname.'</option>';
   }
?>
</select>
<input type="submit" value="Datensatz suchen" name="submit">
</form>
<?}?>
</body>
</html>
```


Gruss


----------



## computerpap (2. Mai 2008)

Hallo
Danke für die schnelle Hilfe. Leider t das Script nicht, aber das ist kein Problem. Ich werd mal versuchen den Code zu verstehen. Mal schauen ob ich dahinter steigen kann, was du da zusammen geschrieben hast. Nochmals vielen Dank. Sollte jemand noch weitere Ideen haben, dann laßt es mich wissen.

MfG
computerpap


----------



## kalle123456 (2. Mai 2008)

Wußte ich hatte was vergessen, also jetzt siehe Oben die Änderung.


----------



## computerpap (2. Mai 2008)

Hallo Kalle

Jetzt wird das Auswahlfeld wieder mit den Daten aus der DB gefüllt. Allerdings passiert nichts, wenn ich auf den Button klicke.

MfG
computerpap


----------



## kalle123456 (2. Mai 2008)

Sollte aber, stimmen deine Feldbezeicher(ID, usw.)? Du musst natürlich eine Auswahl selektieren.


----------



## computerpap (2. Mai 2008)

Sorry, war mein Fehler. Das Feld "ID" heißt "AnlagenID". Habe das Script entsprechend geändert, jetzt funktioniert es. Super, vielen, vielen Dank. Bei weiteren Fragen werde ich mich nochmal melden.

MfG
computerpap


----------



## computerpap (2. Mai 2008)

Und da ist schon meine nächste Frage. In meiner DB speichere ich in der Spalte "Versionstext" einen Link zu einer Textdatei, z.B. "d:\test.txt". Jetzt soll nicht der Pfad angezeigt werden, sondern ein Link zu dieser Datei. Habe mal folgende Änderung gemacht, aber fuktioniert leider nicht:

   echo $data[0].'<br />'; //AnlagenID ?
   echo $data[1].'<br />'; //Anlagenname ?
   echo $data['<a href="' .$row['Versionstext']. '">' .$row['Versionstext']. '</a>'; ].'<br />'; //Versionstext ?
   echo $data[3].'<br />'; //MessmittelID ?
   echo $data[4].'<br />'; //SPSBattID ?
   echo $data[5].'<br />'; //AbteilungID ?

Es soll praktisch "d:\test.txt" als Link angezeigt werden
Wie muß ich den Code ändern?


----------



## kalle123456 (2. Mai 2008)

Du musst das data[] über den index ansprechen. 
Falsch: $row['Versionstext']
Richtig: echo '<a href="' .$data[2]. '">' .$data[2]. '</a><br />'; //Versionstext ?


----------



## computerpap (2. Mai 2008)

Sorry, aber wie muß ich es in den Code einbinden?


----------



## kalle123456 (2. Mai 2008)

Wenn Versionstext das dritte Feld in der Tabelle ist, dann so z.B. .

echo '<a href="' .$data[2]. '">' .$data[2]. '</a><br />'; //Versionstext ?


----------



## computerpap (2. Mai 2008)

Die Zeile hab ich soweit verstanden, aber wo im Script muß die rein?


----------



## kalle123456 (2. Mai 2008)

Suche hier nach

```
echo $data[0].'<br />'; //ID ?
   echo $data[1].'<br />'; //Name ?
   echo $data[2].'<br />'; //Text ?
   echo $data[3]; //Batterie ?
```
und ersetze es hiermit.

```
echo $data[0].'<br />'; //ID ?
   echo $data[1].'<br />'; //Name ?
   echo '<a href="'.$data[2].'">'.$data[2].'</a><br />'; //Versionstext ?
   echo $data[3]; //Batterie ?
```


----------



## computerpap (2. Mai 2008)

OK, jetzt habe ich den Link, allerdings funktioniert der noch nicht richtig. Ich werd erstmal nach den Fehler suchen und meld mich dann nochmal. Bis dahin und nochmals vielen Dank.

MfG
computerpap


----------



## DeeJTwoK (3. Mai 2008)

Der Fehler liegt wahrscheinlich daran, dass du einen Pfad wie "D:\datei.txt" in der Datenbank stehen hast. Und da wir uns hier im Internet befinden, wird dieser Link nicht funktionieren, da er auf eine lokale Datei verweist. Man könnte das ganze -glaube ich- so machen:

```
<a href="file:///d:/datei.txt">Link</a>
```
Allerdings wird der Link dann nur bei dir auf dem PC funktionieren, weil nur du die Datei an dieser Stelle auf der Platte hast.

Du müsstest also die Datei auf den Server hochladen, wenn dieser Datenbankeintrag erstellt wird, und den Pfad zur hochgeladenen Datei in der DB speichern.


----------



## computerpap (3. Mai 2008)

Der Webserver ist ein PC im Büro. Auf den greifen dann nur die anderen PC's zu. Auf diesen Server liegen auch die Dateien. Praktisch eine Art Intranet. Der Webserver ist nicht per Internet zugänglich. Ich hatte es schon einmal geschafft, Dateien die in Form von "d:\test.txt" gespeichert sind, aufzurufen und im Browser darzustellen. Es liegt am Script, womit ich die Dateien in die DB schreibe. In der DB steht als Eintrag nicht "d:\test.txt" sondern nur "test.txt".


----------



## computerpap (3. Mai 2008)

Hat jemand ne Idee, wie man den kompletten Pfad in eine DB speichern kann. Ich hatte es schon mal, aber ich komm nicht mehr drauf wie es geht.


----------



## computerpap (6. Mai 2008)

Hallo
Habe jetzt nochmals alles ausprobiert. Wenn ich mein Script zum Eintragen der Daten mit Firefox ausführe, steht als Datenbankeintrag z.B. "test.txt". Genau das gleiche steht dann auch als Link, wenn ich das Script zum Auslesen der Datenbank unter Firefox ausführe. Nutze ich den IE, dann steht in der DB der volle Dateipfad, als "D:\test.txt". Beim Auslesen der DB steht dann auch als Link "D:\test.txt", allerdings öffnet sich die Datei bei anklicken nicht. Wenn ich den Mauszeiger über den Link schiebe steht in der Statuszeile des Firefox
"http://localhost/Anlagen/test.txt" wenn ich das beim IE mache, steht in der Statuszeile "file:///d:/test.txt". Kann mir das einer mal erklären?

MfG
computerpap


----------

