tangotaenzer: Syntax

Hallo liebe Leute,

ich bin schier am verzweifeln, denn ich kann folgendes Problem nicht lösen:

Habe eine Umfrage mit PHP und HTML anhand eines Buches erstellt, die wie folgt aussieht

<form action="auswertung.php" method="post">
<fieldset  style="border: none">
<?php
foreach($vote as $nr => $entry)
{
$nr == $vote_default ? $default ='checked':$default = '';
echo '<p>' . "<input name="fld_vote" $default type="radio" value=$nr>$entry\n";
echo '</p>';
}
?>
<input class="button" type="submit" value="Abstimmen"/>
</fieldset>
</form>

Die Umfrage funktioniert zwar, aber wenn ich sie mit einem Validator überprüfe habe ich 20 Fehler, die sich alle auf folgenden Teil beziehen:

"<input name="fld_vote" $default type="radio" value=$nr>$entry\n";

So wird z.B. ein Endtag ("/>") von input erwartet, was mir zwar einleuchtet, ich aber nicht weiß, wie ich es einfügen muss (habe schon alles mögliche probiert!).

value=$nr>$entry\n    hier wird das >-Zeichen immer fehlinterpretiert.

Über Eure Hilfe dankbar, viele Grüße ans Forum

  1. Hi tangotaenzer,

    So wird z.B. ein Endtag ("/>") von input erwartet, was mir zwar einleuchtet, ich aber nicht weiß, wie ich es einfügen muss (habe schon alles mögliche probiert!).

    Du möchtest folgendes machen:

    foreach ($vote as $nr => $etnry) {  
      $default = $vote_default == $nr ? 'checked="checked" ' : '';  
      echo '<p><label><input name="fld_vote" ' . $default . 'type="radio" ';  
      echo 'value="' . htmlspecialchars($nr) . '" />' . htmlspecialchars($entry);  
      echo '</label></p>';  
    }
    

    Beachte bitte auch die Verwendung von htmlspecialchars() um Cross-Site Scripting (XSS-Angriffen) vorzubeugen.

    Viele Grüße,
      ~ Dennis.

    1. Hallo Dennis,

      das war es leider nicht habe es gerade ausprobiert und man sieht dann nicht mehr den Text zu den Radio-Buttons. Der verschwindet dann einfach.

      Viele Grüße

      1. Hi tangotaenzer,

        das war es leider nicht habe es gerade ausprobiert und man sieht dann nicht mehr den Text zu den Radio-Buttons. Der verschwindet dann einfach.

        In meinem Code war ein Tippfehler, ich habe einmal $etnry und einmal $entry geschrieben ;-) Dass dir PHP dafür keine Notice-Meldung zeigt, dass du das Error Reporting nicht auf E_ALL stehen hast, wie es zum Testen sinnvoll ist.

        Wir haben doch grade erst hier erlebt, dass man sich teilweise dumm & dämlich sucht nach einem Fehler, welchen man mit E_ALL schnell gefunden hätte. *g*

        Viele Grüße,
          ~ Dennis.

        1. Hallo Dennis,

          ich brech echt zusammen, das war genau die Lösung!!! Ich nehme Dich mit in mein Abendgebet. Danke!!!

          Viele Grüße

  2. Hallo,

    echo '<p>' . "<input name="fld_vote" $default type="radio" value=$nr>$entry\n";

    warum setzt du das value-Attribut nicht in Anführungszeichen?

    value=$nr>$entry\n    hier wird das >-Zeichen immer fehlinterpretiert.

    Mit Anführungszeichen wäre das nicht passiert ...

    So long,
     Martin

    --
    There are 10 types of people in the world: Those who understand the binary system, and those who don't.
    1. Hallo Martin,

      warum setzt du das value-Attribut nicht in Anführungszeichen?

      Mit Anführungszeichen wäre das nicht passiert ...

      Hatte ich probiert, ist aber auch nicht richtig, viele Grüße

      1. Hallo

        »» warum setzt du das value-Attribut nicht in Anführungszeichen?

        »»  Mit Anführungszeichen wäre das nicht passiert ...

        Hatte ich probiert, ist aber auch nicht richtig, viele Grüße

        Nun, vielleicht ist es nicht die Lösung deines Problems, aber wenn ich deine Anmerkung, dass für <input> ein schließender Tag erwartet wird, richtig interpretiere (Verwendung von XHTML), sind die Anführungszeichen für alle Attributwerte *zwingend* vorgeschrieben.

        Tschö, Auge

        --
        Die deutschen Interessen werden am Liechtenstein verteidigt.
        Veranstaltungsdatenbank Vdb 0.3
  3. Hi,

    Die Umfrage funktioniert zwar, aber wenn ich sie mit einem Validator überprüfe habe ich 20 Fehler, die sich alle auf folgenden Teil beziehen:

    "<input name="fld_vote" $default type="radio" value=$nr>$entry\n";

    So wird z.B. ein Endtag ("/>") von input erwartet, was mir zwar einleuchtet, ich aber nicht weiß, wie ich es einfügen muss (habe schon alles mögliche probiert!).

    value=$nr>$entry\n    hier wird das >-Zeichen immer fehlinterpretiert.

    Dann machst du offenbar den beliebten Anfänger-Denkfehler, deine ungeparsten PHP-Dateien dem Validator vorzuwerfen - statt lediglich dessen HTML-Output.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“