Dynamische Checkbox einem Dynamischen Formularfeld zuweisen

Volvo1979

Grünschnabel
Hallo zusammen,

seit ein paar Wochen hänge ich an einem Problem fest bist ich meinen Denkfehler erkannte aber nicht beheben kann.

Ich lese Daten aus meiner Datenbank aus und generiere damit Dynamische Eingabefelder, Ausgabe des Namens und Checkboxen.

Nun mein Problem wenn ich zum Bsp. 4 Ausgaben habe so habe ich auch vier Checkboxen und wenn ich die letzte anklicke dann gibt er mir trotzdem die Werte des ersten inputfeldes aus statt die des letztens zu dem die checkbox gehören sollte.

PHP:
			while($best = dbarray($bestellungAF)){
				echo'	
				<tr>
					<form name="rechnung" action='.S.' method="POST">
					<td align="left">
						<input style="width: 30px; text-align : right;" type="text" name="anzahlBez[]" value="'.$best['ArtAnzahl'].'"> 
						<strong>x </strong>'.$best['ArtName'].'</td>
					<td align="right" width="60px">'.priceF(($best['Preis'] * $best['ArtAnzahl'])).' <i>E</i></td>
					<td style="width:18px; font-family:Verdana;font-size:11px;">
					<input type="checkbox" value="'.$best['id'].'" name="Abez[]" /> 
					</td>
				</tr>';

foreach ($_POST['Abez'] as $key=>$value) {
   if(isset($_POST['anzahlBez']) && isset($_POST['Abez'])){
  echo $_POST['anzahlBez'][$key];
}

Habt Ihr eine Idee wie ich dem Inputfeld klar mache das es zur Checkbox gehört oder umgekehrt?

Also Checkbox1 = inputfeld1
Checkbox2 = Inputfeld2
etc.
 
Moin

momentan hast du ja folgende Namen:
Text-Input: anzahlBez[]
Checkbox: Abez[]

Du müsstest zumindest der Checkbox einen festen Key verpassen, besser noch gleich beiden Sachen.

Tust du dies nicht, wird ja, sofern nicht alle Checkboxen aktiviert sind, nur das aktivierte übermittelt, unmöglich da eine Beziehung zwischen beiden abzuleiten.

Also sinngemäss so:

Code:
$i=0;
while($bedingung)
{
  echo '<input type="text" name="anzahlBez['.$i.']">';
//.....
  echo '<input type="checkbox" name="Abez['.$i.']">';
  $i++;
}
 
Hab vielen Dank es funtktioniert.

Nur damit ich es verstehe....

Das $i generiert eine leere Variable welche in der while schleife immer um 1 erhöht wird richtig?

Dazu nun noch eine Frage.

Warum interessiert mein Array '.$i.' das nicht beim Anzeigen?

[] wäre ein leeres array welche dann mit den DB Daten gefüllt wird.

Wenn aber nun die '.$i.' drin steht müßte er mir doch irgendwas mit einrechnen oder anzeigen warum tut er das aber (gott sei dank) nicht?
 
Wenn aber nun die '.$i.' drin steht müßte er mir doch irgendwas mit einrechnen oder anzeigen warum tut er das aber (gott sei dank) nicht?

Jo, $i wird bei jedem Durchlauf um 1 erhöht.
Mit $i wird aber nichts einberechnet oder angezeigt, es wird nur als Key für die Arrays verwendet...der wird aber nirgends angezeigt.

Bisher war es so:
per POST wurden übermittelt:
4 Text-Inputs mit den Keys 0-3

Die aktivierten Checkboxen: aktivierst du die nur zweite Checkbox, wird nur diese übermittelt....und sie wird den Key 0 haben.
aktivierst du nur die 4. Box, wird nur diese übermittelt....und sie wird ebenfalls den Key 0 haben....weil du halt keine festen Keys hast dafür.

Meine Variante hat feste Keys(erzeugt über $i)...die 2. Checkbox wird immer den Key 1 haben und die 4. immer den Key 3, sofern sie übermittelt werden, und das unabhängig davon, ob und welche anderen Checkboxen aktiviert wurden....es lässt sich eine eindeutige Beziehung zu den dazu passenden Textfeldern herstellen, weil diese die selben Keys haben.
 
Okay.

Das letztere habe ich bereits verstanden gehabt aber das es nur als Key genutzt wird wußte ich nicht werde mal schauen ob ich da irgendwas zum lesen finde wie und warum genau das so ist.

Es funktioniert in jedem Falle schon einmal also hab tausend dank.

LG volvo1979
 
Zurück