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

Dynamisch erstellte HTML-Formulare auswerten

Postbauers Hank

New member
Hi, hab da ein kleines Problem mit meinem per PHP erstelltem Formular.
Wäre sehr dankbar wenn sich jmd dieser Sache annehmen könnte :)

Es handelt sich um ein formular, das wie folgt generiert wird:
Code:
<form action="../../Test/test.php" method="post" onsubmit="return valid();">
<table border="3" rules="groups" cellpadding="5" id="line_protokollieren">
<thead>
<tr>
	<td>nummer</td>
	<td><input type="text" name="nummer[]" onchange="pruefe();"></td>
	<td><select name="nummer[]" onchange="pruefe();">
		<option value="0">----</option>
		<?php
		$domain= $_COOKIE["c_domain"];
		$fp=fopen("../../tabelle.csv", "r");
		while(!feof($fp)){
	   		$zeile=fgetcsv($fp, 4096, ";");
   	  	 	$csv_array[]=$zeile;
      		}	       
		for($y=0, $x=1; $csv_array[$x+1][0]!=""; $x++){
			if($csv_array[$x][0]!="" && $csv_array[$x][1]==$domain){
				echo "<option value='$csv_array[$x][0]'>" . $csv_array[$x][0] . "</option>";
				}
			}
		?>
</select></td>
</tr>
</thead>
</table>
</form>
eine kleine erklärung: Es wird eine Tabelle ausgelesen und gewünschte werte in die Auswahlliste geschrieben, diese werden somit auswählbar, was auch wunderbar funktioniert.
die JS-Funktion pruefe(); sperrt nicht-benutzte Felder, was ebenfalls funktioniert

anschließend sollen in der test.php die, per Post verschickten, aus den Auswahlfeldern ausgewählten, werte ausgegeben werden

dazu soll folgender code verhelfen:
Code:
  $nummer=$_POST["nummer"];
echo "$nummer";

ausgegeben wird leidergottes aber nur:
Code:
Array

kann mir jemand weiterhelfen?

Schöne Grüße
Postbauers Hank
 
Moin,

du legst ja auch mittels
Code:
name="nummer[]"
ein Array an, die Ausgabe ist deshalb schon richtig.
Du kannst dir die Inhalte anzeigen lassen mittels:
PHP:
serialize($nummer);
oder aber einzeln ausgeben/verarbeiten mit einer FOR-Schleife:
PHP:
for ($e=0;$e<count($nummer);$e++) {
  $f=$e+1;
  echo 'Meine Nummer '.$f.': '.$nummer.'<br />';
}

Mehr zu PHP Arrays findest du hier:
http://de.php.net/array
 
Danke schonmal für die Hilfe,

aber folgender Code:
PHP:
serialize($nummer);

....erzeugt bei mir leider nur folgende Ausgabe:
Code:
a:1:{i:0;s:8:"Array[0]";}

anstelle dessen sollte hier eine Nummer stehen wie folgt:
Code:
+4991244431523


Kann es vielleicht sein, dass mit dem Formular das ganze Array übertragen wird und nicht der Angeklickte wert?
 
Code:
echo "<option value='$csv_array[$x][0]'>" . $csv_array[$x][0] . "</option>";
- überleg' dir mal, was du hier genau ausgibst.

PS: Ein Blick in den gesendeten Quelltext kann manchmal sehr hilfreich sein.
 
hab mir meinen Quelltext nochmal angeschaut $csv_array[$x][0] spuckt mir genau das aus, was gebraucht wird, und zwar die ebengenannte nummer
diese wird als Auswahloption in der Auswahlliste aufgeführt und kann somit ausgewählt werden.
dementsprechend glaube ich dass das genau der wert ist der für Value zum mitschicken des Formulars gebraucht wird und daher hab ich ihn dort auch eingetragen...

hab ich irgendwo nen denkfehler?
 
ich habe nur ein select mit dem name 'nummer' dafür noch ein alternatives Text-Eingabe-Feld mit dem name 'nummer', das aber bei selektion eines Elements der Auswahlliste per js deaktiviert wird.
daher die [] oder sind die trotzdem fehl am platz?
 
PHP:
$nummer=$_POST["nummer"];
echo "$nummer";

Dieser Code ist schwachsinnig, egal ob $_POST["nummer"] nun nen Array ist oder nicht. Zum einem gibt es keinerlei Grund den Wert aus dem $_POST-Array in eine andere Variable zu speichern, man kann/darf mit $_POST weiterarbeiten.
Zum anderen hat auch die zweite Zeile keinen Sinn. Die " sorgen dafür das PHP den folgenden Text für einen String hält, also mehr oder weniger alles genauso ausgibt wie es drin steht. Ausnahme sind Steuerzeichen wie Zeilenumbruch, Tabs und unter anderem auch PHP-Variablen. Da du aber nix anderes ausgibst, kann man das auch getrost weglassen.

PHP:
echo $_POST["nummer"];
hätte es auch getan.

Ist nicht weiter persönlich gemeint, aber dieser schlechte Stil scheint sich zu verbreiten, von daher wollte ich mal drauf hinweisen.
 
Ich bin immer noch der Meinung, dass du bei der von mir gezeigten Zeile nicht das ausgibst, was du ausgeben willst. Ich denke, du willst das:
Code:
echo "<option value='" . $csv_array[$x][0] . "'>" . $csv_array[$x][0] . "</option>";
ausgeben.
 
Danke schonmal für die Hilfe,

aber folgender Code:


....erzeugt bei mir leider nur folgende Ausgabe:
Code:
a:1:{i:0;s:8:"Array[0]";}

anstelle dessen sollte hier eine Nummer stehen wie folgt:
Code:
+4991244431523


Kann es vielleicht sein, dass mit dem Formular das ganze Array übertragen wird und nicht der Angeklickte wert?

Den Post hatte ich ganz überlesen.
Ich zweifel daran, dass die Nummer dort wirklich so ausgegeben wir.
Weil dann müsste dass serialized Array oben anders aussehen.
 
Ich zweifel daran, dass die Nummer dort wirklich so ausgegeben wir.
Weil dann müsste dass serialized Array oben anders aussehen.

die Nummern werden genau so in der auswahlliste ausgegeben.


Ich bin immer noch der Meinung, dass du bei der von mir gezeigten Zeile nicht das ausgibst, was du ausgeben willst. Ich denke, du willst das:
Code:
echo "<option value='" . $csv_array[$x][0] . "'>" . $csv_array[$x][0] . "</option>";
ausgeben.

ja diese schreibweise erscheint mir auch sinnvoller,
habs probiert, ergibt aber leidergottes das selbe ergebnis :(
 
änder dir dein onchange dochmal ab und lass dir mittels alert den value ausgeben
Code:
<select name="nummer[]" onchange="alert(this.value);">
 
Dann zeig mal bitte folgende Funktion:
"return valid()"

Ggf. wird da was manipuliert.
 
ich habe nur ein select mit dem name 'nummer' dafür noch ein alternatives Text-Eingabe-Feld mit dem name 'nummer', das aber bei selektion eines Elements der Auswahlliste per js deaktiviert wird.
daher die [] oder sind die trotzdem fehl am platz?

diesmal muss ich mich doch selbst quoten...
doch die eckigen klammern sind das problem, da ja kein array übergeben werden soll, sondern ein einzelner wert aus derm array...dass ich dafür nen halben tag brauch...owe....also danke an alle die mitgeholfen haben :)
 
Zurück
Oben