[php] Dynamisch aantal variabelen in form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:43
Ik ben bezig met het maken van een systeem om scores van leden van een clan bij te houden. Hierbij ben ik tegen een probleem aangelopen bij het versturen van de ingevoerde waardes via een form.
Ik heb nu het volgende om de waardes in te vullen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
case Wargegevens:
    $query = "SELECT id, nickname, ranking, nrwars, nrdead, nrkill, nrflag FROM members";
    $res = mysql_query($query) or die ("Database Error");
    
    echo "<br><hr><b>Change Wargegevens</b>";
    echo "<form action=\"$PHP_SELF\" method=\"post\">";
    echo "<table width=\"90%\">";
    echo "<tr><td>&nbsp;</td><td>Aantal Wars</td><td>Aantal kills</td><td>Aantal deads</td><td>Aantal flags</td><td>Interne Ranking</td></tr>";
    for ($i=0; $i< mysql_num_rows($res); $i++)
    {
        echo "<tr>";
        echo "<td>".mysql_result($res,$i,"nickname")."</td>";
        echo "<input type=\"hidden\" name=\"id".$i."\" value=\"".mysql_result($res,$i,"id")."\">";
        echo "<td><input size=6 name=\"war[$i]\" value=\"".mysql_result($res,$i,"nrwars")."\"></td>";
        echo "<td><input size=6 name=\"kill[$i]\" value=\"".mysql_result($res,$i,"nrkill")."\"></td>";
        echo "<td><input size=6 name=\"dead[$i]\" value=\"".mysql_result($res,$i,"nrdead")."\"></td>";
        echo "<td><input size=6 name=\"flag[$i]\" value=\"".mysql_result($res,$i,"nrflag")."\"></td>";
        echo "<td><input size=6 name=\"intern[$i]\" value=\"".mysql_result($res,$i,"ranking")."\"></td>";
        echo "</tr>";
    }           
    echo "<input type=\"hidden\" name=\"aantal\" value=\"".mysql_num_rows($res)."\">";
    echo "<tr><td colspan=\"6\"><input type=\"submit\" name=\"doe\" value=\"bijwerken\"></td></tr>";
    echo "</table></form>";
break;

En daarna dit om de nieuwe waardes in de database weg te schrijven:
PHP:
1
2
3
4
5
6
7
case bijwerken:
    for ($i=0; $i < $_POST[aantal]; $i++)
    {
        mysql_query("UPDATE members SET nrwars='$_POST[war".$i."]', nrdead='$_POST[dead".$i."]', nrkill='$_POST[kill".$i."]', 
                     nrflag='$_POST[flag".$i."]', ranking='$_POST[intern".$i."]' WHERE id='$_POST[id".$i."]'");
    }   
break;


Dit wil niet werken omdat er waarschijnlijk in een $_POST[....] geen variabalen voor kmogen komen (denk ik). Ook heb ik het al geprobeerd met een array, maar dan krijg je het volgende: $_POST[war[$i]] en daar krijg ik ook een parse error op.

Ik kan natuurlijk geen vaste waardes gebruiken omdat het aantal leden steeds veranderd. Dus het moet zo dynamisch mogelijk blijven.

Op welke manier kan ik dit wel oplossen??

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

HTML:
1
<input type="text" name="foo[]" />


in je PHP is $_POST['foo'] nu gewoon een array ($_POST['foo'][0], $_POST['foo'][1] etcetera) waar je de lengte van af kan vragen en waar je dus gewoon doorheen kan lopen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:43
Dit komt al aardig in de richting, nu heb ik het volgende (ik heb het even in een echo gezet om de output te kunnen bekijken:
PHP:
1
echo "UPDATE members SET nrwars='$_POST[war][$i]', nrdead='$_POST[dead][$i]', nrkill='$_POST[kill][$i]', nrflag='$_POST[flag][$i]', ranking='$_POST[intern][$i]' WHERE id='$_POST[id][$i]'";


En dit is nu m'n output:
code:
1
UPDATE members SET nrwars='Array[0]', nrdead='Array[0]', nrkill='Array[0]', nrflag='Array[0]', ranking='Array[0]' WHERE id='[0]'


Ik zal dus nog de waardes uit dit array moeten hebben.

Acties:
  • 0 Henk 'm!

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:43
Bedankt ik heb het nu bijna helemaal opgelost:
PHP:
1
2
3
4
5
6
7
8
9
10
11
for ($i=0; $i < $_POST[aantal]; $i++)
{
    $war = $_POST[war];
    $dead = $_POST[dead];
    $kill = $_POST[kill];
    $flag = $_POST[flag];
    $intern = $_POST[intern];
    $nid = $_POST[nid];
    //mysql_query("UPDATE members SET nrwars='$_POST[war][$i]', nrdead='$_POST[dead][$i]', nrkill='$_POST[kill][$i]', nrflag='$_POST[flag][$i]', ranking='$_POST[intern][$i]' WHERE id='$_POST[id][$i]'") or die ("Query failed,".mysql_error());
    echo "UPDATE members SET nrwars='$war[$i]', nrdead='$dead[$i]', nrkill='$kill[$i]', nrflag='$flag[$i]', ranking='$intern[$i]' WHERE id='$nid[$i]'";
}


Alleen m'n id blijft nog leeg, maar dit zal wel ergens een typfoutje zijn