Zur Navigation

SELECTBoxen Wert mit einem dynamischen Formular Weiterleiten

1 Peter

Moin, moin

mein Name ist Peter und ich würde mich sehr freuen, wenn ihr mir weiter helfen könnt.

Es handet sich um ein dynamische Formular, was schon ausgewählte Werte der Felder weiter übertragen soll (gleiche Datei, nur mit Rückgabe der Datenbankabfrage). Der übersichtshalber habe ich die DB-Abfrage wechgelassen.

Ziel soll es sein, dass nach dem betätigen des Button, die vorher gewählten Einstehlung, mit übergeben werden. Es wird wieder das selbe Formular geladen.

Beim Textfeld "Name" funktioniert es.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>dessin Auswahl</title>
</head>
<body>
<?php
// lokale Variablen setzen
$vars = array("sender", "name", "dessin");
foreach ($vars as $var)
$$var = $_POST[$var];

if ($sender)
printf("Die Daten wurden von %s aus verschickt.",
htmlentities($sender));
if (!isset($dessin))
$dessin = '01';
?>
<form action="daten06.php" method="post">
<input type="hidden" name="sender" value="daten06.php">

Name: <input name="name" size="25" maxlength="60"
value="<?php
printf("%s", htmlentities($name));
?>"><br>

Dessin: <select name="dessin">
<option value="<?php
printf("%s", htmlentities($dessin));
?>"selected></option><option value=01>01</option>
<option value=02>02</option>
<option value=03>03</option>
<option value=04>04</option>
<option value=05>05</option>
<option value=06>06</option>
<option value=07>07</option>
<option value=08>08</option>
<option value=09>09</option>
</select><br>
<input type="submit" value="Weiter">
</form>
</body>
</html>
Vielen Dank im voraus
Peter

19.01.2008 22:08 | geändert: 19.01.2008 22:08

2 Jörg

Hallo Peter,

ich gehe bei option Elementen folgendermaßen vor:

Zuerst definiere ich ein Array:

$dessins = array('01', '02', '03', '04', '05');

Dieses Array lese ich dann in einer foreach Schleife aus. In einer if-Anweisung überprüfe ich, ob der jeweilige Wert mit dem übertragen Wert übereinstimmt und setze im Fall des Falles ein ' selected'. Also so in etwa:

<select name="dessin">
<?php
foreach ($dessins as $dessin) {
    echo '<option value="' . $dessin . '"';
    if ($dessin == $_POST['dessin']) {
        echo ' selected';
    }
    echo '>' . $dessin . '</option>';
}
?>
</select>

19.01.2008 22:28 | geändert: 19.01.2008 22:30

4 Peter

Moin, moin ,

wenn ich nun jedem Wert ein Bild zuordnen möchte, dass auch gleich angezeigt wird, wenn man es in der selectbox auswählt.

Die Bilder haben als Bildnamen die ersten zwei Ziffern des Wertes in der Box.

Wie gehe ich ambesten vor um es zulösen ?

Ich dachte an:
 <img id="dessinbild" src="<?php $_POST['dessin']?>.gif" border="1">


Vielen Dank im voraus.

20.01.2008 12:41 | geändert: 20.01.2008 12:51

5 Jörg

Meinst du mit "gleich angezeigt" noch vor dem Absenden? Das müsste mit JavaScript gelöst werden. Oder soll nach dem Absenden ein über die Select-Box ausgewähltes Bild angezeigt werden?

20.01.2008 12:50

6 Peter

Hallo Jörg,

ja noch vor dem absenden, quasi als optische Auswahlhilfe.

Die jetzigen Bilder sind nur zur Probe, nacher werden die richtigen Dessin angezeigt.

20.01.2008 12:54

7 Jörg

Dann würde ich folgendermaßen vorgehen:

1. einen Container erstellen, der das Bild aufnehmen soll, wichtig ist dabei eine ID, die für das Script benötigt wird:
<div id="image"></div>

2. das select Element erhält einen onchange Handler, der die Funktion ShowImage aufruft:
<select name="dessin" onchange="ShowImage(this.options[this.selectedIndex].value);">

3. diese Funktion wird im head Bereich folgendermaßen definiert:
<script type="text/javascript">
function ShowImage(dessin)
{
  document.getElementById('image').innerHTML = '<img src="' + dessin + '.gif" alt="">';
}
</script>

20.01.2008 13:28

8 Peter

Super Idee, habe sie auch gleich umgesetzt.

Bis auf den ersten Wert, werden auch alle Bilder angezeigt.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
 <title>dessin Auswahl</title>
 <script type="text/javascript">
    function ShowImage(dessin)
     {
       document.getElementById('image').innerHTML = '<img src="' + dessin.substring(0,2) + '.gif" alt="">';
     }
</script>
</head>
<body>
<?php
  // lokale Variablen setzen
  $vars = array("sender", "name", "dessin");
  foreach ($vars as $var)
    $$var = $_POST[$var];
    
    //Array fuer dessin setzen
    $dessins = array('01 beige', '02 blau', '03 braun', '04 gelb', '05 gruen', '06 lila', '07 pink', '08 rot', '09 tuerkis');

  if ($sender)
    printf("Die Daten wurden von %s aus verschickt.",
           htmlentities($sender));

?>

<form action="daten06.php" method="post">
<input type="hidden" name="sender" value="daten06.php">

  Name: <input name="name" size="25" maxlength="60"
    value="<?php
      printf("%s", htmlentities($name));
    ?>"><br>

  Dessin: <select name="dessin" onchange="ShowImage(this.options[this.selectedIndex].value);">
  <option value="<?php
foreach ($dessins as $dessin) {
    echo '<option value="' . $dessin . '"';
    if ($dessin == $_POST['dessin']) {
        echo ' selected';
    }
    echo '>' . $dessin . '</option>';
}
?>"selected </select>
<div img id="image" border="1"</div><br>
  
 <input type="submit" value="berechnen">
</form>

</body>
</html>

Wenn ich auf die Eigenschaft vom nicht angezeigtem Bild gehe, soll folgendes Bild geladen werden:
http://www.windeko.de/php/%3Co.gif

siehe auch:
http://www.windeko.de/php/daten06.php

Ausserdem wird nach der Versendung, nicht das Bild zum Wert angezeigt.


20.01.2008 14:29 | geändert: 20.01.2008 15:20

9 Jörg

Das erste option Feld ist fehlerhaft:

<option value="<option value="01 beige">01 beige</option>

Edit:
da kommt der Fehler her - das fett-markierte ist überflüssig:
<option value="<?php

Die option Felder werden ja erst innerhalb der foreach Schleife erstellt

20.01.2008 15:42 | geändert: 20.01.2008 15:47

10 Peter

Habe ich geändert, Danke für die Fehlersuche.

Wie kann ich den die Bildanzeige so setzen, das von Anfang an ein Bild gezeigt wird?

Ich muss doch dem
id="image"
mit einem Wert vorbelegen können?

20.01.2008 16:02