Anzeige in Combo-Box

NullAhnung

Aktives Mitglied
Guten Abend

ich habe ein Problem... ich habe eine Auswahlbox in einem Formular, nun möchte ich, dass beim Wiederladen der ausgewählte Punkt in der Liste angezeigt wird...

CODE <?
$_SESSION['Seitenzahl']=$_POST['Seitenzahl'];
?>




CODE <SELECT ID="FormsComboBox2" NAME="Seitenzahl" CLASS="lable" STYLE="height: 24px; width: 400px;"
<?php echo $_SESSION['Seitenanzahl'];?>
>
<OPTION VALUE="0" SELECTED="SELECTED">Bitte treffen Sie eine Auswahl!</OPTION>
<OPTION VALUE="100">unter 10 Seiten</OPTION>
<OPTION VALUE="110">10 Seiten</OPTION>
<OPTION VALUE="120">15 Seiten</OPTION>
<OPTION VALUE="130">20 Seiten</OPTION>
<OPTION VALUE="140">25 Seiten</OPTION>
<OPTION VALUE="150">30 Seiten</OPTION>
<OPTION VALUE="160">40 Seiten</OPTION>
<OPTION VALUE="170">50 Seiten</OPTION>
<OPTION VALUE="180">60 Seiten</OPTION>
<OPTION VALUE="190">70 Seiten</OPTION>
<OPTION VALUE="200">80 Seiten</OPTION>
<OPTION VALUE="210">90 Seiten</OPTION>
<OPTION VALUE="220">100 Seiten</OPTION>
<OPTION VALUE="230">120 Seiten</OPTION>
<OPTION VALUE="240">140 Seiten</OPTION>
<OPTION VALUE="250">160 Seiten</OPTION>
<OPTION VALUE="260">180 Seiten</OPTION>
<OPTION VALUE="270">200 Seiten</OPTION>
</SELECT>

 
Unabhängig vom Problem sollte hier dringend mal die Sicherheit der Anwendung überprüft werden. Bei dem Code kann man viel über die Eingabe manipulieren.

Zum Problem:

Wie wäre es mit einer Kontrolle welchen Wert deine Variable hat? Vorzugsweise mit einer Switch Case Schleife?
 
uiiih jetzt kapier ich garnichts mehr...

will ja nur lernen...grins

hab die combo-box einfacher gemacht, aber krieg den kram nicht hin

CODE <SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;"
<?php echo $_SESSION['ZZ'];?>
>
<OPTION VALUE="0">Bitte Wählen</OPTION>
<OPTION VALUE="10">WERT 10</OPTION>
<OPTION VALUE="20">WERT 20</OPTION>
</SELECT>



also $_SESSION['ZZ'] wird gesetzt, aber zeigt beim Wiederladen nicht z.B WERT 10 an sondern Bitte Wählen...
 
Oh das habe ich dann falsch verstanden glaube ich.

Daher mal ein paar Fragen:

Der User soll über das Formular einen Wert festlegen, der dann beim wiederholten Aufruf dieses Formulars als "vorselektiert" im Dropdown erscheinen soll, richtig?
Wird der User dann wieder auf dieses Formular geleitet oder hat er eine Navigation wo er darauf klickt? (z. B. Login-Bereich)
Soll das ganze ausgelöst werden, wenn der Besucher eingeloggt ist oder generell wenn er die Seite besucht?

Das geht leider nicht so wirklich aus deiner Frage hervor. Aber anders kann ich mir nicht erklären, warum du mit SESSIONS arbeiten willst. Zumal du vorher die SESSION definieren musst, was du in deinem Code nicht machst. Das sähe dann etwa wie folgt aus:

CODE
<?php session_start(); ?> // Muss in jeder Datei aufgerufen werden, vor sämtlichen anderen Codes, in der die Session gelten soll


In deinem Formular musst du dann folgendes setzen:

CODE
<?php $_SESSION['ZZ'] = $ZZ; ?>



Da du dann einen Wert für $_SESSION['ZZ'] hast kannst du ein Switch / Case durchführen:


CODE
switch ($_SESSION['ZZ']) {
case 0:
echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
<OPTION VALUE="0" SELECTED>Bitte Wählen</OPTION>
<OPTION VALUE="10">WERT 10</OPTION>
<OPTION VALUE="20">WERT 20</OPTION>
</SELECT>";
break;
case 10:
echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
<OPTION VALUE="0">Bitte Wählen</OPTION>
<OPTION VALUE="10" SELECTED>WERT 10</OPTION>
<OPTION VALUE="20">WERT 20</OPTION>
</SELECT>";";
break;
case 20:
echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
<OPTION VALUE="0">Bitte Wählen</OPTION>
<OPTION VALUE="10">WERT 10</OPTION>
<OPTION VALUE="20" SELECTED>WERT 20</OPTION>
</SELECT>";";
break;
}



Aber ich rate immernoch an, die Anwendung zu schützen. Stichwort SQL Injektion etc. Sonst kannst du Schadcode einspeisen in deinem Script. Kontrolliere z. B. vorher ob es sich um eine Zahl handelt.


CODE
if (intval($_SESSION['ZZ']) == $_SESSION['ZZ'])
{
...
}
else
{
echo "Variable ZZ ist keine Zahl!";
}

 
na so kompliziert ist es garnicht...

also ...

CODE $_SESSION['ZZ']=$_POST['ZZ'];


wird gesetzt

die werte werden auch nicht für eine Datenbank benutzt, sondern auf der nächsten Seite wird nur dann eine berechnung durchgeführt....

ich habe ein Formular mit verschiedenen felder zum eingeben, beim absenden wird geprüft ob alle felder richtig ausgefüllt sind...ist dies nicht der fall wird das formular wieder geladen mit den entsprechenden hinweisen...soweit funktioniert es auch

aber bei dieser Auswahlbox ist das problem, wenn der user z.b. den WERT 10 ausgefüllt hat, dann wird eine $_SESSION['ZZ'] mit dem wert=10 gegründet.. das klappt auch

aber beim neu laden, weil vielleicht ein anderes Feld nicht ausgefüllt war, steht der zeiger wieder auf "Bitte wählen" und nicht auf "WERT 10"...und bei erneutem Laden, weil der dusselige User wieder ein Feld vergessen hat auszufüllen wird die $_SESSION['ZZ'] auf 0 gesetzt und dann passt wieder alles nicht....

ich weiß halt nicht wo ich das reinschreiben soll...

also der user kann das formular nicht verlassen, solange es nicht richtig ausgefüllt ist...dieses formular wird immer wieder neugeladen...
 
Achso, dann machs nicht über sessions übergib auf deiner Seite die nach dem Formular Abschicken geladen wird folgende URL: deinedomain.de/fomulardatei.php?wert=$_POST

Dann kannst du auf der Formulardatei folgendes prüfen:

CODE
if (isset($_GET['wert']))
{
switch ($_GET['wert'])
{
  case 0:
      echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
                <OPTION VALUE="0" SELECTED>Bitte Wählen</OPTION>
                <OPTION VALUE="10">WERT 10</OPTION>
                <OPTION VALUE="20">WERT 20</OPTION>
               </SELECT>";
      break;
  case 10:
      echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
                <OPTION VALUE="0">Bitte Wählen</OPTION>
                <OPTION VALUE="10" SELECTED>WERT 10</OPTION>
                <OPTION VALUE="20">WERT 20</OPTION>
               </SELECT>";";
      break;
  case 20:
      echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
                <OPTION VALUE="0">Bitte Wählen</OPTION>
                <OPTION VALUE="10">WERT 10</OPTION>
                <OPTION VALUE="20" SELECTED>WERT 20</OPTION>
               </SELECT>";";
      break;
}
}


Wie gesagt wichtig wäre eventuell auch noch zu überprüfen ob es eine Zahl ist. (Siehe meinen Post oben)

Vielleicht helfen dir folgende Seiten auch dabei das ganze noch etwas zu verstehen:
http://php.net/manual/de/features.sessions.php
http://www.tutorialspoint.com/php/php_get_post.htm
 
danke...

aber ich würde es gerne schon über die Sessions machen...weil alle anderen Eingabefelder auch so sind...grins
 
Okay ist zwar umständlicher, aber wenn du das so willst.

Kann ich eigentlich nur auf meinen Beitrag oben verweisen.
Wichtig ist halt, dass auf du auf jeder Seite die die Sessions benutzen vor sämtlichen Codes die Session startest mit

CODE <?php session_start(); ?>


Den Wert der Sessions solltest du dann nach dem Abschicken festlegen mit:


CODE
<?php $_SESSION['ZZ'] = $_POST['ZZ']; ?>



Und im Formular machst du dann den Switch:


CODE
switch ($_SESSION['ZZ']) {
case 0:
echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
<OPTION VALUE="0" SELECTED>Bitte Wählen</OPTION>
<OPTION VALUE="10">WERT 10</OPTION>
<OPTION VALUE="20">WERT 20</OPTION>
</SELECT>";
break;
case 10:
echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
<OPTION VALUE="0">Bitte Wählen</OPTION>
<OPTION VALUE="10" SELECTED>WERT 10</OPTION>
<OPTION VALUE="20">WERT 20</OPTION>
</SELECT>";";
break;
case 20:
echo "<SELECT ID="select_anrede" NAME="ZZ" TABINDEX="1" STYLE="height: 24px;">
<OPTION VALUE="0">Bitte Wählen</OPTION>
<OPTION VALUE="10">WERT 10</OPTION>
<OPTION VALUE="20" SELECTED>WERT 20</OPTION>
</SELECT>";";
break;
}



Dann müsste es eigentlich funktionieren.
 
funktioniert nicht...

du hast in deinem code einmal </SELECT>";
und dann
</SELECT>";";

kann das sein?

und geht das mit einer while-schleife nicht.... bei 3 einträgen geht es ja noch....
 
ich will ja nicht meckern, aber der switch ist hier so was von ...

bau die options über ein array und eine schleife (for) auf. prüfe den wert mit if innerhalb der schleife. alles andere bläht du den code nur unnötig auf.
 
QUOTE (wurzel @ Di 8.05.2012, 09:31) ich will ja nicht meckern, aber der switch ist hier so was von ...

bau die options über ein array und eine schleife (for) auf. prüfe den wert mit if innerhalb der schleife. alles andere bläht du den code nur unnötig auf.

Es war ein Beispiel er könnte das select zeug auch ausm switch vorlassen. Aber ich wollte ihn nicht zu sehr verwirren mit noch mehr Schleifen. Scheinbar fehlt hier schließlich schon das Grundwissen zu diversen Sachen. (Sorry, ist nicht böse gemeint)

Ich weiß halt nicht wozu man hier unbedingt sessions benötigt, kann man ja gut über GET regeln und wäre einfacher.
 
das mit den grundkenntnissen stimmt....

ich habe das schon auf grundlage einer Datenbank hinbekommen, das ist kein problem mit while.... aber da habe ich die Namen der Datenfelder mit denen ich vergleich...

aber bei vorgegebenen werte scheitere ich kläglich...
 
Ist aber gar nicht so schwer.

Im Grunde hast du ja eine Formular Datei (z. B. formular.php).
Auf dieser Seite erstellst du dein Formular. z. B:

CODE
<form action="check.php" method="post">
<select id="select_anrede" name="ZZ" tabindex="1" style="height: 24px;">
<?php
$i = 1;
if (isset($_GET['wert']))
{
switch ($_GET['wert'])
{
  case 10:
     echo " <OPTION VALUE="0" >Bitte Wählen</OPTION>
               <OPTION VALUE="10" SELECTED>WERT 10</OPTION>
               <OPTION VALUE="20">WERT 20</OPTION>
               <OPTION VALUE="30">WERT 30</OPTION>";
     break;
 case 20:
     echo " <OPTION VALUE="0">Bitte Wählen</OPTION>
               <OPTION VALUE="10">WERT 10</OPTION>
               <OPTION VALUE="20" SELECTED>WERT 20</OPTION>
               <OPTION VALUE="30">WERT 30</OPTION>";
     break;
case 30:
     echo " <OPTION VALUE="0">Bitte Wählen</OPTION>
               <OPTION VALUE="10">WERT 10</OPTION>
               <OPTION VALUE="20">WERT 20</OPTION>
               <OPTION VALUE="30" SELECTED>WERT 30</OPTION>";
     break;
default:
     echo " <OPTION VALUE="0" SELECTED>Bitte Wählen</OPTION>
               <OPTION VALUE="10">WERT 10</OPTION>
               <OPTION VALUE="20">WERT 20</OPTION>
               <OPTION VALUE="30">WERT 30</OPTION>";
     break;
}
}
else
{
echo " <OPTION VALUE="0" SELECTED>Bitte Wählen</OPTION>
               <OPTION VALUE="10">WERT 10</OPTION>
               <OPTION VALUE="20">WERT 20</OPTION>
               <OPTION VALUE="30">WERT 30</OPTION>";
}
?>
</select>
</form>



Auf der check.php prüfst du die Eingaben dann und wenn was falsch ist gibst du aus:


CODE
$wert = $_POST['ZZ'];
echo "Leider ist ... nicht richtig ausgefüllt. <a href='formular.php?wert=$wert'>Zurück</a>";



Dadurch übergibst du den wert dann mit der URL. Wenn du mehrere Variablen übergeben musst, dann machst du formular.php?wert=$wert&zahl=$zahl&weiteres=$weiteres

Da kannst du eigentlich auch nichts verkehrt machen dann.

Wenn das läuft kannst du es immernoch optimieren wie wurzel das meinte.

Das mit der for Schleife wäre dann in etwa so:


CODE for ($i>0; $i<201; $i=$i+10)
{
if ($i == $_GET['wert'])
{
echo "<OPTION VALUE='$i' SELECTED>Wert $i</OPTION>";
}
else
{
echo "<OPTION VALUE='$i'>Wert $i</OPTION>";
}
}
 
so jetzt kommen wir der sache näher....

na das mit der case-geschichte finde ich halt aufwändig...gut bei 3 listeneinträge geht es ja noch...aber wenn ich eine Auswahlliste mit 100 Einträgen habe...

bisher habe ich auch bei der Liste immer auf eine Datenbank zugegriffen:
CODE <SELECT ID="Land" NAME="Land" TABINDEX="8" STYLE="font-family: Arial,Helvetica,Geneva,Sans-serif; font-size: 10pt; height: 24px;"
>
<? while ( $row_countries = mysql_fetch_array( $result_countries ) ) { ?>
<option value="<? echo $row_countries['ID']; ?>"
<? echo ( $row_countries['ID'] == $_SESSION['UserCountry'] ? 'selected="selected"' : ($row_countries['Country'] == 'AUSWAHL' ? 'selected="selected"' : '' ) ); ?> >
<? echo $row_countries['Country']; ?></option>
<? } ?>
>
</SELECT>


nur in dem jetztigen Fall habe ich keine Datenbank...und das ist mein Problem
 
Wenn das viele sind kommst Du um viel Code nicht drum herum. Irgendwo musst du die Länder ja definieren.
 
Zurück
Oben