Validationsproblem

Status
Nicht offen für weitere Antworten.

Beppo98

Mitglied
Siehe Problem weiter unten ;)

Guten Tag,

ich beschäftige mich schon einige Zeit damit meine Seiten W3C-Valide zu bekommen, aber momentan hänge ich an 2 Fehler um dies umzusetzen.

1. Fehler:

Im Zusammenhang mit dem unten stehenden Code, wird das Öffnende und Schließende Form-Tag nicht richtig erkannt. Leider finde ich dazu keine genauere Lösung wie ich dieses Problem umgehen könnte, da anscheinend irgendwelche Elemente innerhalb des Form-Tags nicht erlaubt sind und diesen Fehler hervorrufen.

PHP:
     <tr>
      <td class='MainBereich2'>
<div  style="border: 1px solid #C0C0C0; padding: 5px; margin-right: 10px; margin-left: 10px;">
          <form method="POST" action="registrierung.php">
            <table border="0" cellpadding="0" cellspacing="0" >
              <tr>
               <td  style="width: 200px;">&nbsp;&nbsp;&nbsp;Benutzername:*</td>
               <td  style="width: 270px;"><input name="Benutzername" type="text" size="12" maxlength="12" tabindex="1" value="<?php echo htmlspecialchars($_POST['Benutzername']); ?>"></td>
               <td  ><input value="Mustermax" readonly type="text" size="12" maxlength="12"></td>
              </tr>
              <tr>
               <td >&nbsp;&nbsp;&nbsp;Name:*</td>
               <td ><input name="Name" type="text" size="30" maxlength="30" tabindex="2" value="<?php echo htmlspecialchars($_POST['Name']); ?>"></td>
               <td ><input value="Mustermann" readonly type="text" size="30" maxlength="30"></td>
              </tr>
              <tr>
               <td >&nbsp;&nbsp;&nbsp;Vorname:*</td>
               <td ><input name="Vorname" type="text" size="30" maxlength="30" tabindex="3" value="<?php echo htmlspecialchars($_POST['Vorname']); ?>"></td>
               <td ><input value="Max" readonly type="text" size="30" maxlength="30"></td>
              </tr>
            </table>
        </div>
        <br>

        <div  style="border: 1px solid #C0C0C0; padding: 5px; margin-right: 10px; margin-left: 10px;">
            <table border="0" cellpadding="0" cellspacing="0" >
              <tr>
               <td style="width: 200px;">&nbsp;&nbsp;&nbsp;&nbsp;Verein:*</td>
               <td style="width: 270px;"><input name="Verein" type="text" size="30" maxlength="45" tabindex="4" value="<?php echo htmlspecialchars($_POST['Verein']); ?>"></td>
               <td ><input value="SV Habischried" readonly type="text" size="30" maxlength="45" ></td>
              </tr>              
              <tr>
               <td style="width: 200px;">&nbsp;&nbsp;&nbsp;&nbsp;Mannschaft:*</td>
               <td style="width: 270px;"><?php $Mannschaft = $_POST["Mannschaft"]; ?>
                <select name="Mannschaft" size="1" tabindex="5">       <!-- Hier wird die Auswahl selektiert -->

                  <option value="Bitte wählen">Bitte wählen</option>
                  
                  <?  /*Anzuzeigene Mannschaften werden aus der Datenbank ausgegeben und angezeigt*/ 
                     
                  
                    $sql = "SELECT Name FROM mannschaften ORDER BY MID";
                    $result= mysql_query($sql) or die(mysql_error());
                    $erg = mysql_num_rows($result);
                  
                          while ( $zeile = mysql_fetch_row($result))
                          {
                          $zeile[0] = str_replace(' ','-',$zeile[0]); //Ersetzt alle Leerzeichen durch Bindestriche

                          if ( $zeile[0] == 'Herren-1')
                               $zeile[0] = '1. Mannschaft';
                                
                          if ( $zeile[0] == 'Herren-2')
                               $zeile[0] = '2. Mannschaft';
                                
                          if ( $zeile[0] == 'Herren-3')
                               $zeile[0] = '3. Mannschaft';
                          
                          echo "<option value='".$zeile[0]."'";
                          if ($Mannschaft == $zeile[0])
                          { echo " selected=\"selected\""; }
                          echo " >".$zeile[0]."</option>";
                          }                                          
                  ?>
                </select>
               <td  ><input value="1. Mannschaft" readonly type="text" size="14" maxlength="14"></td>
              </tr>
                           
              <tr>
               <td>&nbsp;&nbsp;&nbsp;&nbsp;Geburtsdatum:*</td>
               <td><input name="Geburtstag" type="text" size="2" maxlength="2" tabindex="6" value="<?php echo htmlspecialchars($_POST['Geburtstag']);?>"><input name="Geburtsmonat" type="text" size="2" maxlength="2" tabindex="7" value="<?php echo htmlspecialchars($_POST['Geburtsmonat']);?>"><input name="Geburtsjahr" type="text" size="4" maxlength="4" tabindex="8" value="<?php echo htmlspecialchars($_POST['Geburtsjahr']);?>"></td>
               <td><input value="12" readonly type="text" size="2" maxlength="2"><input value="09" readonly type="text" size="2" maxlength="2" ><input value="1945" readonly type="text" size="4" maxlength="4"></td>
              </tr>
            </table>
        </div>
        <br>
        <div  style="border: 1px solid #C0C0C0; padding: 5px; margin-right: 10px; margin-left: 10px;">
            <table border="0" cellpadding="0" cellspacing="0" >
              <tr>
               <td style="width: 200px;">&nbsp;&nbsp;&nbsp;&nbsp;E-Mail:*</td>
               <td style="width: 270px;"><input name="E_Mail" type="text" size="30" maxlength="45" tabindex="9" value="<?php echo htmlspecialchars($_POST['E_Mail']); ?>"></td>
               <td ><input value="Max.Mustermann@webmaster.de" readonly type="text" size="30" maxlength="45" ></td>
              </tr>
              <tr>
               <td style="width: 200px;">&nbsp;&nbsp;&nbsp;&nbsp;E-Mail wiederholen:*</td>
               <td style="width: 270px;"><input name="E_Mail_WH" type="text" size="30" maxlength="45" tabindex="10" value="<?php echo htmlspecialchars($_POST['E_Mail_WH']); ?>"></td>
               <td ><input value="Max.Mustermann@webmaster.de" readonly type="text" size="30" maxlength="45" ></td>
              </tr>
              <tr>
               <td>&nbsp;&nbsp;&nbsp;&nbsp;Passwort:* </td>
               <td><input name="Passwort" type="password" size="30" maxlength="30" tabindex="11" value=""></td>
               <td><input value="******"  readonly type="text" size="30" maxlength="30"></td>
              </tr>
              <tr>
               <td>&nbsp;&nbsp;&nbsp;&nbsp;Passwort wiederholen:* </td>
               <td><input name="Passwort_WH" type="password" size="30" maxlength="30" tabindex="12" value=""> </td>
               <td><input value="******"  readonly type="text" size="30" maxlength="30"></td>
              </tr>
            </table>
        </div>
        <div  style="padding: 5px; margin-right: 10px; margin-left: 10px;">
            <table border="0" cellpadding="0" cellspacing="0" >
              <tr>
               <td ><input name="Submit"    type="submit" tabindex="13" value="Registrieren"></td>
               <td ><a href='../../home.php' ><input name="Abbrechen" type="submit" tabindex="14" value="Abbrechen"></a></td>
              </tr>
            </table>
         </form>
        </div>
      </td>
     </tr>


2. Fehler:

Der zweite Fehler schleicht sich in diesem Teil des obigen Codes ein:

PHP:
                          echo "<option value='".$zeile[0]."'";
                          if ($Mannschaft == $zeile[0])
                          { echo " selected=\"selected\""; }
                          echo " >".$zeile[0]."</option>";
                          }

Dazu wird folgender Fehler ausgegeben:

Fehler: Zeicheninhalt ist hier nicht erlaubt
Fehlerstelle: echo " >".$zeile[0]."</option>";

Fehler: Endtag OPTION zu einem nicht vorhandenen Starttag gefunden.
Fehlerstelle: echo " >".$zeile[0]."</option>";

Beim ersten Fehler hätte ich ja noch eine Vermutung an was es liegen könnte, beim zweiten Fehler bin ich jedoch überfragt :(

Vielen Dank bereits im Voraus für eure Hilfe :)

Grüße Beppo
 
Zuletzt bearbeitet:
Zum ersten Fehler: Das erste „</div>“ ist an der Stelle nicht erlaubt, da das DIV-Element damit vor dem FORM-Element geschlossen wird.

Zum zweiten: Du musst die generierte Ausgabe prüfen und nicht den PHP-Quellcode. Möglicherweise musst du das „<?“ durch die vollständige Schreibweise „<?php“ ersetzen, damit es als PHP-Block interpretiert wird.
 
Zum ersten Fehler: Das erste „</div>“ ist an der Stelle nicht erlaubt, da das DIV-Element damit vor dem FORM-Element geschlossen wird.

Super, danke :). Damit wäre der erste Fehler beseitigt. :rolleyes:

Zum zweiten: Du musst die generierte Ausgabe prüfen und nicht den PHP-Quellcode. Möglicherweise musst du das „<?“ durch die vollständige Schreibweise „<?php“ ersetzen, damit es als PHP-Block interpretiert wird.


Die Ausgabe sieht im Quellcode wie Folgt aus, was mir auch vollkommen richtig erscheint.

PHP:
<select name="Mannschaft" size="1" tabindex="5">     
   <option value="Bitte wählen">Bitte wählen</option>
   <option value="1. Mannschaft" selected="selected" >1. Mannschaft</option>
   <option value="2. Mannschaft" >2. Mannschaft</option>
   <option value="Andere">Andere</option>               
</select>

Das Ausschreiben des PHP-Einleitetags brachte auch nicht den erwünschten Erfolg, da anscheinend php richtig interpretiert wird. Nur der Validator hat da was zu meckern :(

EDIT:

Auch auf anderen Seiten ergibt sich fast ein identischer Fehler. z.B. hier:

PHP:
  echo "<meta http-equiv='refresh' content='0; URL=../home.php'>";

Fehler: Zeicheninhalt ist hier nicht erlaubt
Fehlerstelle: echo "<meta http-equiv='refresh' content='0; URL=../home.php'>";
 
Zuletzt bearbeitet:
Keiner eine Idee an was es noch liegen könnte? Also ich habe jetzt bald alle möglichen Kombination des PHP-Codes durch und immer wieder erscheint ein Validationsfehler. :mad:
 
Der W3C Validator akzeptiert kein PHP, wie Gumbo dir ja auch schon sagte!

Du musst das fertige Dokument validieren lassen, sprich was du siehst, wenn du deine PHP Datei auf dem Webserver aufrufst.
 
Nachdem ich mit eurer Hilfe die anderen zwei Probleme lösen konnte :), habe ich jetzt ein erneutes Problem entdeckt.

Die folgende Codezeile verursacht im Validator einen Fehler:

PHP:
echo "<meta http-equiv='refresh' content='5; URL=./home.php'>";

Das Problem hierbei ist, dass die Zeile mitten im Quellcode vom body zu finden ist und nicht wie normalerweise im head. Ein verschieben in den Head-Teil ist jedoch aufgrund des Aufbaus nicht möglich.

Danke nochmals für eure Hilfe :)

Grüße Beppo
 
Hi,

dann includest du wohl diese Zeile (oder ein komplettes HTML-Gerüst) in das bestehende Hauptdokument, was aber syntaktisch falsch ist, und eben zu dieser Fehlermeldung führt.
 
Hi,

dann includest du wohl diese Zeile (oder ein komplettes HTML-Gerüst) in das bestehende Hauptdokument, was aber syntaktisch falsch ist, und eben zu dieser Fehlermeldung führt.

Hey Maik,

danke für die Antwort. Da liegst du vollkommen richtig. Dann werde ich wohl mit dem Fehler leben müssen ;)

Grüße Beppo
 
Status
Nicht offen für weitere Antworten.
Zurück