dynamische tabelle! statt mehrer zeilen nur die letzte zeile ausgegeben

nero_85

Erfahrenes Mitglied
Hi Leute!

Mein Problem sieht wie folgt aus:
Ich erstelle mit Hilfe eines Formulars das (durch javascript) erweiterbar ist eine Tabelle.
Das heißt man kann das formular um weitere Zeilen (und somit auch input-Felder) erweitert werden! Das ist nicht das Problem, denn die Variablen werden alle übernommen.

Mein Problem sieht jetzt wie folgt aus:
Mein Script soll nun die Variablen verwenden um die Tabelle in einer seperaten Datei (die vom Script erstellt wird) gespeichert werden! Doch anstatt alle Zeilen des Formulars zu erstellen wird nur die Letzte übernommen.

Hier die Scripts:

das formular: (funktioniert einwandfrei, auch die java funktionen! Müsst ihr euch nicht ansehen wenn ihr nicht wollt)
HTML:
<script language="JavaScript1.2">

function clone_this(){

	NewRow = document.getElementById('tab').lastChild.cloneNode(true);
	document.getElementById('tab').appendChild(NewRow);
	
	var i = document.getElementById('tab').childNodes.length;
	
	for(j=0;j<document.getElementById('tab').lastChild.getElementsByTagName('input').length;j++){
		
		if(j == 0){
			var spalte = 'add';
		}
		
		else if(j == 1){
			var spalte = 'data';
		}
		
		var newname = spalte + i;
		
		document.getElementById('tab').lastChild.getElementsByTagName('input')[j].setAttribute('name', newname);
		//var name = document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].name;
		
		document.getElementById('tab').lastChild.getElementsByTagName('input')[j].value='';
		
		document.getElementById('zeilen').setAttribute('value', i);
		
	}
}	
	
function delete_row(){
	var zaehlen = document.getElementById('tab').childNodes.length;
	if(zaehlen > 1){
	var Knoten = document.getElementById ('tab').lastChild;   //Letzte Zeile der Tabelle ermitteln
	document.getElementById ('tab').removeChild(Knoten);   //Letzte Zeile der Tabelle entfernen
	}
}

</script>

<form method="post" name="create_data" action="create.php">
<table>
<tr bgcolor="#aaaaaa"> 
      <td valign="top"><font size="2">zusätzliche daten (<i>additional data</i>):</font></td>
      <td colspan="2" align="right">
	  <table width="100%" border="1" bordercolor="#770000" cellspacing="0" cellpadding="2" id="tab" style="border-collapse:collapse;">
          <tr>
            <td width="40%"><input type="text" name="add1"></td>
            <td width="60%"><input type="text" name="data1"></td>
          </tr>
        </table>
		<input type="hidden" name="zeilen" id="zeilen" value="1"><input type="button" value="+" onClick="clone_this()"><input type="button" value="-" onClick="delete_row()">
		</td>
    </tr>
</table></form>


create.php (gekürzt):
PHP:
if(isset($_POST['zeilen'])){
	$zeilen = $_POST['zeilen'];
}
$i = $zeilen;
	while ($i > 0) {
  		$i--;
  		if (!($i%2))
		continue;
}
for($x=1;$x<=$zeilen;$x++){
	
	echo "$x";

	if($i == $x){
		$farbe = '#aaaaaa';
	}
	else{
		$farbe = '#cccccc';
	}
	
	$add['$x'] = $_POST['add'.$x];//daten aus den testfeldern werden übernommen und in eine variable geladen
	$data['$x'] = $_POST['data'.$x];
	ob_start();
	if($add['$x'] == "" && $data == ""){//ist keine eingabe vorhanden...
 			echo  "<tr><td></td><td bgcolor='#990000'>&nbsp</td><td bgcolor='".$farbe."'>&nbsp</td><td bgcolor='".$farbe."'>&nbsp</td></tr>";//wird eine zeile begonnen und darin eine leeren zelle generiert
		}
		elseif($add['$x'] !== "" && $data['$x'] !== ""){//ist eine eingabe vorhanden...
 			echo  "<tr><td></td><td bgcolor='#990000' align='center'>".$add['$x']."</td><td bgcolor='".$farbe."' align='center'>".$data['$x']."</td><td bgcolor='".$farbe."'>&nbsp</td></tr>";//wird eine zeile begonnen und darin eine zelle, welche die eingabe beinhaltet, generiert
		}
	$additional = ob_get_contents();
	ob_end_clean();

$vorlage = '<table>'.$additional.'</table>

$file_exists = FALSE; 
$verz = opendir($pfad); 
while($files = readdir($verz)){ 
	if($files !== "." && $files !== ".."){ 
	$files = substr($files,0,strlen($files)-4); 
		if($files == $dat_nam) { $file_exists = TRUE; break;} 
	} 
} 
closedir($verz); 


if($file_exists){ 
  	echo "<br><br><font size='2'>diese datei ist bereits vorhanden. wählen sie einen anderen namen oder löschen sie die bereits vorhandene datei mit dem entsprechenden punkt im forumlar.</font>"; 
} 
else { 
  	echo "<br><br><font size='2'>die datei wird erstellt bitte warten...</font>"; 
$neuedatei = fopen($pfad2.".php", "a+"); 
	fwrite($neuedatei, $vorlage);
	fclose($neuedatei); 
	if(file_exists($pfad2.".php")) {
		echo "<font size=\"2\">datei \"".$dat_nam.".php\" wurde erstellt.</font><br><br>";
	}
	else{
		echo "<font size=\"2\">datei \"".$dat_nam.".php\" konnte nicht erstellt werden.</font><br><br>";
	}
}

Wenns was mit der Variable "$farbe" zu tun hat (was ich nicht glaube, auch wenn ich mich damit noch genauer beschäftigen muss) wie könnte ich das DANN lösen

Bitte helft mir, ich bin am Verzeweifeln!! :confused:

greetz
Nero
 
Zuletzt bearbeitet:
hallo,
zunächst sehe ich da einige syntaxfehler:
PHP:
elseif($add['$x'] !== "" && $data['$x'] !== "")

wenn du elseif verwendest brauchst du keine extra bedingung dahinter, denn elseif heißt ja schon "jeder andere Fall", zum 2. nicht !== sondern !=

würd ich so schreiben:
PHP:
if($add['$x'] != "" && $data['$x'] != "")

was du mit der while schleife erreichen willst ist mir auch nicht ganz klar, denn eigentlich macht die keinen sinn. du zählst i ja immer bis auf 1 runter, kannst ja gleich i=1 setzen.

ansonsten hmm... alles etwas umständlich in meinen augen, sollte aber evtl funktionieren
 
Ich weiß, dass es umständlich ist, aber ich kann nur das einsetzen, was mir zur Verfügung steht und das ist noch nicht so viel da ich Anfänger bin!

Aber danke für die antwort! ich schau mal was es bringt!

thx

nero
 
Zurück