Graphity: <option value=" "> wird nicht als   übergeben :-(

Hallo
Ich habe mit PHP ein Formular erstellt.
In dem werden Daten aus einer Datenbank angezeigt. Bei den letzen beiden Formularfeldern kommen noch Auswahlmöglichkeit " " dazu. Eines der letzten beiden Felder habe ich unten eingefügt.
Das Problem ist, daß die Variable nach einem submit nicht den Wert   hat, sondern %A0.
Kann man es schaffen, daß sie den Wert   bekommt?

//3. Dienst
$getDienst3 = mysql_query("SELECT Name FROM namen LEFT JOIN dienst on (namen.Name = dienst.DienstArzt AND dienst.DienstDatum = SUBDATE( '" . $datum . "', INTERVAL 1 DAY)) LEFT JOIN urlaub ON (namen.Name = urlaub.UrlaubName AND urlaub.UrlaubDatum = '" . $datum . "') WHERE UrlaubDatum IS NULL AND DienstDatum IS NULL OR (DienstArt != 'FOA' AND DienstArt != '1.Dienst' AND DienstArt != '2.Dienst' AND DienstArt != 'Notarzt') ORDER BY name");
$getAktDienst3 = mysql_query("SELECT DienstArzt FROM dienst WHERE DienstDatum = '" . $datum . "' AND DienstArt = '3.Dienst'");
$AktDienst3 = mysql_fetch_array($getAktDienst3);

echo '<td><select name="Dienst3" size="10">' . "\n";
echo '<option value=" "';
if($AktDienst3["DienstArzt"] == '' || $AktDienst3["DienstArzt"] == ' ')
 echo ' selected';
echo '>   </option>' . "\n";
while($Dienst3 = mysql_fetch_array($getDienst3))
{
 echo '<option';
 if($Dienst3["Name"] == $AktDienst3["DienstArzt"])
  echo ' selected';
 echo '> ' . $Dienst3["Name"] . '</option>' . "\n";
}

  1. Holladiri

    Ich habe mit PHP ein Formular erstellt.
    In dem werden Daten aus einer Datenbank angezeigt. Bei den letzen beiden Formularfeldern kommen noch Auswahlmöglichkeit " " dazu. Eines der letzten beiden Felder habe ich unten eingefügt.
    Das Problem ist, daß die Variable nach einem submit nicht den Wert   hat, sondern %A0.
    Kann man es schaffen, daß sie den Wert   bekommt?

    Quäl Dich nicht, bau einfach vorher noch 'ne IF-Abfrage rein:

    if($wasweissich=="%A0") $wasweissich = " ";

    Ciao,

    Harry

    1. Hallo nochmal

      Quäl Dich nicht, bau einfach vorher noch 'ne IF-Abfrage rein:

      if($wasweissich=="%A0") $wasweissich = " ";

      hab ich schon erwähnt, daß das eigentlich recht seltsam ist ? Wenn der Browser/PHP/der Server oder sonstwer aus irgendeinem Grund das   in ein Leerzeichen " " umwandelt und dann auch noch versucht, daß zu codieren, sollte doch ein "%20" rauskommen ?! %A0 ist soweit ich weiß ein "á" !

      Bist Du sicher, daß da net noch woanders ein Hase vergraben ist ?

      Ciao,

      Harry

      1. Hallo nochmal

        Quäl Dich nicht, bau einfach vorher noch 'ne IF-Abfrage rein:

        if($wasweissich=="%A0") $wasweissich = " ";

        hab ich schon erwähnt, daß das eigentlich recht seltsam ist ? Wenn der Browser/PHP/der Server oder sonstwer aus irgendeinem Grund das   in ein Leerzeichen " " umwandelt und dann auch noch versucht, daß zu codieren, sollte doch ein "%20" rauskommen ?! %A0 ist soweit ich weiß ein "á" !

        Tatsache. Das finde ich jetzt auch komisch. Aber Du hast ja meinen Quellcode gesehen. Da stimmt doch alles?

        cu
          Graphity

  2. Hallo
    Ich habe mit PHP ein Formular erstellt.
    In dem werden Daten aus einer Datenbank angezeigt. Bei den letzen beiden Formularfeldern kommen noch Auswahlmöglichkeit " " dazu. Eines der letzten beiden Felder habe ich unten eingefügt.
    Das Problem ist, daß die Variable nach einem submit nicht den Wert   hat, sondern %A0.
    Kann man es schaffen, daß sie den Wert   bekommt?

    Du hast dem Browser gesagt, daß du als Value ein geschütztes Leerzeichen haben willst, und das hat er gesendet. %A0 sollte der entsprechende Code dafür sein.

    Wenn du die Zeichenfolge &-n-b-s-p-; haben willst, dann mußt du das dem Browser natürlich sagen:

    <option value="&nbsp;">

    Auch wenn es technisch möglicherweise nicht ganz korrekt ist: Beim Empfang der Seite wird vom Browser eine Konvertierung der Zeichen vorgenommen, bevor diese genutzt werden, z.B. für die Anzeige. Dabei wird natürlich der Zeichensatz der Seite ausgewertet (Content-Encoding) - daran erkennt der Browser, was für Zeichen z.B. deutsche Umlaute sind, um sie im systemeigenen System korrekt darstellen zu können.

    Weiterhin werden in diesem Schritt auch die Entities konvertiert. ä wird zu ä. & wird zu &. " wird zu ". Und   wird zu einem Non-Breaking-Space (auch Shift-Space). Und das gilt auch für die Angaben in Attributen. Nicht umsonst meckert der Validator bei Parametern in der URL, daß er dort Entities findet, die er nicht kennt:
    <a href="seite?var1=sowas&var2=anderes"> ist falsch.
    <a href="seite?var1=sowas&var2=anderes"> ist korrekt.

    Das gleiche ist bei dir das Problem.

    - Sven Rautenberg

    1. Holladiri

      Du hast dem Browser gesagt, daß du als Value ein geschütztes Leerzeichen haben willst, und das hat er gesendet. %A0 sollte der entsprechende Code dafür sein.

      Ist es nur halt leider nicht. %A0 ist ein á. Ein Leerzeichen wäre %20.

      Und das gilt auch für die Angaben in Attributen. Nicht umsonst meckert der Validator bei Parametern in der URL, daß er dort Entities findet, die er nicht kennt:
      <a href="seite?var1=sowas&var2=anderes"> ist falsch.
      <a href="seite?var1=sowas&var2=anderes"> ist korrekt.

      Ja bäh schaut das häßlich aus ... und ich dachte immer, der Validator spinnt ;-)

      Ciao,

      Harry

      1. Hi,

        Du hast dem Browser gesagt, daß du als Value ein geschütztes Leerzeichen haben willst, und das hat er gesendet. %A0 sollte der entsprechende Code dafür sein.

        Ist es nur halt leider nicht. %A0 ist ein á. Ein Leerzeichen wäre %20.

        Es geht nicht um ein Leerzeichen, es geht um ein geschütztes (!)
        Leerzeichen (Non-Breaking-Space)!

        <a href="seite?var1=sowas&var2=anderes"> ist falsch.
        <a href="seite?var1=sowas&var2=anderes"> ist korrekt.

        Ja bäh schaut das häßlich aus ... und ich dachte immer, der Validator spinnt ;-)

        Nee, is schon richtig. Hab mich früher aber auch immer drüber ge-
        wundert.

        Bye,
        Peter

      2. Moin,

        Ist es nur halt leider nicht. %A0 ist ein á. Ein Leerzeichen wäre %20.

        Ich weiss ja nicht was für einen verdrehten Zeichensatz du benutzt, aber in Latin-1 (http://selfhtml.teamone.de/inter/zeichensaetze.htm#iso8859_liste) findet sich das á an Position 225, entspricht also %E1. An Position 160 (entsprechend %A0) findet sich in der Tat ein Leerzeichen.

        --
        Henryk Plötz
        Grüße aus Berlin

        1. Holladiwaldfee

          Ist es nur halt leider nicht. %A0 ist ein á. Ein Leerzeichen wäre %20.

          Ich weiss ja nicht was für einen verdrehten Zeichensatz du benutzt, aber in Latin-1 (http://selfhtml.teamone.de/inter/zeichensaetze.htm#iso8859_liste) findet sich das á an Position 225, entspricht also %E1. An Position 160 (entsprechend %A0) findet sich in der Tat ein Leerzeichen.

          Lalala :-)
          Mein verdrehter Zeichensatz beruht auf der *vorsichtigumschau* Q-Basic Zeichentabelle und damit den DOS-ASCII-Codes *duck*
          Hat den Anschein, als wäre das schon ein wenig veraltet, hehe. Werd mir bei Gelegenheit mal ne neue Zeichentabelle ausdrucken *tüdlü*

          Ciao,

          Harry

    2. Herlichen Dank

      jetzt funzts...

      cu
        Graphity