Jump to content



- USB-Partner (Interessiert?) -
Photo

[PHP] Array abarbeiten


  • Please log in to reply
130 replies to this topic

#1
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
ich möcht per js ne tabelle dynamisch erweitern, jemand ne idee wo der fehler steckt?

ich bekomm immer "document.getElementById ist Null"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Besprechungsbericht</title>
<link rel="stylesheet" href="file:///R|/styles/oe322.css">
</head>
<body>

<script type="text/javascript">
function numRows(table_id) {
		if (!document.getElementById || !document.getElementsByTagName) {
				return;
		}
		var rows = document.getElementById(table_id).getElementsByTagName('tr');
		var numRows = 0;
		for (i = 0; i < rows.length; i++) {
				numRows=numRows+1;
		}
		return numRows;
}
function addRow(table_id,row_name_id) {
		if (!document.getElementById || !document.createElement || !document.createTextNode) {
				alert ("Ihr Browser unterstützt die Funktion leider nicht");
				return;
		}
		var table = document.getElementById(table_id);
		var lastRow = numRows(table_id);
		var rowNum = lastRow+1;
		if (navigator.platform == "MacPPC") {
				lastRow = lastRow*2;
		}
		var row = table.insertRow(lastRow);
		var cell_1 = row.insertCell(0);
		var textNode = document.createTextNode("Untermenu #" + rowNum);
		cell_1.appendChild(textNode);
		var cell_2 = row.insertCell(1);
		var el = document.createElement('input');
		el.setAttribute('type', 'text');
		el.setAttribute('name', 'row_name_id' + rowNum);
		el.setAttribute('id', 'row_name_id' + rowNum);
		el.setAttribute('size', '60');
		cell_2.appendChild(el);
}
function remRow(table_id) {
		if (!document.getElementById) {
				alert ("Ihr Browser unterstützt die Funktion leider nicht");
				return;
		}
		var table = document.getElementById(table_id);
		var lastRow = numRows(table_id);
		if (lastRow > 1) {
				table.deleteRow(lastRow-1);
		} else {
				alert("Es muss minedestens ein Untermenüpunkt bestehen bleiben");
		}
}
</script>

<?php
		error_reporting(E_ALL);
		$timestamp = time();
		$datum = date("d.m.Y",$timestamp);
		$uhrzeit = date("H:i",$timestamp);
?>

<h1>Besprechungsbericht</h1>

<form action="post.php" method="post">
	Schriftfuehrer:
	<select name="Author">
		<option selected="selected">Bitte wählen</option>
		<option value="2">H.Billion</option>
		<option value="3">T.Koch</option>
		<option value="4">J.Ketabchy</option>
		<option value="5">I.Praum</option>
		<option value="6">M.Schroeder</option>
		<option value="7">F.Luettgens</option>
	</select>
  <br><br>
  <strong>Datum:</strong> <?php echo $datum ?>
  <input name="startzeit" type="text" size="5" maxlength="5" value="<?php echo $uhrzeit; ?>"> Uhr bis

  <input name="endzeit" type="text" size="5" maxlength="5" value="14:30"> Uhr.

  <br><br><strong>Teilnehmer:</strong><br>
  <input type="checkbox" name="teilnehmer" value="H.Billion"> H.Billion <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="T.Koch"> T.Koch <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="J.Ketabchy"> J.Ketabchy <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="I.Praum"> I.Praum <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="H.Schroeder"> H.Schroeder <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="U.Bergefeld"> U.Bergefeld <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="F.Luettgens"> F.Luettgens <?php echo "\t" ?>

<br><br>
<table width="900" height="283" border="1" align="left" id="table_id">
  <tr>
	<td><strong>Thema</strong></td>
	<td><strong>Aktion</strong></td>
	<td><strong>Bearbeitung</strong></td>
	<td><strong>Termin</strong></td>
  </tr>
  <tr>
	<td>Früh/Spätdienst kommende Woche</td>
	<td>A</td>
	<td>Alle</td>
	<td>Heute</td>
  </tr>
  <tr>
	<td><textarea name="thema1_thema" cols="90" rows="2"></textarea></td>
	<td><select name="thema1_aktion" size="1"><option>A</option><option>I</option></select></td>
	<td><input name="thema1_bearbeitung" type="text" size="12" maxlength="30"></td>
	<td><input name="thema1_termin" type="text" size="12" maxlength="30"></td>
  </tr>
  <tr>

  <tr>
  <td>
<input type=button value="+" onClick="addRow()">
<input type=button value="-" onClick="remRow()">
<input type="submit" value="Absenden" />
<input type="reset" value="Reset" />
  </td>
  </tr>
</table>

  <br><br><br><br><br><br>
</form>
</body>
</html>

Edited by Mindfuck, 27. Aug. 2007 - 10:21 Uhr.

  • 0

#2
Guest_Valhalla_*

Guest_Valhalla_*
  • Guests
So bewandert bin ich darin auch net
aber wenn de den Code in den head schreibst und
nur die Ausgabe in den body?!
Ka ....
  • 0

#3
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M
Die Funktion addRow() erwartet 2 Argumente: zum einen die ID der Tabelle (in deinem Fall 'table_id'), zum anderen eine 'row_name_id'.
Beide uebergibst Du jedoch nicht.

Im Code selbst greifst Du auf die Variablen (die ja nicht uebergeben werden, d.h. leer sind) zurueck.

Alternativ zum uebergeben der Variablen kannst Du in dem o.g. Codebeispiel auch die getElementById(table_id) durch getElementById('table_id') ersetzen.
  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#4
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
danke! was fehlende '' manchma ausmachen können :banga:

zumindest wird jetzt die spalte hinzugefügt, ich probier mal weiter :]
  • 0

#5
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
Hm... also... es geht schleppend vorran...


ich hab nu 2 kleine probleme die wohl eher verständnissfragen sind:

1: es werden nur 2 neue rows hinzugefügt, row.insertCell(2) setzt mir die textbox in den ersten row, nicht den 3.

2: ich hab ein select pulldown menü, die syntax lautet ja <select><option>eins</option><option>zwei</option></select>

wenn ich nu per document.createElement('select'); die selectbox hinzufüge, ist sie leer weil die optionen nicht defniert sind.

ein set.Attribute('option', 'eins'); geht ja natürlich auch nicht da es ja keine select option ist sondern seperat getagged werden muss, wie geh ich da per js vor?

der aktuelle code:

[snip]

<script type="text/javascript">
function numRows(table_id) {
		if (!document.getElementById || !document.getElementsByTagName) {
				return;
		}
		var rows = document.getElementById(table_id).getElementsByTagName('tr');
		var numRows = 0;
		for (i = 0; i < rows.length; i++) {
				numRows=numRows+1;
		}
		return numRows;
}
function addRow(table_id,row_name_id) {
		if (!document.getElementById || !document.createElement || !document.createTextNode) {
				alert ("Ihr Browser unterstützt die Funktion leider nicht");
				return;
		}
		var table = document.getElementById(table_id);
		var lastRow = numRows(table_id);
		var rowNum = lastRow+1;
		if (navigator.platform == "MacPPC") {
				lastRow = lastRow*2;
		}
		var row = table.insertRow(lastRow);

		var cell_1 = row.insertCell(0);
		var em = document.createElement('textarea');
		em.setAttribute('name', 'thema_thema' + rowNum);
		em.setAttribute('id', 'row_name_id' + rowNum);
		em.setAttribute('cols', '90');
		em.setAttribute('rows', '3');
		cell_1.appendChild(em);

		var cell_2 = row.insertCell(1);
		var el = document.createElement('select');
		el.setAttribute('option', 'A');
		el.setAttribute('option', 'I');
		el.setAttribute('name', 'thema_aktion' + rowNum);
		el.setAttribute('id', 'row_name_id' + rowNum);
		el.setAttribute('size', '1');
		cell_2.appendChild(el);

/*	  var cell_3 = row.insertCell(2);
		var ef = document.createElement('input');
		ef.setAttribute('type', 'text');
		ef.setAttribute('name', 'thema_bearbeitung' + rowNum);
		ef.setAttribute('id', 'row_name_id' + rowNum);
		ef.setAttribute('size', '12');
		ef.setAttribute('maxlenght', '30');
		cell_1.appendChild(ef);

		var cell_4 = row.insertCell(3);
		var eg = document.createElement('input');
		eg.setAttribute('type', 'text');
		eg.setAttribute('name', 'thema_termin' + rowNum);
		eg.setAttribute('id', 'row_name_id' + rowNum);
		eg.setAttribute('size', '12');
		eg.setAttribute('maxlenght', '30');
		cell_1.appendChild(eg);
*/


}
function remRow(table_id) {
		if (!document.getElementById) {
				alert ("Ihr Browser unterstützt die Funktion leider nicht");
				return;
		}
		var table = document.getElementById(table_id);
		var lastRow = numRows(table_id);
		if (lastRow > 3) {
				table.deleteRow(lastRow-1);
		} else {
				alert("Es muss minedestens ein Untermenüpunkt bestehen bleiben");
		}
}
</script>
[snip]

edit:
maaan, streicht 1, soo dämlich... bleibt das select problem ^^

Edited by Mindfuck, 23. Aug. 2007 - 12:17 Uhr.

  • 0

#6
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M
(a) scheu dir mal http://de.selfhtml.o...ente.htm#select an .. dort gibt es (auch fuer die anderen Elemente) massig Beispiele.

(b) Codeschnippsel am besten auf einer nopaste-Seite einfuegen. Dort hat man meist gleich eine Syntaxhervorhebung und die Zeilen sind nummeriert.

http://www.rafb.net/paste/
http://nopaste.php-quake.net/
http://nopaste.info/
http://pastebin.com/
  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#7
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
lol, ich kenn die no-paste seiten, aber bei den paar zeilen... :banga:

also ich hab das jetz so:

var cell_2 = row.insertCell(1);
		var el = document.createElement('select');
		el.setAttribute('lenght', '2');
		status = new Array(A, I);
		el.setAttribute('options', status);
		el.setAttribute('name', 'thema_aktion' + rowNum);
		el.setAttribute('id', 'row_name_id' + rowNum);
		el.setAttribute('size', '1');
		cell_2.appendChild(el);


ab0r: er tuts nich, will das 'status' array einfach nich übernehmen... gna!
  • 0

#8
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12,871 posts
  • Geschlecht:M
status = new Array(A, I);

was ist denn A und I?

:P das seh ich ja jetzt erst:

me == javanoob


änder das bitte in javascriptnoob!
java und javascript sind zwei verschiedene paar schuhe und überhaupt nicht zu vergleichen. :banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#9
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
geändert, wobei 's für mich aufs selbe rauskommt = Schmuh! ^^

A & I sind keine variablen werte, A steht für Aktion, I für Information
  • 0

#10
neticen

neticen

    Chicagohouser

  • Mitglied
  • 74 posts
  • Geschlecht:M

lol, ich kenn die no-paste seiten, aber bei den paar zeilen... /public/style_emoticons/default/wink.gif...

also ich hab das jetz so:

var cell_2 = row.insertCell(1);
		var el = document.createElement('select');
		el.setAttribute('lenght', '2');
		status = new Array(A, I);
		el.setAttribute('options', status);
		el.setAttribute('name', 'thema_aktion' + rowNum);
		el.setAttribute('id', 'row_name_id' + rowNum);
		el.setAttribute('size', '1');
		cell_2.appendChild(el);


ab0r: er tuts nich, will das 'status' array einfach nich übernehmen... gna!

vielleicht hilft manuelles anhängen der optionen .. so irgendwie

var el = document.createElement('select');
var opt = new Option(status[A], status[I]);
el.options.push(opt);
  • 0

#11
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
hm nope, geht auch nich :/
  • 0

#12
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M

(a) scheu dir mal http://de.selfhtml.o...ente.htm#select an .. dort gibt es (auch fuer die anderen Elemente) massig Beispiele.


ich krigs beispiel nich adaptiert... die haben den select-tag auch im html code drin... ?! :P


var cell_2 = row.insertCell(1);
		var el = document.createElement('select');
		el.setAttribute('lenght', '2');
		el.setAttribute('name', 'thema_aktion' + rowNum);
		el.setAttribute('id', 'row_name_id' + rowNum);
		el.setAttribute('size', '1');
		var opt = document.createElement('option');
		opt.setAttribute('option', 'I');
		cell_2.appendChild(el);
		cell_2.appendChild(opt);

kann das nichma eben einer für mich fixen damit ich weiter komm? :P

select liste is immernoch leer :banga:

Edited by Mindfuck, 24. Aug. 2007 - 09:41 Uhr.

  • 0

#13
neticen

neticen

    Chicagohouser

  • Mitglied
  • 74 posts
  • Geschlecht:M
in der selectbox sollen also A und I stehen wenn ich das richtig verstehe. so geht's:

var el = document.createElement('select');var status = new Array("A", "I");for (var i = 0; i < status.length; i++){      var opt = new Option(status[i], status[i]);      el.options[el.length] = opt;}cell_2.appendChild(el);

die option musst du an die selectbox hängen und nicht an cell2 :banga:
  • 0

#14
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M

in der selectbox sollen also A und I stehen wenn ich das richtig verstehe. so geht's:

var el = document.createElement('select');var status = new Array("A", "I");for (var i = 0; i < status.length; i++){      var opt = new Option(status[i], status[i]);      el.options[el.length] = opt;}cell_2.appendChild(el);

die option musst du an die selectbox hängen und nicht an cell2 /public/style_emoticons/default/wink.gif...

:banga: :P


danke dir! :P
  • 0

#15
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
so, nun habe ich mein formular und möchte es in einem php script abarbeiten, dabei werden die formularfelder so dargestellt: "thema_aktion1" bzw "thema_aktion2" 3,4,5 usw.

Ich denke da könnte es mehrere lösungsansätze geben um alle datensätze abzuarbeiten, ich würde jetzt das ganze array mit while durchlaufen und per regex prüfen um welchen namen (welches form) es sich handelt und dannach auswerten bzw. bearbeiten.

gibt es eine bessere lösung?

ich hab nie wirklich programmieren 'gelernt', mich würde interessieren was in dem fall 'best practice' ist...


das hier is schon wieder so hochgezüchtet :banga:
http://aktuell.de.se...larvalidierung/

Edited by Mindfuck, 27. Aug. 2007 - 10:28 Uhr.

  • 0

#16
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
erstmal der code, fragen stehn drunter:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Besprechungsbericht</title>
<link rel="stylesheet" href="file:///R|/styles/oe322.css">
</head>
<body>

<?php
$timestamp = time();
$datum = date("d.m.Y",$timestamp);

echo <<<EOT

<table width="1000" border="1">
  <tr>
	<td colspan="6"><h2 align="center">Besprechungsbericht</h2></td>
  </tr>
  <tr>
	<td width="100"><strong>Betreff:</strong></td>
	<td colspan="5">Team-Meeting AIX </td>
  </tr>
  <tr>
	<td><strong>Datum:</strong></td>
	<td width="206">$datum</td>
	<td width="75"><strong>Uhrzeit:</strong></td>
	<td width="305">$_POST[startzeit] bis $_POST[endzeit]</td>
	<td width="94"><strong>Wöchentlich:</strong></td>
	<td width="180">Donnerstags</td>
  </tr>
  <tr>
	<td><strong>Abteilung/Ort:</strong></td>
	<td colspan="5">OE322/1 - Höherweg 200 - V15 </td>
  </tr>
  <tr>
	<td><strong>Teilnehmer:</strong></td>
	<td colspan="5">$_POST[teilnehmer]</td>
  </tr>
  <tr>
	<td><strong>Verteiler:</strong></td>
	<td colspan="5">Teilnehmer, I. Opitz, C. Ramm, W. Beckers </td>
  </tr>
</table>

<br>

<table width="1000" border="1">
  <tr>
	<td width="756"><div align="center"><strong>Thema</strong></div></td>
	<td width="45"><div align="center"><strong>Aktion</strong></div></td>
	<td width="82"><div align="center"><strong>Bearbeitung</strong></div></td>
	<td width="89"><div align="center"><strong>Termin</strong></div></td>
  </tr>
  <tr>
  <tr>
	<td>Früh/Spätdienst kommende Woche</td>
	<td><div align="center">A</div></td>
	<td><div align="center">Alle</div></td>
	<td><div align="center">Heute</div></td>
  </tr>
  <tr>
	<td>$_POST[thema_thema1]</td>
	<td><div align="center">$_POST[thema_aktion1]</div></td>
	<td><div align="center">$_POST[thema_bearbeitung1]</div></td>
	<td><div align="center">$_POST[thema_termin1]</div></td>
  </tr>
  <tr>
	<td>$_POST[thema_thema2]</td>
	<td><div align="center">$_POST[thema_aktion2]</div></td>
	<td><div align="center">$_POST[thema_bearbeitung2]</div></td>
	<td><div align="center">$_POST[thema_termin2]</div></td>
  </tr>
  <tr>
	<td>$_POST[thema_thema3]</td>
	<td><div align="center">$_POST[thema_aktion3]</div></td>
	<td><div align="center">$_POST[thema_bearbeitung3]</div></td>
	<td><div align="center">$_POST[thema_termin3]</div></td>
  </tr>
  <tr>
	<td>$_POST[thema_thema4]</td>
	<td><div align="center">$_POST[thema_aktion4]</div></td>
	<td><div align="center">$_POST[thema_bearbeitung4]</div></td>
	<td><div align="center">$_POST[thema_termin4]</div></td>
  </tr>
  <tr>
	<td>$_POST[thema_thema5]</td>
	<td><div align="center">$_POST[thema_aktion5]</div></td>
	<td><div align="center">$_POST[thema_bearbeitung5]</div></td>
	<td><div align="center">$_POST[thema_termin5]</div></td>
  </tr>
</table>

EOT;
?>

1. Ich habe die Tabelle jetzt statisch, wie kann ich das dynmisch am besten lösen das für jede neue übergebene zeile auf der ausgabe eine zeile hinzugefügt wird?
- 1. mit while durchlaufen? (hab ich nich hinbekommen, php unterscheided sich da doch etwas von perl... :banga:
- 2. per js. auf der maske mitzählen lassen wie viele hinzugefügt wurden, den count in nem blind-form übergeben, auf ausgabe auswerten und die anzahl an spalten hinzufügen
- 3. foreach & regex ?

2. Ich habe checkboxen mit dem selben namen definiert, natürlich wird die variable immer wieder überschrieben und nur der namentlich letzte wert wird in $teilnehmer eingefügt, wie ist das zu lösen?

3. wie gehe ich später am besten vor wenn ich die letzten einträge des berichts der vor-woche einlesen will? sollte ich es ggfs. direkt alles in eine sql db speichern? erscheint mir von der aktualisierung der daten her am sinnvollsten, eigentlich wollte ich jedoch keine db nutzen um die anforderungen gering zu halten.

4. gibt es sonst noch etwas was ich verbessern sollte?
  • 0

#17
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M
Bei 'normalen' Formularen kommt man am besten wenn man die Einzelnen Felder getrennt abarbeitet
Man muss dort allerdings auch meist mit verschiedenen Daten arbeiten, die gesondert behandelt werden muessen (Normaler Text, Email-Adressen, Zahlen, Datumsangaben, u.s.w.)

Wenn alles ein Format hat reicht ein Array und dieses dann abarbeiten lassen.

Wie auch in Perl (und anderen Programmiersprachen) gibt es fuer PHP x Wege dies umzusetzen. DEN Weg gibt es nicht.

1. Ich habe die Tabelle jetzt statisch, wie kann ich das dynmisch am besten lösen das für jede neue übergebene zeile auf der ausgabe eine zeile hinzugefügt wird?
- 1. mit while durchlaufen? (hab ich nich hinbekommen, php unterscheided sich da doch etwas von perl... /public/style_emoticons/default/roll.gif...
- 2. per js. auf der maske mitzählen lassen wie viele hinzugefügt wurden, den count in nem blind-form übergeben, auf ausgabe auswerten und die anzahl an spalten hinzufügen
- 3. foreach & regex ?

Mit JavaScript wuerde ich ausklammern. Ob mit while oder foreach ist Geschmackssache. Wie gesagt .. x Wege ..



--

1. Ich habe die Tabelle jetzt statisch, wie kann ich das dynmisch am besten lösen das für jede neue übergebene zeile auf der ausgabe eine zeile hinzugefügt wird?
- 1. mit while durchlaufen? (hab ich nich hinbekommen, php unterscheided sich da doch etwas von perl... /public/style_emoticons/default/roll.gif...
- 2. per js. auf der maske mitzählen lassen wie viele hinzugefügt wurden, den count in nem blind-form übergeben, auf ausgabe auswerten und die anzahl an spalten hinzufügen
- 3. foreach & regex ?

Mit JavaScript wuerde ich ausklammern. Ob mit while oder foreach ist Geschmackssache. Wie gesagt .. x Wege ..

Kannst Du bitte noch den Code fuer das Inputfeld posten .. dann kann ich dir (warscheinlich) eine besser Loesung fuer die anderen Fragen geben.
  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#18
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
sicher, gern :]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Besprechungsbericht</title>
<link rel="stylesheet" href="file:///R|/styles/oe322.css">
</head>
<body>

<script type="text/javascript">
function numRows(table_id) {
		if (!document.getElementById || !document.getElementsByTagName) {
				return;
		}
		var rows = document.getElementById(table_id).getElementsByTagName('tr');
		var numRows = 0;
		for (i = 0; i < rows.length; i++) {
				numRows=numRows+1;
		}
		return numRows;
}
function addRow(table_id,row_name_id) {
		if (!document.getElementById || !document.createElement || !document.createTextNode) {
				alert ("Ihr Browser unterstützt die Funktion leider nicht");
				return;
		}
		var table = document.getElementById(table_id);
		var lastRow = numRows(table_id);
		var rowNum = lastRow+1;
		if (navigator.platform == "MacPPC") {
				lastRow = lastRow*2;
		}
		var row = table.insertRow(lastRow);

		var cell_1 = row.insertCell(0);
		var em = document.createElement('textarea');
		em.setAttribute('name', 'thema_thema' + rowNum);
		em.setAttribute('id', 'row_name_id' + rowNum);
		em.setAttribute('cols', '90');
		em.setAttribute('rows', '3');
		cell_1.appendChild(em);

		var cell_2 = row.insertCell(1);
		var el = document.createElement('select');
		el.setAttribute('lenght', '2');
		el.setAttribute('name', 'thema_aktion' + rowNum);
		el.setAttribute('id', 'row_name_id' + rowNum);
		el.setAttribute('size', '1');
		var status = new Array("A", "I");
		for (var i = 0; i < status.length; i++){
				var opt = new Option(status[i], status[i]);
				el.options[el.length] = opt;
		}
		cell_2.appendChild(el);

		var cell_3 = row.insertCell(2);
		var ef = document.createElement('input');
		ef.setAttribute('type', 'text');
		ef.setAttribute('name', 'thema_bearbeitung' + rowNum);
		ef.setAttribute('id', 'row_name_id' + rowNum);
		ef.setAttribute('size', '12');
		ef.setAttribute('maxlenght', '30');
		cell_3.appendChild(ef);

		var cell_4 = row.insertCell(3);
		var eg = document.createElement('input');
		eg.setAttribute('type', 'text');
		eg.setAttribute('name', 'thema_termin' + rowNum);
		eg.setAttribute('id', 'row_name_id' + rowNum);
		eg.setAttribute('size', '12');
		eg.setAttribute('maxlenght', '30');
		cell_4.appendChild(eg);



}
function remRow(table_id) {
		if (!document.getElementById) {
				alert ("Ihr Browser unterstützt die Funktion leider nicht");
				return;
		}
		var table = document.getElementById(table_id);
		var lastRow = numRows(table_id);
		if (lastRow > 3) {
				table.deleteRow(lastRow-1);
		} else {
				alert("Es muss minedestens ein Untermenüpunkt bestehen bleiben");
		}
}
</script>

<?php
		error_reporting(E_ALL);
		$timestamp = time();
		$datum = date("d.m.Y",$timestamp);
		$uhrzeit = date("H:i",$timestamp);
?>

<h1>Besprechungsbericht</h1>

<form action="post.php" method="post">
	Schriftfuehrer:
	<select name="Author">
		<option selected="selected">Bitte wählen</option>
		<option value="2">H.Billion</option>
		<option value="3">T.Koch</option>
		<option value="4">J.Ketabchy</option>
		<option value="5">I.Praum</option>
		<option value="6">M.Schroeder</option>
		<option value="7">F.Luettgens</option>
	</select>
  <br><br>
  <strong>Datum:</strong> <?php echo $datum ?>
  <input name="startzeit" type="text" size="5" maxlength="5" value="<?php echo $uhrzeit; ?>"> Uhr bis

  <input name="endzeit" type="text" size="5" maxlength="5" value="14:30"> Uhr.

  <br><br><strong>Teilnehmer:</strong><br>
  <input type="checkbox" name="teilnehmer" value="H.Billion"> H.Billion <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="T.Koch"> T.Koch <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="J.Ketabchy"> J.Ketabchy <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="I.Praum"> I.Praum <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="M.Schroeder"> M.Schroeder <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="U.Bergefeld"> U.Bergefeld <?php echo "\t" ?>
  <input type="checkbox" name="teilnehmer" value="F.Luettgens"> F.Luettgens <?php echo "\t" ?>

<br><br>
<table width="900" height="283" border="1" align="left" id="table_id">
  <tr>
	<td bgcolor="#C0C0C0"><strong>Thema</strong></td>
	<td bgcolor="#C0C0C0"><strong>Aktion</strong></td>
	<td bgcolor="#C0C0C0"><strong>Bearbeitung</strong></td>
	<td bgcolor="#C0C0C0"><strong>Termin</strong></td>
  </tr>
  <tr>
	<td>Früh/Spätdienst kommende Woche</td>
	<td>A</td>
	<td>Alle</td>
	<td>Heute</td>
  </tr>
  <tr>
	<td><textarea name="thema_thema1" cols="90" rows="3"></textarea></td>
	<td><select name="thema_aktion1" size="1"><option>A</option><option>I</option></select></td>
	<td><input name="thema_bearbeitung1" type="text" size="12" maxlength="30"></td>
	<td><input name="thema_termin1" type="text" size="12" maxlength="30"></td>
  </tr>
</table>
<p style="clear:left"><br>
<pre>  <input type=button value="+ Zeile" onClick="addRow('table_id')"><input type=button value="- Zeile" onClick="remRow('table_id')">
  <input type="submit" value="Absenden" /><input type="reset" value="Reset" /></pre>

  <br><br><br><br><br><br>
</form>
</body>
</html>

  • 0

#19
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12,871 posts
  • Geschlecht:M
ich check nich was du da jetzt machen willst :P

liegt vermutlich daran das ich grad erst ausm koma erwacht bin :banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#20
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
die idee is einfach:

wir haben donnerstags immer team-meeting und tippen den scheiss per hand in dreamweaver, der zerschiesst uns aber laufend die formatierung und generell is die lösung ziemlich kagge, und weil ich ma wieder nichts zu tun hab dacht ich mir ich bastel ma ein "simples" web-frontend...
  • 0

#21
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12,871 posts
  • Geschlecht:M

2. Ich habe checkboxen mit dem selben namen definiert, natürlich wird die variable immer wieder überschrieben und nur der namentlich letzte wert wird in $teilnehmer eingefügt, wie ist das zu lösen?


dafür nimmste einfach ein array und nennst alle checkboxen gleich: teilnehmer[]
wenn das per post an php gesendet wurde kannste das dann wie ein normales array abarbeiten...

den rest guck ich mir mal nach nem kaffee an :banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#22
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M
Ach das ist deine komische JS Tabellenfunktion .. ok

also

wenn du eine unbestimmte menge an gleichen eingabefeldern hast kommst du am besten wenn du komplett mit arrays arbeitest.

hier mal ein bsp als normales formular:
<form method="post" action="test.php">
<input type="text" name="namen[]" />
<input type="text" name="daten[]" />

<input type="text" name="namen[]" />
<input type="text" name="daten[]" />

<input type="text" name="namen[]" />
<input type="text" name="daten[]" />

...
</form>

als folge kannst du per while oder foreach die felder ganz normal als array abarbeiten:
<?php
while ( list($formfeld,) = each($_POST['namen']) ) {
	echo htmlentities($_POST['namen'][$formfeld]).' - '.htmlentities($_POST['daten'][$formfeld]).'<br />';
}
?>

weiterhin solltest du auf das escapen achten. d.h. bei der (html)ausgabe htmlentities() benutzen, beim insert per mysql mysql_real_escape_string() (daemlich langer name, aber was solls) - das wirkt darstellungsfehlern, sql fehlern, xss attacken und sql injections vor.
  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#23
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
danke dir! ich hab genau gerade diesen link gefunden: http://php-faq.de/q/...r-checkbox.html

ach ich weiss auch nich warum ich das jetz mit php mach, wär ich doch bei perl geblieben :P

ich probier wieder mal und wenn was is weiss ich ja wo ich hilfe bekomm :banga:
  • 0

#24
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12,871 posts
  • Geschlecht:M
lol?
mit perl hätteste viel mehr frickelei.
geht nix über php/mysql für sowas...

good luck :banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#25
Seife

Seife

    Pimmel-Bingo

  • Mitglied
  • 2,124 posts
  • Geschlecht:M

danke! was fehlende '' manchma ausmachen können /public/style_emoticons/default/roll.gif...

zumindest wird jetzt die spalte hinzugefügt, ich probier mal weiter :]


oder was die immer ausmachen
  • 0
Siiieeeech

#26
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M

lol?
mit perl hätteste viel mehr frickelei.
geht nix über php/mysql für sowas...

good luck /public/style_emoticons/default/d.gif...


perl frickelei bin ich mittlerweile gewöhnt, php frickelei is neu :banga:
  • 0

#27
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12,871 posts
  • Geschlecht:M
in php haste erst keine frickelei :P

zumindest nich bei dem was du da machen willst :banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#28
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9,944 posts
  • Vorname: Palle™
  • Geschlecht:M

in php haste erst keine frickelei /public/style_emoticons/default/wink.gif...

zumindest nich bei dem was du da machen willst /public/style_emoticons/default/p.gif...


PHP ist IMMER Frickelei :P
  • 0

#29
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
kurze frage, kurze antwort:

<input type="textarea" cols="90" rows="3" name="thema[]" />

zeigt dennoch input type text, also nur nen einzeiler... bin ich zu wirsch gerad oder was?!
  • 0

#30
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12,871 posts
  • Geschlecht:M
<textarea name="thema[]" rows="3" cols="90"></textarea>

gehört halt nich zu den input-tags komischerweise ^^
einfach mit ins formular packen und ab dafür :P

@palle:
find ich gar nich :banga: :P
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users