input name=$var

quidnovi

Erfahrenes Mitglied
Hi @ all,

mit folgendem Code versuche ich einen Wert zu übergeben:
PHP:
echo "<form action='./test2.php' method='POST'>";

	function eingabe($feld){
		echo "<input type='text' name='".$feld."' value='".$_SESSION['name']."'>";
	}

	$kennung = '_1';
	$fieldName = 'eingabe'.$kennung;

	eingabe($feld=$fieldName);
	echo "<input type='submit'>";
	echo "</form>";

so rufe ich den Wert auf:
PHP:
<?php session_start();


	$_SESSION['name'] = $_POST['name'];

	if ($_SESSION['name'] !== ""){
		include "./test.php";
		echo "<a href='./test.php'>back</a>";
		unset ($_SESSION['name']);
	}
?>

Nur bekomme ich nichts.

So funktioniert es schon:
PHP:
echo "<input type='text' name='fieldName_1 value='".$_SESSION['fieldName_1']."'>";

Aufruf:
PHP:
$_SESSION['fieldName_1'] = $_POST['fieldName_1'];

	if ($_SESSION['fieldName_1'] !== ""){
		include "./test.php";
		echo "<a href='./test.php'>back</a>";
		unset ($_SESSION['fieldName_1']);
	}

Das Ganze funktioniert also nur, wenn name= keine Variable enthält.

Also nach meinem Verständnis sollte das aber schon funktionieren.

Könnt Ihr mir bitte meinen Denkfehler nennen? Danke
 
Zuletzt bearbeitet:
Hi,

habe ich getestet, funktioniert leider auch nicht.

Außerdem würde das:
PHP:
eingabe($feld=$fieldName);
auch funktionieren. Nur in meinem Fall nicht.

Wo liegt denn hier nur der Fehler?
 
Ja, es funktioniert, ist aber unnötig.

PHP:
$_SESSION['name'] = $_POST['name'];

Du versuchst hier $_POST['name'] zu benutzen, aber dein Feld heißt laut deinem Skript "eingabe_1".
 
Schönen guten Morgen.

Ja, das ist richtig, nützt mir aber so nix.

Ich muss eine Variable übergeben können, da im Namen das Datum und ein Zähler mitgegeben werden muss.

Der Code:
PHP:
// Datum des ausgewählten Tages der Kalenderwoche und Zähler
$feldkennung = $datum."_".$zaehler;

"<input type='text' name='auftragsNr_".$feldkennung."' size='5' value='".$_POST['auftragsNr_'.$feldkennung.'']."'></td>".

Da dieses Eingabefeld bis zu 10x pro Tag auf dem Formular aufscheint, benötige ich auch den Zähler.

Wenn man keine Variable übergeben kann, dann muss mir ein anderer Weg einfallen.
Da aber mehr Köpfe besser denken als einer, bitte ich Euch um Vorschläge, danke
 
Wie schaut es denn aus mit den Zähler erhöht sich dieser immer um 1 (sprich irgendwann ist der zähler bei 999999..) oder wird er täglich oder bei abfrage "resetet" bzw. wie sollte das ganze genau funktionieren

mfg Spikaner
 
Das ganze Formular nennt sich Wochenbericht.
In diesem Bericht, kann der eingeloggte Benutzer die Arbeitsleistung der ganzen Kalenderwoche eingeben.

Das Datum und der Tag sind vordefiniert, dann wird die Auftragsnummer, Berichte, von bis,... eingegeben.
Daher wiederholen sich die Eingabefelder, weswegen ich den Zähler benötige.

Der zu übergebende Wert hat z.B. folgende Kennung: auftragsNr_05.10.07_1

Das Ganze wird in einer Session gespeichert, die nach Übergabe der Daten an die Datenbank gelöscht wird.
 
hmm, warum löst du das dann nicht gleich in bzw. mithilfe der Datenbank "where datum and user.. id + 1" ,so kann Er(der Mitarbeiter) bericht nach bericht eingeben und jedesmal wird die id um 1 erhöht die ID zahl für den Mitarbeiter nix mit auto_increment..) die Abfrage kannst du dann täglich "nullen" oder du berechnest halt die Woche von bis.., so wäre mein Denkansatz für sowas (das ganze wäre halt etwas flexiebler wenn du eh schon mit einer Datenbank arbeitest..).
Ausser der Mitarbeiter kann nur einmal pro Woche die Daten übertragen.. dann würde ich das ganze in ner Textdatei zwischenspeichern die Er dann einmal wöchentlich hochlädt und das "Mainscript" wertet es dann aus und trägt die Daten in die Datenbank ein jede Zeile abgearbeitet id++ .

mfg Spikaner
 
Zuletzt bearbeitet:
Hi,

das mit Bericht für Bericht eingeben habe ich schon vorgeschlagen, wurde aber abgelehnt.
Somit stehe ich wieder vor dem selben Problem.

Es muss doch einen Weg geben, den namen des input-Feldes dynamisch zu benennen, besser gesagt diesen dynamischen Namen an ein Verarbeitungsscript weiterzugeben.

Generiere den Namen folgendermaßen:
PHP:
$feldkennung = $datum."_".$zaehler; 
"<input type='text' name='auftragsNr_".$feldkennung."' size='5' value='".$_POST['auftragsNr_'.$feldkennung.'']."'></td>".

ergibt:
HTML:
<input type='text' name='auftragsNr_01_10_07_1' size='5' value=''>

<input type='text' name='auftragsNr_01_10_07_2 size='5' value=''>

<input type='text' name='auftragsNr_01_10_07_3' size='5' value=''>

<input type='text' name='auftragsNr_02_10_07_1' size='5' value=''>

<input type='text' name='auftragsNr_02_10_07_2' size='5' value=''>

<input type='text' name='auftragsNr_02_10_07_3' size='5' value=''>
<!-- und so weiter, die ganze Kalenderwoche durch-->

Das Datum (01_10_07) und der Zähler (_1) werden also dynamisch generiert. Nur kann ich das so:
PHP:
$_SESSION['auftragsNr_.feldkennung'] 	= $_POST['auftragsNr_.feldkennung'];
echo $_SESSION['auftragsNr_.feldkennung'];
nicht aufrufen, weil das verarbeitende Script nach dem richtigen Namen und nicht nach der Variablen sucht.

Bitte helft mir, dieses Problem zu lösen. Mir fällt dazu leider nichts mehr ein.

Vielen Dank im voraus.
 
Zuletzt bearbeitet:
habe die Übergabe gelöst, und zwar so:
PHP:
for ($i = 1; $i <= 5; $i++){
	$datum2 = (date('Y-m-d', $anfg));
	$feld = "<table width='' height='' cellspacing='0' cellpadding='0' border='1' bordercolor='#C1C1C1'>".
		  "<tr bgcolor='#DDDDDD'>".
		  "<td align='center' width='81'><input type='text' name='datum[$datum2"._."$i]' readonly value='".$datum2."' size='7'>".
		 "<br />".$_POST['wochentag']."</td>".
		 "<td align='center' width='120' valign='top'><br />".
		 "<input type='text' name='auftragsNr[$datum2"._."$i]' size='13'>".
		 "</td>".
		 "<td align='center' width='145'>".
		 "<TEXTAREA NAME='bauvorhaben[$datum2"._."$i]' ROWS='3' COLS='14'></TEXTAREA></td>".
		 "<td align='center' width='280'>".
		 "<TEXTAREA NAME='arbBericht[$datum2"._."$i]' ROWS='3' COLS='31'></TEXTAREA></td>".
		 "<td align='center' width='81'>".
		 "<input type='text' name='beginn[$datum2"._."$i]' size='5'></td>".
		 "<td align='center' width='81'>".
		 "<input type='text' name='ende[$datum2"._."$i]' size='5'></td>".
		 "<td align='center' width='78'>".
		 "<select name='diaeten[$datum2"._."$i]' size='2'>".
		 "<option value=0 selected>nein</option>".
		 "<option value=1>ja</option>".
		 "</td>".
		 "<td align='center' width='81'>".
		 "<input type='text' name='kmAbFa[$datum2"._."$i]' size='5'></td>".
		 "<td><img src='./images/b_edit.png'></td>".
		 "<td><img src='./images/b_drop.png'></td>".
		 "</tr></form></table>";
		echo $feld;
}

Die Feldnamen sehen im Quelltext so aus:
HTML:
name='datum[2007-10-15_1]'
name='datum[2007-10-15_2]'
name='datum[2007-10-15_3]'
...
name='auftragsNr[2007-10-15_1]'
name='auftragsNr[2007-10-15_2]'
name='auftragsNr[2007-10-15_3]'
...
und die Abfrage funktioniert so:
PHP:
foreach($_POST['auftragsNr'] as $auftrNr){
		echo $auftrNr."<br />";
	}

	foreach($_POST['bauvorhaben'] as $bauVh){
		echo $bauVh."<br />";
	}

	foreach($_POST['arbBericht'] as $arbB){
		echo $arbB."<br />";
	}

	foreach($_POST['beginn'] as $begin){
		echo $begin."<br />";
	}

	foreach($_POST['ende'] as $end){
		echo $end."<br />";
	}

	foreach($_POST['diaeten'] as $diaet){
		echo $diaet."<br />";
	}

	foreach($_POST['kmAbFa'] as $km){
		echo $km."<br />";
	}

Soweit so gut. Jetzt muss das Ganze noch in die Datenbank und da scheitere ich.

Denn so geht's nit:
PHP:
foreach($_POST['auftragsNr'] as $auftrNr){
		$arbTag = "INSERT INTO ".$test." (datum)" .
				  " VALUES ('$auftrNr')";
		mysql_query ($arbTag) or die (mysql_errno() . ": gesamtV " . mysql_error()."<br />".$arbTag);
	}

	foreach($_POST['bauvorhaben'] as $bauVh){
		$bauvor = "INSERT INTO ".$test." (bauvorhaben)" .
				  " VALUES ('$bauVh')";
		mysql_query ($bauvor) or die (mysql_errno() . ": gesamtV " . mysql_error()."<br />".$bauvor);
	}

Das Ziel:
Datum[2007-10-15_1], Bauvorhaben[2007-10-15_1], Arbeitsbericht[2007-10-15_1], Beginn[2007-10-15_1], Ende[2007-10-15_1], Diäten[2007-10-15_1] und Kilometer[2007-10-15_1] sollen in einer Zeile stehen.

in der nächsten dann: Datum[2007-10-15_2], Bauvorhaben[2007-10-15_2], Arbeitsbericht[2007-10-15_2], Beginn[2007-10-15_2]....
und so weiter.

Mit dem obigen Code funktioniert das natürlich nicht.

Wie bringe ich die Arrays so in die Datenbank? Könnt Ihr mir bitte helfen? Danke
 
Zuletzt bearbeitet:
Zurück