• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variable nur ändern, wenn im select-feld geklickt wird!

Mahlzeit,

ich habe den nachfolgenden Quellcode und möchte die Variable $_SESSION['filename_with_path'] nur auf "0" setzen, wenn im Select-Feld name='selection_folder' geändert bzw. geklickt wird.

Mein Fehler ist, dass er auch bei Auslösung andere Ereignisse durch Click die Variable auf 0 setzt! Die Lösung mit dem value-Wert aus dem Select-Feld "filename_with_path" scheidet leider aus, da ich nicht weiß, welche Dateien sich in den Ordnern befinden.

PHP:
echo "<form action='test.php' method='POST'>";
...
if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
    if (isset($_POST['filename_with_path']))
        {    $_SESSION['filename_with_path'] = $_POST['filename_with_path']; }
    if (isset($_POST['selection_folder']))
        {    $_SESSION['selection_folder'] = $_POST['selection_folder'];
            $_SESSION['filename_with_path'] = "0";    }
    if (isset($_POST['line_count']))
        {    $_SESSION['line_count'] = "1"; }    else $_SESSION['line_count'] = "0";
    }
    else
    {
        $_SESSION['selection_folder'] = "0";
        $_SESSION['filename_with_path'] = "0";
        $_SESSION['line_count'] = "0";
        
    }
...
echo "<select name='selection_folder' onClick='this.form.submit();'>";
    echo "<option value='dirname' >dirname</option>";
echo "</select>";
....
echo "<select multiple='multiple' name='filename_with_path' onClick='this.form.submit();'>";
    echo "<option value='filename' >filename</option>";
echo "</select>";
...
echo "<input type='checkbox' name='line_count' value='1'"; if ($_SESSION['line_count'] == "1") { echo "checked"; }echo " onClick='this.form.submit();'>ZeilenNr anz.";
...
echo "</form>";
 
Du könntest dir den aktuellen Wert von selection_folder in einem Hidden-Feld merken und dann nach Absenden des Formulars damit vergleichen. Oder eine Variable in der Session setzen ginge auch.
 
Immer wieder erstaunlich. wie schwer sich Manche mit dem logischen Denken schwer tun, wenn es um Programmieren geht. Ein Beispiel:
PHP:
<?php

   $last = "A";
   $data = array ("A", "B", "C", "D", "E");
 
   if (isset($_POST['last']))
   {
       $last   = $_POST['last'];
     
       if ($last != $_POST['select'])
         $message = "Geändert";
       else
         $message = "Nicht geändert";
   
       $last   = $_POST['select'];
   }
?>
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8" />
    <title>Test</title>
  </head>
  <body>
<?php if (isset($message)) echo $message; ?>
  <form action="" method="post">
    <select name="select">
<?php
    foreach ($data as $value)
    {
       $selected = ($last == $value) ? "selected" : "";
       echo "<option value='$value' $selected>$value</option>\n";
    }
    echo "</select>
                <input type='hidden' name='last' value='$last' >\n";
?>
 
  <input type="submit" name="submit" value="Senden">
  </form>
  </body>
</html>
 
Tja, und das verstehe ich nicht ... Ablauf ist der Gleiche...werde als Notlösung deine Variante wählen - wollte aber eigentlich ohne hidden-Feld arbeiten
 
Zurück
Oben