variabler array

Bigbutcher

Erfahrenes Mitglied
Hi miteinander.

AAAALSO, ich hab ein Eingabefeld wo man eine Zahl einfügen muss die die Anzahl von Eingabefeldern auf der nächsten Seite angibt. Also wenn man 4 eingibt kommen auch 4 eingabefelder.
Soweit so gut. Ich hab auch jedes einzelne Feld nummeriert. Das ganze sieht so aus

for($x=1;$x<=$schuss;$x++)
{
echo "$x.</td><td><input type=\"Text\" name=\"e[$x]\" value=\"\" size=\"2\" maxlength=\"2\"></td></tr><tr><td>";
}

so und ich will jetzt wenn man alle Felder ausgefüllt hat und dann auf OK gegangen ist dass die Felder in einen Array zusammengefasst werden.
also array (e[1],...,e[4]);
aber da ich keine konstante Anzahl von Feldern hab, hab ich mir gedacht dass man das irgendwie mit einer for schleife realisieren muss. glaub ich zumindest.
Weiss einer wie das gehen könnte?

MfG
 
Mhh ... Ist das nicht doppelt gemoppelt? Du erstellst so doch eine exakte Kopie von $e. $e ist doch schon ein Array. Das einzige, was sich verschiebt, ist der Index ... Oder hab ich da jetzt was grundlegendes falsch verstanden?
 
nicht ganz...

mom ich poste mal die kompletten texte

intern2.php

hier kann man auswählen wer was wie oft macht

<?
session_start();
include("top.php");
include("dbconnect.php");
if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
echo "<tr><td width=\"400\">";
echo "</td><td width=\"80\">";
echo "<a href=\"logout.php\">Logout</a>";
echo "</td></tr><tr><td>";
?>
<form name="einstellungen" action="ergebnisse.php" method="post"><select name="Gruppe" size="1">
<option value="Schüler">Sch&uuml;ler</option>
<option value="Junioren A">Junioren A</option>
<option value="Junioren B">Junioren B</option>
<option value="Herren">Herren</option></select>
</td></tr><tr><td>
<select name="Disziplin" size="1">
<option value="Aufgelegt">Aufgelegt</option>
<option value="Freihand">Freihand</option>
<option value="Kniend">Kniend</option>
<option value="Liegend">Liegend</option></select>
</td></tr><tr><td>
Anzahl der Sch&uuml;sse:&nbsp;<input type="Text" name="schuss" value="" size="2" maxlength="2">
</td></tr><tr><td>
<input type="Submit" name="weiter" value="weiter"></form>
</td></tr>
<?
} else {
echo "Ihre Daten waren leider falsch. Wenn weiterhin Probleme auftreten sollten, dann kontaktieren Sie die Webmaster.";
}
include("down.php");
?>


ergebnisse.php

hier werden die Felder ausgegeben

<?
session_start();
include("top.php");
include("dbconnect.php");
if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
echo "<tr><td width=\"400\">";
echo "</td><td width=\"80\">";
echo "<a href=\"logout.php\">Logout</a>";
echo "</td></tr>";
echo "<tr><td colspan=\"2\"><table><tr><td>";
session_register("schuss");
session_register("Gruppe");
session_register("Disziplin");
echo "<tr><td><form action=\"insertergebnisse.php\">";
echo "Name:</td><td><select name=\"name\" size=\"\">";
$abfrage = "SELECT SName FROM Schuetzen";
$ergebnis = mysql_query($abfrage) or die (mysql_error());
while($row = mysql_fetch_object($ergebnis))
{
echo "<option value=\"";
echo "$row->SName";
echo "\">";
echo "$row->SName";
echo "</option>";
}
echo "</select></td></tr><tr><td>";
for($x=1;$x<=$schuss;$x++)
{
echo "$x.</td><td><input type=\"Text\" name=\"e[$x]\" value=\"\" size=\"2\" maxlength=\"2\"></td></tr><tr><td>";
}
echo "</td></tr><tr><td colspan=\"2\"><input type=\"Submit\" name=\"Insert\" value=\"Ergebnisse eintragen\"></form></td></tr></td></tr></table></td></tr>";
} else {
echo "Ihre Daten waren leider falsch. Wenn weiterhin Probleme auftreten sollten, dann kontaktieren Sie die Webmaster.";
}
include("down.php");
?>

die input felder in der forschleife hab ich ja schon manuell mit einem Index versehen.
Nu will ich auf der nächsten Seite halt alle Inputfelder zusammenfassen. also e[1], e[2] etc. mein Problem is ja dass es keinen konstante Anzahl der inputfelder existiert.

und insertergebnisse.php sieht im mom so aus

<?
session_start();
include("top.php");
include("dbconnect.php");
if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
echo "<tr><td width=\"400\">";
echo "</td><td width=\"80\">";
echo "<a href=\"logout.php\">Logout</a>";
echo "</td></tr><tr><td>";
for($x=1;$x<=$schuss;$x++)
{
$summe = $summe + $e[$x];
}
$eintrag = "INSERT INTO ergebnisse (Name, Ergebnis, Summe, Gruppe, Disziplin) VALUES ('$name', 'e[$x]', '$summe', '$Gruppe', '$Disziplin')";
$eintragen = mysql_query($eintrag);
echo "</td></tr>";
session_unregister("schuss");
session_unregister("Gruppe");
session_unregister("Disziplin");
} else {
echo "Ihre Daten waren leider falsch. Wenn weiterhin Probleme auftreten sollten, dann kontaktieren Sie die Webmaster.";
}
include("down.php");
?>

hab mir gedacht dass es so aussieht

for (x=1, x<=schuss, x++)
{
für jeden durchgang erhöhst du e[$x] um 1 und packst den wert in einen array
}
der array soll dann so eingefügt werden
10 9 5 10 etc
 
Also ich hab mir das jetz mal angesehen. Wenn du in einem Formular die Felder nach dem Schema e[1], e[2], e[n], ... benennst, bekommst du in der Zieldatei (bei Dir insertereignisse.php) ein Array mit dem Namen $e. D.h. $e ist also bereits ein Array. Um es jetzt z.B. in der Form 5 10 15 etc. auszugeben machst du folgendes:

PHP:
$summe = "";
for ($x = 1; $x < count ($e); $x++)
{
  $summe .= $e." ";
}

// Dann evtl. noch das letzte Leerzeichen wegschneiden
$summe = substr ($summe, -1, 1);

Wenn ich richtig verstanden habe, sollte das Feld $summe doch diesen String enthalten? Weil du hast in deinem Script $summe = $summe + $e[$x] geschrieben, was es ja addiert.

Wenn das jetzt immernoch nicht richtig war, dann musst mich nochmal aufklären. :-)
 
also summe soll ja addiert werden (deshalb ja auch summe :P)
und nebenbei soll das verknüpft werden, wie oben beschireben, deine Methode gibt leider nur den letzten Wert aus und nicht alle...
 
Irgendwie redet ihr beide aneinander vorbei :-(

und auch ich habe die frage nicht wirklich verstanden :-(

aber
Möglichkeit A du möchtes die Gesamtpunktzahl (die Summe aller Werte)

$summe = array_sum($e);

oder du möchtest eine Liste der Ergebnisse als String
Motto: 10 9 5 10 etc

$liste = implode(" ",$e);
 
ich wollte ja beides :)
die Summe war ja nicht das Problem
nur halt das aneinanderrheien

aber THX
jetzt funktionierts
 
Zurück