Einzelnen Beitrag anzeigen
  #1  
Alt 12.01.2010, 00:15:02
betlor5 betlor5 ist offline
Anfänger
 
Registriert seit: Jan 2010
Alter: 44
Beiträge: 1
Multiple Select auswerten liefert Probleme

Hi,

ich weis, dass dies schön des öfteren diskutiert wurde, jedoch finde ich einfach nicht den Fehler in meinem Code und erhoffe mir hier hilfe:

HTML-Code:

HTML-Code:
<form method="post" action="Verwaltung.php" name="reih">
<table width="626" border="1">
  <tr>
    <td colspan="3"><strong>Bearbeite Reihenfolge der Subgruppen für:</strong></td>
  </tr>
  <tr>
   <td width="205" height="28">AG:</td><td colspan="2"><select name="agname" onchange="selectAgreihenfolge()">
     <option value="">W&auml;len</option>
     <?php
    for($i=0;$i<sizeof($ag_ary);$i++)
    {
        echo "<option value='".$ag_ary[$i][0]."'>".$ag_ary[$i][0]."</option>";
    }
    ?>
   </select></td>
    </tr>
  <tr>
    <td colspan="2"><select name="reihenfolge[]" id="reihenfolge" size="10" multiple="multiple">
    <option>Auswahl</option>
    </select>

</td>
    <td width="29"><table border="0" cellspacing="0" cellpadding="0"  width="100%">
      <tr>
        <td width="100%"  align="center"><input type="button" value="&uarr;" onClick="moveOptionsUp();"></td>
      </tr>
      <tr>
        <td align="center"><input type="button" value="&darr;" onClick="moveOptionsDown();"></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td colspan="3" align="center"><input type="submit" value="&Auml;ndern" /></td>
  </tr>
</table>
<input type='hidden' name='Auswahl' value='Navi' />
<input type="hidden" name="choose" value="suborder">
</form>

JS&PHP-Code:


PHP-Code:
function selectAgreihenfolge()
{
    removeAllOptions(document.reih.reihenfolge);
    <?php
    
for($a=0;$a<sizeof($ag_ary);$a++)
    {
        
$agid=$a+1;
        
$sort_subgruppen[0][0]="";
        for(
$j=0;$j<sizeof($subgruppen_ary);$j++)
        
//Sortiert die Subgruppen für die Anzeige in die eingestellte Reihenfolge
        
{
            if(
$subgruppen_ary[$j][1]==$agid)
            {
                
                
$t=$subgruppen_ary[$j][3];
                
$t--;
                
$sort_subgruppen[$t][0]=$subgruppen_ary[$j][0];
                
$sort_subgruppen[$t][1]=$subgruppen_ary[$j][1];
                
$sort_subgruppen[$t][2]=$subgruppen_ary[$j][2];
            }
        }
        
        echo 
"\tif(document.reih.agname.value == '".$ag_ary[$a][0]."')\n\t{\n";
        for(
$j=0;$j<sizeof($sort_subgruppen);$j++)
        {
            if(
$sort_subgruppen[$j][1]==$agid)
            {
                echo 
"\t\taddOption(document.reih.reihenfolge,'".$sort_subgruppen[$j][0]."', '".$sort_subgruppen[$j][0]."');\n";
            }
        }
        echo 
"\t}\n";
        
    }
    
?>
}

function moveOptionsUp()
{
    var selectOptions = document.reih.reihenfolge.getElementsByTagName('option');
    for (var i = 1; i < selectOptions.length; i++)
    {
        var opt = selectOptions[i];
        if (opt.selected)
        {
            document.reih.reihenfolge.removeChild(opt);
            document.reih.reihenfolge.insertBefore(opt, selectOptions[i - 1]);
        }
    }
}

function moveOptionsDown()
{
    var selectOptions = document.reih.reihenfolge.getElementsByTagName('option');
    for (var i = selectOptions.length - 2; i >= 0; i--)
    {
        var opt = selectOptions[i];
        if (opt.selected)
        {
            var nextOpt = selectOptions[i + 1];
            opt = document.reih.reihenfolge.removeChild(opt);
            nextOpt = document.reih.reihenfolge.replaceChild(opt, nextOpt);
            document.reih.reihenfolge.insertBefore(nextOpt, opt);
        }
    }
}
////////////////// 
function SelectAg(selectbox, selectbox2)
{    
    removeAllOptions(selectbox);
    addOption(selectbox,"Alle","Alle");
    <?php
         
for($i=0;$i<sizeof($ag_ary);$i++)
        {
            echo 
"if(selectbox2.value == '".$ag_ary[$i][0]."')\n\t{\n";
            
$ti=$i+1;
            for(
$j=0;$j<sizeof($subgruppen_ary);$j++)
            {
                if(
$subgruppen_ary[$j][1]==$ti)
                {
                    echo 
"\t\t addOption(selectbox,'".$subgruppen_ary[$j][0]."', '".$subgruppen_ary[$j][0]."');\n";
                }
            }
            echo 
"\t}\n";
        }
    
?>
    
}

function SelectAgd()
{
    SelectAg(document.drop_list.grp,document.drop_list.agname);
}

function removeAllOptions(selectbox)
{
    var i;
    for(i=selectbox.options.length-1;i>=0;i--)
    {
        selectbox.remove(i);
    }
}


function addOption(selectbox, value, text )
{
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;

    selectbox.options.add(optn);
}
</script>
und der PHP-Code zur Auswertung:
PHP-Code:
//---------Editieren der Reihenfolge
            
case "suborder":
                
//Zur DB verbinden
                
$verbindung=mysql_connect($host,$user,$pw) or die ($error_msg.="Konnte nicht zum Server verbinden.");
                
mysql_select_db($db) or die($error_msg.="Datenbank konnte nicht geladen werden.");
                
$selectedagid=agnametonum($_POST["agname"]);
                for(
$i=0;$i<sizeof($subgruppen_ary);$i++)
                
//Numeriert die Subgruppen der Ag entsprechend der User Anordnung.
                
{
                    if(
$subgruppen_ary[$i][1]==$selectedagid)
                    {
                        for(
$j=0;$j<count($_POST['reihenfolge']);$j++)
                        {
                            echo 
$_POST['reihenfolge'][$j];
                            if(
strcmp($subgruppen_ary[$i][0],$_POST['reihenfolge'][$j])==0)
                            {
                                echo 
"treffer";
                                
$tj=$subgruppen_ary[$j][3];
                                
$ti=$subgruppen_ary[$i][3];
                                
$t1=$i+1;
                                
$t2=$j+1;
                                
$neunum "UPDATE Subgruppe SET Nummer ='".$tj."' WHERE Id ='".$t1."'";
                                
$update mysql_query($neunum) or die($error_msg.="Konnte von Subgruppen nummer nicht neu umaendern.");
                                
$neunum "UPDATE Subgruppe SET Nummer ='".$ti."' WHERE Id ='".$t2."'";
                                
$update mysql_query($neunum) or die($error_msg.="Konnte von Subgruppen nummer nicht neu umaendern.");
                                
$j=count($_POST['reihenfolge']);
                            }
                        }
                    }
                }
                
                
dokumentieren("Subgruppen der AG: ".$_POST["agname"]." wurde erfolgreich umsortiert.","Verwaltung.php?Auswahl=Navi");
                
mysql_close($verbindung);
            break; 
dokumentieren ist hierbei eine Funktion die in ein Log schreibt und zu der Angegebenen Seite weiterleitet.

Dabei ist subgruppen in der Form:
Id Name AGId Aktive Nummer

und ag_ary:
Id Name Ordner Benutzer Id Aktive Nummer

Das Problem ist nun folgendes:

Es werden nur bestimmte bereiche umbenannt und jedesmal,ist hier die ausgabe das zulest ausgewählte element z.b. testtesttesttest, wenn test als letzes angeklickt wurde. Wie kann ich dies ändern, wenn ich die Reihenfolge des slect feldes haben möchte?

Btw. Ich weis, dass
PHP-Code:
$update mysql_query($neunum) or die($error_msg.="Konnte von Subgruppen nummer nicht neu umaendern."); 
nicht funktioniert.

MFG
betlor5
Mit Zitat antworten