• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP/DOM: POST-Problem

djdaveat@mac.co

New member
Hi!

Ich arbeite momentan an einem Formular, das mir einige Sorgen bereitet. Der Quelltext dazu ist vollständig weiter unten.

Das Projekt dahinter ist eine Präsentation, die auf Folien basiert. Über das Formular will ich die Inhalte vom Benutzer einlesen, die ich dann auf die einzelnen Folien übertrage.


Problem 1)
Leider werden momentan über $_POST die Daten des (mittels DOM erstellten) DIVs im Formular nicht mitübertragen... /: Eigentlich müsste das mit DOM neu erstellte DIV doch folgende Werte über das Formular weiter unten (wo es ja eingebunden wird) mitschicken: 'content1', 'wahl1', 'titel1'. Passiert aber nicht /: Kann sich jemand denken, warum?
content0, wahl0 und titel0 (also das DIV; das ich direkt per Hand unten im Formular hineingecodet habe) werden übertragen...


Problem 2)
Die DIVs (momentan erst eines), die über DOM dynamisch erstellt werden, will ich nachher mittels PHP noch "vervielfältigen". Sprich: Wo momentan noch per Hand 'innen1'/'title1'... steht, soll nachher mittels der $test-Variable aufsteigend nummeriert werden, damit ich unendlich viele DIV's hinzufügen kann.
Das ganze mit DOM habe ich jetzt zwar fast geschafft (bis auf Problem Nummer 1), aber es war doch recht umständlich... ginge das nicht auch irgendwie einfacher?!


Problem 3)
Gibt's eine Möglichkeit, mein selbst so schmählich dahingefunzelte DOM-Werk über ein praktisches Skript oder sowas als Plain-Text anzeigen zu lassen? Also ich meine, dass ich zB meine lange Schlange von DOM-Zeugs wo reinkopiere und dann direkt sehe wie das aussieht als HTML. Denn das kann ich mir ja schon recht leicht vorstellen, dass einfach irgendwo ein Tag nicht geschlossen wird und die Formulardaten deswegen (siehe Problem 1) nicht abgeschickt werden können. Oder umgekehrt: eventuell hätte ich ja einfach das HTML-Zeugs wo reinkopieren können und automatisch das DOM-umgewandelte Zeugs gesehen?!


Hier also der Quelltext:

Code:
<html>
<head>
    <title>new</title>
    <script type="text/javascript">
    
    var test = 1;
	function addit(){
		var _mydiv = document.getElementById('newone');
		
		// als naechestes muessen wir die Tags definieren
		var _bolt = document.createElement('b');
		var _div = document.createElement('div');
		var _form = document.createElement('form');
		var _select = document.createElement('select');
		var _input = document.createElement('input');
		var _textarea = document.createElement('textarea');


		_mydiv.appendChild(_div);	
		_div.setAttribute('id','innen1');
		_div.setAttribute('style','border: 2px solid black');
	
		_div.appendChild(_select);
		_select.setAttribute('name','wahl1');
		_select.setAttribute('size','3');
	
		var _option1 = document.createElement('option');
		_select.appendChild(_option1);
		_opt1 = document.createTextNode('news');
		_option1.appendChild(_opt1);
	
		var _option2 = document.createElement('option');	
		_select.appendChild(_option2);
		_opt2 = document.createTextNode('video');
		_option2.appendChild(_opt2);
	
		var _option3 = document.createElement('option');
		_select.appendChild(_option3);
		_opt3 = document.createTextNode('custom');
		_option3.appendChild(_opt3);
	
		var _br1 = document.createElement('br');
		_div.appendChild(_br1);
		_title = document.createTextNode('Titel');
		_div.appendChild(_title);
		var _br2 = document.createElement('br');
		_div.appendChild(_br2);
	
		_div.appendChild(_input);
		_input.setAttribute('name','title1');
		_input.setAttribute('type','text');
		_input.setAttribute('size','30');
		_input.setAttribute('maxlength','30');
		_input.setAttribute('value','z.B. Datum');
		
		var _br3 = document.createElement('br');
		_div.appendChild(_br3);
		_cont = document.createTextNode('Content:');
		_div.appendChild(_cont); // koennte sein dass man das nicht an br sondern an div anhaengt!
		var _br4 = document.createElement('br');
		_div.appendChild(_br4);
		
		_div.appendChild(_textarea);
		_textarea.setAttribute('name','content1');
		_textarea.setAttribute('cols','50');
		_textarea.setAttribute('rows','10');
		
		_hinweis = document.createTextNode('Bitte hier den Inhalt hinein:');
		_textarea.appendChild(_hinweis);		
	}
	
	function removeit(){
		var _mydiv = document.getElementById('newone');
		_mydiv.removeChild(_mydiv.lastChild);
		
		if (test > 0) { test--; }
		
	}	
    
    </script>
</head>
</body>

<div id="newone" style="border: 2px solid blue;">

<!-- der dynamisch zu erstellende Teil --> 
<form method="post" action="speicher.php">
<div id="innen0" style="border: 2px solid black;">
   	 <select name="wahl0" size="3">
   	  <option>news</option>
      <option>video</option>
      <option>custom</option>
    </select>
  <br/>Titel:<br><input name="title0" type="text" size="30" maxlength="30" value="z.B. Datum" />
  <br/>Content:<br><textarea name="content0" cols="50" rows="10">Bitte hier den Inhalt hinein</textarea>
</div>  

  <!-- endet hier -->


</div>
<hr>
	<input type="button" id="mybutton" name="mybutton" value="add" onclick="addit()" />
	<input type="button" id="mybutton" name="mybutton" value="delete" onclick="removeit()" />
<hr>  
<input type="submit" value=" Absenden "> 
</form> 
</body>
</html>


Die PHP-Datei, auf die ich verweise, ist einfach simpel zum überprüfen:

Code:
<html>
<head>
    <title>new</title>
    <script type="text/javascript"></script>
</head>
<body>


Folgende Daten wurden abgeschickt: <br><br>

<?
echo $_POST['wahl0'];
?>
<br/>
<?
echo $_POST['title0'];
?>
<br/>
<?
echo $_POST['content0'];
?>
<br/>
<?
echo $_POST['wahl1'];
?>
<br/>
<?
echo $_POST['title1'];
?>
<br/>
<?
echo $_POST['content1'];
?>

</body>
</html>


Wäre über jede Hilfe dankbar /:
 
Zuletzt bearbeitet:
Du musst deine erzeugten Elemente auch irgendwann mal zu einem Formular hinzufügen. So wie ich das sehe erzeugst du zwar bei jedem Funktionsaufruf ein neues Form-Element, dieses verwendest du dann jedoch nicht weiter. Letztendlich werden alle Elemente zu dem Div-Element "newone" hinzugefügt. Das befindet sich jedoch nicht in einem Form-Element.

Problem 2 verstehe ich nocht nicht so ganz. Was hat das mit PHP zu tun? Deine Ids musst du mit Javascript verwalten, weil dein Server/PHP ja nicht mitbekommt ob da ne neue verteilt wird.

Was genau du bezweckst verstehe ich nicht ganz. Auf jeden Fall wird da noch einiger Mist erzeugt (Dein select hat Beispielsweise keinen Namen, kann also serverseitig nicht abgefragt werden).

zu 3.) Besorg dir mal FireBug, ist nen Plugin für FireFox das dir dein DOM anzeigt, inklusive der Änderungen von Javascript.

deine gesendeten Daten kannst du dir einfacher per
PHP:
echo '<pre>';
var_dump($_POST);
echo '</pre>';
anzeigen lassen
 
Du musst deine erzeugten Elemente auch irgendwann mal zu einem Formular hinzufügen. So wie ich das sehe erzeugst du zwar bei jedem Funktionsaufruf ein neues Form-Element, dieses verwendest du dann jedoch nicht weiter. Letztendlich werden alle Elemente zu dem Div-Element "newone" hinzugefügt. Das befindet sich jedoch nicht in einem Form-Element.

Problem 2 verstehe ich nocht nicht so ganz. Was hat das mit PHP zu tun? Deine Ids musst du mit Javascript verwalten, weil dein Server/PHP ja nicht mitbekommt ob da ne neue verteilt wird.

Was genau du bezweckst verstehe ich nicht ganz. Auf jeden Fall wird da noch einiger Mist erzeugt (Dein select hat Beispielsweise keinen Namen, kann also serverseitig nicht abgefragt werden).

zu 3.) Besorg dir mal FireBug, ist nen Plugin für FireFox das dir dein DOM anzeigt, inklusive der Änderungen von Javascript.

deine gesendeten Daten kannst du dir einfacher per
PHP:
echo '<pre>';
var_dump($_POST);
echo '</pre>';
anzeigen lassen


Ohhhhhh du bist ein Zauberer :D Stimmt, das hatte ich komplett übersehen, hab das <div> unten jetzt an die richtige Stelle geschoben und jetzt wird es auch übertragen... ausgezeichnet!

ad Problem 2: ja klar, per Javascript natürlich. War doch schon recht spät gestern und ich etwas verwirrt nach dem ganzen DOM-Gecode :) Select besitzt aber einen namen ('wahl1') und wird über $_POST auch schon verschickt!

Werde mir jetzt mal FireBug ansehen, vielleicht erspare ich mir damit in Zukunft einiges an Zeit.

Und danke für den Tipp mit der einfacheren Darstellung ;)

Vielen Dank für deine hilfreiche Hilfe :D Darauf kann ich jetzt aufbauen, werde mich aber sicher demnächst wieder mit Fragen melden :d
 
Hi! Wollte mich noch mal bedanken und mal updaten, ich habe durch deinen Tipp genug Motivation gefunden um in einer 17-Stunden-Schicht auch noch ein bisschen Ajax-Tutorials usw. durchzulesen und bin derweil auf diesem Stand:

new-screen.png


Das Design ist natürlich noch zu ändern und auch die Inhalte hie und da, aber es funktioniert schon wirklich viel... man kann die Bereiche innerhalb des schwarzen Rahmens über collapse/expand verkleindern/vergrößern, die einzelnen Blöcke dank Ajax verschieben, alles wird richtig gespeichert usw. usf. ... danke sehr noch mal! :)
 
Zurück
Oben