Formularfelder in HTML und direkt im PHP-Code

phpameise

Mitglied
Hallo, folgende Frage. Ich habe als Greenhorn das Problem, dass ich mit HTML recht gut klar komme, mit php hackts noch. Es geht um Formularfelder. Bisher konnte ich diese Form nutzen:
PHP:
<input name="Jahr" type="text" id="Jahr" value="<? echo $row_select['Jahr']; ?>" >
Nun allerdings habe ich diese Form, da der Feld-Name nicht feststeht.:
PHP:
<? echo '<input name="users[', $row_select['id'], '][Jahr]" value="', htmlspecialchars($row_select['Jahr']), '" type="text">';?>
Ich habe jetzt probiert, den PHP-Code jeweils in meine alte Form in 'name' und 'value' zu integrieren. Ziel ist, dass ich später auch gerne Select-Boxen nutzen möchte und es für mich einfacher wäre, wenn ich die normalen 'HTML-Feld-Schreibweise' benutzen könnte. Geht das und wenn ja, wie?
 
Hallo,

ich verstehe nicht genau, was jetzt das Problem ist.
Dein PHP-Code sieht eigentlich gut aus außer dass du noch ENT_QUOTES als zweiten Parameter [phpf]htmlspecialchars[/phpf] übergeben solltest. Sonst könnte man das value-Attribut mit einem doppelt Anführungszeichen schließen!

Ziel ist, dass ich später auch gerne Select-Boxen nutzen möchte und es für mich einfacher wäre, wenn ich die normalen 'HTML-Feld-Schreibweise' benutzen könnte. Geht das und wenn ja, wie?
Was ist denn für dich die HTML-Feld-Schreibweise? Etwa <input />?
Eine Selectbox kann man so erstellen:
HTML:
<select name="selection">
  <option value="value1">Value1</option>
  <option value="value2">Value2</option>
</select>
 
Erstmal Danke für die Hinweise. Um mein Problem mal ganz konkret zu machen. Ich habe eine Selectbox, deren Inhalt mit Taetigkeiten aus einer Tabelle tblTaetigkeiten gefüllt wird. Die User können nun in einem Formular mehrere Datensätze mit Tätigkeiten auswählen. Bis zu 8 Datensätze mit der entsprechenden Tätigkeit können vom User eingetragen werden. Diese werden dann in eine andere Tabelle mit jeweils seiner id abgespeichert. Bei einer späteren Updatefunktion solll der User Datensätze ändern können. Da die Datensätze auch noch geordnet angezeigt werden, baue ich mit einer do-while Schleife die datensätze mit Ihren Formularfeldern auf. Das funktioniert alles super. Siehe auch:
Nun kommt der Punkt, an dem ich überfordert bin. Wie kann ich in diese Schleife meine Selectbox mit folgenden Code einbinden:
PHP:
<select name="Taetigkeit" id="Taetigkeit">
<option value=""></option>

<?php
do {  
?>

<option value="<?php echo $row_RecordsetTaetigkeit['Taetigkeit']?>"<?php if (!(strcmp($row_RecordsetTaetigkeit['Taetigkeit'], $row_select['Taetigkeit']))) {echo "selected=\"selected\"";} ?>><?php echo $row_RecordsetTaetigkeit['Taetigkeit']?></option>
<?php
} while ($row_RecordsetTaetigkeit= mysql_fetch_assoc($RecordsetTaetigkeit));
$rows = mysql_num_rows($RecordsetTaetigkeit);
if($rows > 0) {
mysql_data_seek($RecordsetTaetigkeit, 0);
$row_RecordsetTaetigkeit = mysql_fetch_assoc($RecordsetTaetigkeit);
}
?>
</select>
Als normale Textbox würde es so gehen:
PHP:
<? echo '<input name="users[', $row_select['id'], '][Taetigkeit]" value="', htmlspecialchars($row_select['Taetigkeit']), '" type="text">';?>
 
Da ich bei dem Umfang der Frage nicht wirklich von einer Lösung ausgehe und ich auch gerne immer lerne, habe ich hier mal zurückgehend auf meine Anfangsfrage diesen Code erstellt:
PHP:
<input name="<? echo users($row_select['id']['Jahr']);?>" type="text" id="Jahr" value="<? echo htmlspecialchars($row_select['Jahr']);?>" >
Der Inhalt vom 'value' scheint so schon mal richtig zu sein. Nur in 'name' ist noch was falsch.
Diesen wollte ich umwandeln:
PHP:
<? echo '<input name="users[', $row_select['id'], '][Jahr]" value="', htmlspecialchars($row_select['Jahr']), '" type="text">';?>
 
Zuletzt bearbeitet:
hab jetzt versucht meinen unteren Code irgendwie in diesen zu integrieren, aber - keine Chance.
PHP:
<td align="center"><? echo '<select name="users[', $row_select['id'], '][Taetigkeit]" option value="', htmlspecialchars($row_select['Taetigkeit']), '" >';?></td>

PHP:
<select name="Taetigkeit" id="Taetigkeit">
<option value=""></option>

<?php
do {  
?>

<option value="<?php echo $row_RecordsetTaetigkeit['Taetigkeit']?>"<?php if (!(strcmp($row_RecordsetTaetigkeit['Taetigkeit'], $row_select['Taetigkeit']))) {echo "selected=\"selected\"";} ?>><?php echo $row_RecordsetTaetigkeit['Taetigkeit']?></option>
<?php
} while ($row_RecordsetTaetigkeit= mysql_fetch_assoc($RecordsetTaetigkeit));
$rows = mysql_num_rows($RecordsetTaetigkeit);
if($rows > 0) {
mysql_data_seek($RecordsetTaetigkeit, 0);
$row_RecordsetTaetigkeit = mysql_fetch_assoc($RecordsetTaetigkeit);
}
?>
</select>
 
Habs jetzt nochmal so probiert, läuft aber nicht. Der input name ist noch falsch. Hat jemand einen Tip und sieht den Fehler?
PHP:
 <td align="center"><input name="users<? echo $row_select['id'].[Jahr];?>" value=" <? echo htmlspecialchars($row_select['Jahr']);?>" type="text"></td>
 
Zuletzt bearbeitet:
Hast Du error-reporting an?
Weil mir das falsch ausschaut:
PHP:
<? echo $row_select['id'].[Jahr];?>
Ist $row_select ein zweidimensionales Array? Dann so:
PHP:
<?php echo $row_select['id']['Jahr'];?>
Jahr ist keine Konstante nehme ich an!?

Gruß
 
Richtig, id identifiziert die Tabellenzeile und Jahre können verschiedene Werte sein. Die Felder werden mit einer do-while Schleife aufgebaut. Dein Vorschlag ergibt zwar keinen error, aber geht trotzdem nicht. Angezeigt werden die Werte, aber beim überschreiben und Update wird der neue Wert nicht ausgegeben.
So funktionierts:
PHP:
<?php do { ?>
      <tr>
        <td align="center"><? echo '<input name="users[', $row_select['id'], '][Jahr]" value="', htmlspecialchars($row_select['Jahr']), '" type="text">';?></td>          
<?php } while ($row_select = mysql_fetch_assoc($select)); ?>
So noch nicht:
PHP:
<?php do { ?>
      <tr>
        <td align="center"><input name="users<? echo $row_select['id']['RefJahr'];?>" value=" <? echo htmlspecialchars($row_select['RefJahr']);?>" type="text"></td><?php } while ($row_select = mysql_fetch_assoc($select)); ?>
 
Zurück