PHP/HTML Formularfelder



  • <option> habe ich noch nicht hingekriegt, aber wenn ich in dem <input>-Feld wo der Eingabetext drin steht genau das eintrage, was Du geschrieben hast, schreibt er mir genau dieses auch dort ein!
    Also in dem Textfeld steht dann : <?php ....?>

    Was mache ich falsch? 😕



  • Die Endung deiner Datei ist nicht .php bzw. .php4 (oder entsprechend andere Zahl), würde ich jetzt mal vermuten. Oder du versuchst dir die Datei ohne Webserver bzw. PHP anzuschauen.



  • doch doch!
    Endung der Datei ist .php und ich benutze einen Apache-Webserver!



  • Wie wird denn der andere Teil von php eingebettet in deiner Datei? Normalerweise sollte <?php ?> immer funktionieren 😕



  • meine html-datei ist der template!
    kann es sein, dass es deswegen nicht funktioniert?



  • Ja, vermute ich jetzt mal ganz stark. Ich dachte es handle sich um eine normale .php Datei. Da gibt es aber sicher Direktiven, um etwas ins Template einzufügen, oder? Kannst du mal die vordefinierten Eingabefelder posten (da wo es funktioniert)?



  • $types = array('C' => 'Remark',
                    'R' => 'Raw',
                   );
    
    $db->query("select * from layout_fields where layout=$layout order by id");
    $cnt = 0;
    while ($db->next_record()) {
      $opt = '';
      foreach($types as $type => $desc) 
        $opt .= sprintf("<option value=\"%s\" %s>%s</option>",$type,($db->f('type') == $type) ? 'SELECTED' : '',$desc);
      $tpl->set_var(array('FIELD_VALUE' => htmlspecialchars($db->f('field')),
                          'FIELD_NAME' => 'field_' . $cnt,
                          'SELECT_NAME' => 'type_' . $cnt,
                          'SELECT_VALUE' => $opt,
                         ));
      $tpl->parse("rowsedit", "rowedit", true);
      $cnt++;
    }
    

    und so wird's in dem Template aufgerufen:

    <table border=0 cellpadding=3 cellspacing=0>
    <!-- BEGIN rowedit -->
      <tr>
        <td><input type=text size=50 maxsize=50 value="{FIELD_VALUE}" name="{FIELD_NAME}"></td>
        <td><select name="{SELECT_NAME}">{SELECT_VALUE}</select></td>
      </tr>
    <!-- END rowedit -->
    </table>
    

    Nun ist aber das Problem, dass das was ich jetzt brauche, nicht in der DB vorhanden ist, also keine DB-Abfrage!
    Die Felder machen einen Stringvergleich und genau diese Felder sollen nach dem Überprüfen nicht geleert werden!

    Ich hoffe, das war verständlich genug 🙄



  • Naja dann musst du es hald ohne db-Abfrage machen. Im Endeffekt musst du nur die zwei Template Aufrufe mit den richtigen Parametern füttern. Wenn man es genau nimmt, dann brauchst du eigentlich nur das Füllen von $opt anders machen (also manuell).



  • das verstehe ich wirklich nicht.
    wie benutze ich denn in dem fall "selected"?
    wo und wie muss ich das schreiben?



  • So sollte es funktionieren:

    Array für die neue Auswahl

    $auswahlen = array('1' => 'Eins', '2' => 'Zwei');
    

    Codeänderung (fett markiert)

    $db->query("select * from layout_fields where layout=$layout order by id");
    $cnt = 0;
    while ($db->next_record()) {
      $opt = '';
      $opt2 = '';
      foreach($types as $type => $desc) 
        $opt .= sprintf("<option value=\"%s\" %s>%s</option>",$type,($db->f('type') == $type) ? 'SELECTED' : '',$desc);
    
    [b]  foreach($auswahlen as $auswahl => $wert)
        $opt2 .= sprintf("<option value=\"%s\"%s>%s</option>", $auswahl, ($name_des_auswahlfeldes == $auswahl)?' selected':'', $wert);
    [/b]
      $tpl->set_var(array('FIELD_VALUE' => htmlspecialchars($db->f('field')),
                          'FIELD_NAME' => 'field_' . $cnt,
                          'SELECT_NAME' => 'type_' . $cnt,
                          'SELECT_VALUE' => $opt,
     [b]                     'AUSWAHL_NAME' => 'name_des_auswahlfeldes',
                          'AUSWAHL_VALUE' => $opt2[/b]
                         ));
      $tpl->parse("rowsedit", "rowedit", true);
      $cnt++;
    }
    

    HTML-Templatedatei

    <table border=0 cellpadding=3 cellspacing=0>
    <!-- BEGIN rowedit -->
      <tr>
        <td><input type=text size=50 maxsize=50 value="{FIELD_VALUE}" name="{FIELD_NAME}"></td>
        <td><select name="{SELECT_NAME}">{SELECT_VALUE}</select></td>
      </tr>
      <tr>
        <td colspan="2">
          <select name="{AUSWAHL_NAME}">{AUSWAHL_VALUE}</select>
        </td>
      </tr>
    <!-- END rowedit -->
    </table>
    

    Hinweis:
    name_des_auswahlfeldes kannst du natürlich ersetzen durch einen anderen Namen, der vielleicht auch besser passt ;). Außerdem solltest du das Array auswahl mit den Werten füllen, die dann auch in deinem Auswahlfeld zur Verfügung stehen sollen.


Anmelden zum Antworten