Probleme mit absenden eines Formulars

evoleena

Erfahrenes Mitglied
Hallo Ihrs,

weiß gar nicht ob es ihr her passt aber so halb denke ich schon.
Und zwar habe ich ein Formular gebaut mit 2 dynamsichen Auswahllisten die Einträge kommen aus der Datenbank und beide sind abhängig von einander.

Problem dabei ist, das mein Sende Button immer leer ist und ich leider nicht weiß woran es liegt.
wenn ich es mit GET als Methode mache und den Knopf drücke steht aber speichern = speichern drin, aber trotzdem wird es als leer erkannt.

ich hatte die vorlage hier mal aus einen threat und hatte sie angepasst finde ihn nur leider nicht mehr. deshalb hier mal der Quelltext von den zwei Auswahllisten, insgesamt habe ich das ganze 5 mal!!

ich hoffe ihr könnt mir helfen und erschreckt nicht an dem vielen Quelltext

PHP:
 <script language='JavaScript' type='text/JavaScript'>
 function my_func()
 {
 	document.my_form.submit();
 }
 </script>
 <form method="POST" name="my_form" action="menue.php">
   <table width="44%" height="107" border="1" align="center">
     <tr> 
       <td> 
         <?   $my_auswahl=$_POST['my_auswahl'];       
#*******************************************************************************                                                               
# 							Auswahl würde getroffen	                             
#*******************************************************************************
//Prüfen ob schon was ausgewählt wurde oder ob das Dokument erstmalig gestartet wurde
 if (isset($my_auswahl))
 {
	//Abfrage mit dem gewählten Autor
    $result_zuvor =  mysql_db_query($db_buecher,"SELECT name, vorname FROM autor WHERE autornr='".$my_auswahl."'"); 
    $zuvor_name_box = mysql_fetch_array($result_zuvor);

    //Abfrage aller Autoren
    $result_box = mysql_db_query ($db_buecher,"SELECT name, vorname, autornr FROM autor ORDER BY name"); 
    $checklog_box =  mysql_num_rows($result_box);
    
	//Auswahlbox 1 befüllen mit gewählten Autor und allen Autoren
    echo"<select name='my_auswahl' onChange='javascript:my_func()' >";
	while ($daten = mysql_fetch_array($result_box))
    {
        echo"<option value='".$daten['autornr']."'>".$daten['name'].", ".$daten['vorname']."</option><br>";
	} 
     
    //Zuvorgewählten Autor in Auswahlliste selektieren
    echo"<option value='$my_auswahl' SELECTED>".$zuvor_name_box['name'].", ".$zuvor_name_box['vorname']."</option>";
 }
 else
 {
#*******************************************************************************                                                                           
#						Wenn Auswahl leer ist                                                                                         
#*******************************************************************************
  
    //Abfrage für Auswahlliste 1 + befüllen
    $result_box = 'SELECT name,vorname FROM autor ORDER BY name';
	$result = mysql_db_query($db_buecher,$result_box); 
    $checklog_box =  mysql_num_rows($result);

    echo"<select name='my_auswahl' onChange='javascript:my_func()' >";
    echo"<option value='' SELECTED>bitte wählen</option>";
	$select =mysql_db_query($db_buecher,"SELECT * FROM autor ORDER BY name");
    while ($daten = mysql_fetch_array($select))
    {
        echo"<option value='".$daten['autornr']."'>".$daten['name'].", ".$daten['vorname']."</option><br>";
	}
         
 }?>
    </td>
       <td> 
 <?        
#*******************************************************************************                                                                          
# 		2.Auswahlliste mit den Entsprechenden Werten aus DB füllen           
#*******************************************************************************  
  
  if (isset($my_auswahl))
  {
	//Auswahlliste 2 füllen
    $result_untergrp = mysql_db_query($db_buecher,"SELECT buch_id, titel FROM buch WHERE (autor='".$my_auswahl."') ORDER BY titel ASC"); 
    echo"<select name='my_untergp'>";
    //Abfrage ob $result_untergrp ungleich 0 wenn gleich 0 -> Ausgabe, das kein Buch dieses Autors vorhanden ist
    while ($daten = mysql_fetch_array($result_untergrp))
    {        
        echo"<option value='".$daten['buch_id']."'>".$daten['titel']."</option>";      
    }
    echo"</select>";
  }             
  else
  {
  	echo"noch nichts gewählt... ";
  }
 ?>        
         </td>
    </tr>
    <tr>
      <td colspan="2" align = "center">
        <input type="submit" value="speichern" name="speichern">
      </td>
    </tr>
  </table>
 </form>
 <?
if(!empty($speichern))
{
   	echo $my_untergp."<br>";
    	echo $my_auswahl;
}
 
Zuletzt bearbeitet:
Hallo!

Ich weiß zwar nicht genau, was du mit "SendeButton ist leer" meinst, aber ich glaube dein Problem besteht darin, dass die Variabel '$speichern' keinen Wert hat! Eventuell funktionierts wenn du zum Schluss anstatt

PHP:
if(!empty($speichern))
{
       echo $my_untergp."<br>";
        echo $my_auswahl;
}

das hier nimmst:

PHP:
if(!empty($_POST['speichern']))
{
       echo $my_untergp."<br>";
        echo $my_auswahl;
}

Ich persönlich schreib $_POST, $_GET bzw. $_REQUEST etc. nie in eine neue Variable wie du es hier gemacht hast:

PHP:
$my_auswahl=$_POST['my_auswahl'];

Denn wahrscheinlich wolltest du das auch mit dem $_POST['speichern'] machen und hast das dann vergessen, was dann möglicherweise deinen Fehler ausgelöst hat.

Außerdem ist es nicht wirklich sinnvoll. Wäre das selbe wenn du zum Beispiel das machen würdest:

PHP:
$name="Peter";
$vorname=$name;

Ich hoffe ich konnte dir helfen.

mfg
nero_85
 
Ich hab das bisher aber immer so gemacht und da gabs nie Probleme!!

nur mit dem unterschied, das ich diesmal JavaScript mit drin habe.
Ich vermute auch das es da irgendwie ein Problem gibt, aber leider habe ich nicht viel ahnung von JavaScript

und das mit dem
PHP:
 $_POST['...']

macht man ja, beim absenden des Formulars, um die werte zu übermitteln, die mit hilfe von POST übergeben wurden

das mit Speicher button leer heißt, das nicht erkannt wird, das der button gedrückt wurde
 
Zuletzt bearbeitet:
Naja, es ist ja auch nicht ein direkter Fehler, bloß eine potenzielle Fehlerquelle! Ich habe das auch lange gemacht, weils mir einfacher vorkam, die kürzeren Variablen zu schreiben. Aber bei mehreren 100 Code-Zeilen kann es dann und wann auch schon mal vorkommen, dass man zuerst vergisst die POST-Variable oder GET-Variable oder was auch immer in eine eigene Variable zu packen, aber man trotzdem Versucht diese eigene Variable zu benutzen, welche jedoch logischerweise dann leer ist! ;)

Aber jeder hat seine Vorlieben.

mfg
nero_85
 
Okay verstehe was du meinst! werds mir merken.



Edit:
Hab grad festgestellt das es damit geht. Sehr komisch. So recht verstehe ich das aber nicht
 
Zuletzt bearbeitet:
das Problem ist ganz einfach. Es liegt an deiner Reihenfolge, zum einen belegst my_auwahl ständig mit nem Wert durch dein onChange. Zum anderen kannst nicht ohne Zuweisung von $speichern drauf zugreifen, das die Var immer leer ist dürfte einleuchtend sein. und ich sehe kein
PHP:
$speichern = $_POST["speichern"]
, demnach ist $speichern einfach leer und if nie erfüllt. Eben wegen dieser Fehlerquelle macht man es eigentlich auch nicht so.

Demnach: Nero_85, vollkommen richtig erkannt!
 
Zuletzt bearbeitet:
Mhh.. naja mag sein, aber bei anderen Scripten habe ich das bisher auch immer so gemacht, und da geht es ja alles. nur bei diesem nicht.
 
Zurück