php variable doorgeven vanuit een while lus

Pagina: 1
Acties:

  • wigwam
  • Registratie: Oktober 2001
  • Laatst online: 05-06 16:37
Ik heb een php script gemaakt die (unieke) waardes weergeeft uit een database. Ik haal deze waardes op via een while loop, en geef ze vervolgens weer op het scherm. Tot zover gaat het goed.

Wat ik wil is dat ik ook de waardes kan bewerken via een button.Ik geef de variable door via een POST. De button verschijnt overigens netjes op het scherm. Voor elke unieke waarde krijg ik een button.

Nu heb ik een variable gemaakt ($wwid = $row['Idww']; ) waar de unieke waarde in wordt opgeslagen. Als ik deze echo krijg ik deze ook netjes op het scherm te zien. Maar als ik ze via een form post naar een andere pagina blijft, of de variable leeg, of mijn variable krijgt een verkeerde waarde.

Nu is mijn vraag mag ik op deze manier waardes via een POST doorgeven?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (mysql_num_rows($result) >= 1) {
    while($row = mysql_fetch_assoc($result5))
    {
        echo "<form action=\"wachtwoord_list.php?upid=$upid&wwid=$wwid\" method=\"POST\" name=\"form\" >";
        echo "<table width=\"500\" cellspacing=\"2\" border=\"0\" align='middle'>";
        echo "<h1>Wachtwoorden</h1>";
        echo "<input type=\"text\" name=\"Windows Inlognaam\" size=\"24\" value=\"Windows Inlognaam:\"/>";
        echo "<input type=\"text\" name=\"Inlognaam\" size=\"28\" value=\"" . $row['Inlognaam'] . "\"/>";
        echo "<input type=\"hidden\" name=\"Idww\" size=\"28\" value=\"".$row['Idww']."\"/>";
        echo $row['Idww']; //netjes geeft unieke nummers weer
        $wwid = $row['Idww'];
        echo "<input type=\"text\" name=\"Applicatie\" size=\"24\" value=\"".$row['Applicatie']."\"/>";
        echo "<input type=\"text\" name=\"Wachtwoord\" size=\"28\" value=\"".$row['Wachtwoord']."\"/>";
        echo "<input type=\"hidden\" name=\"action\" size=\"24\" value=\"update\">";
        echo "<input type=\"submit\" name=\"form\" value=\"Het bovenstaande wachtwoord wijzigen\" onclick=\"wachtwoord_list.php?upid=$upid&wwid=$wwid\">";

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

wigwam schreef op donderdag 03 september 2009 @ 13:57:
Ik heb een php script gemaakt die (unieke) waardes weergeeft uit een database. Ik haal deze waardes op via een while loop, en geef ze vervolgens weer op het scherm. Tot zover gaat het goed.

Wat ik wil is dat ik ook de waardes kan bewerken via een button.Ik geef de variable door via een POST. De button verschijnt overigens netjes op het scherm. Voor elke unieke waarde krijg ik een button.

Nu heb ik een variable gemaakt ($wwid = $row['Idww']; ) waar de unieke waarde in wordt opgeslagen. Als ik deze echo krijg ik deze ook netjes op het scherm te zien. Maar als ik ze via een form post naar een andere pagina blijft, of de variable leeg, of mijn variable krijgt een verkeerde waarde.

Nu is mijn vraag mag ik op deze manier waardes via een POST doorgeven?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (mysql_num_rows($result) >= 1) {
    while($row = mysql_fetch_assoc($result5))
    {
        echo "<form action=\"wachtwoord_list.php?upid=$upid&wwid=$wwid\" method=\"POST\" name=\"form\" >";
        echo "<table width=\"500\" cellspacing=\"2\" border=\"0\" align='middle'>";
        echo "<h1>Wachtwoorden</h1>";
        echo "<input type=\"text\" name=\"Windows Inlognaam\" size=\"24\" value=\"Windows Inlognaam:\"/>";
        echo "<input type=\"text\" name=\"Inlognaam\" size=\"28\" value=\"" . $row['Inlognaam'] . "\"/>";
        echo "<input type=\"hidden\" name=\"Idww\" size=\"28\" value=\"".$row['Idww']."\"/>";
        echo $row['Idww']; //netjes geeft unieke nummers weer
        $wwid = $row['Idww'];
        echo "<input type=\"text\" name=\"Applicatie\" size=\"24\" value=\"".$row['Applicatie']."\"/>";
        echo "<input type=\"text\" name=\"Wachtwoord\" size=\"28\" value=\"".$row['Wachtwoord']."\"/>";
        echo "<input type=\"hidden\" name=\"action\" size=\"24\" value=\"update\">";
        echo "<input type=\"submit\" name=\"form\" value=\"Het bovenstaande wachtwoord wijzigen\" onclick=\"wachtwoord_list.php?upid=$upid&wwid=$wwid\">";
Je gebruikt wwid op regel 4 en maakt hem aan op regel 11?

Zet je error_reporting eens wat hoger tijdens het debuggen dan had je deze fout sneller kunnen ontdekken.

En wat zou die onclick moeten doen op regel 15? Op dit moment werkt hij niet...

Programmer - an organism that turns coffee into software.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 20:57

MueR

Admin Tweakers Discord

is niet lief

Je geeft alles via GET door.

Anyone who gets in between me and my morning coffee should be insecure.


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Die HTML die je daar genereert lijkt me niet helemaal jofel:

- formtag wordt niet afgesloten
- tabel?

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
Zo te zien gebruik je $wwid niet na declaratie. Alleen bij de volgende ronde gebruik je $wwid weer, maar het wwid van de vorige row.
als ik jou was, zou ik geen $wwid gebruiken maar gewoon alles met $row['Idww']. maakt het duidelijker en minder fout-gevoelig
ook stuur je de wwwid en upid door met een get en de andere variabelen met een post....maakt het ophalen van data niet duidelijker, zeg maar.
HTML:
1
onclick=\"wachtwoord_list.php?upid=$upid&wwid=$wwid\">";

Dit is trouwens onzin....hier kan de gemiddelde browser echt niets mee....onclick geef je javascript mee, geen url.

[ Voor 40% gewijzigd door sariel op 03-09-2009 14:04 ]

Copy.com


  • wigwam
  • Registratie: Oktober 2001
  • Laatst online: 05-06 16:37
Het is overigens maar een deel van de code dus het klopt dat dat de form. En sommige andere tags niet netjes worden afgesloten.
Laat ik de vraag anders stellen. Hoe kan ik $row['Idww'] doorgeven aan de mijn button. De $row['Idww'] wordt telkens overschreven met de laatste waarde..toch?

De reden van de GET en POST verwarring is dat ik ondertussen alles al had geprobeerd..maar het lukt maar niet om de waardes door te geven. Ik snap ondertussen wel dat dit ?upid=$upid&wwid=$wwid GET is en natuurlijk geen post.
sariel schreef op donderdag 03 september 2009 @ 14:02:
Zo te zien gebruik je $wwid niet na declaratie. Alleen bij de volgende ronde gebruik je $wwid weer, maar het wwid van de vorige row.
als ik jou was, zou ik geen $wwid gebruiken maar gewoon alles met $row['Idww']. maakt het duidelijker en minder fout-gevoelig
ook stuur je de wwwid en upid door met een get en de andere variabelen met een post....maakt het ophalen van data niet duidelijker, zeg maar.
HTML:
1
onclick=\"wachtwoord_list.php?upid=$upid&wwid=$wwid\">";

Dit is trouwens onzin....hier kan de gemiddelde browser echt niets mee....onclick geef je javascript mee, geen url.

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
Zo te zien gebruik je meerdere forms on een wachtwoorden database te updaten....
Om dat lekker te laten lopen zou ik bij iedere loop de form sluiten, anders krijgt je gibberish.
Verder zou ik een table er omheen bouwen om de data goed zichtbaar te krijgen.
Lees de handleiding over tables en forms even goed door voordat je verder gaat spelen.
Gebruik geen GET en POST door elkaar.

pseudocode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if-statement
while-statement
     echo <table><tr><td>
     echo <form action=wachtwoordlijst.php method=post>
     echo hiddeninput name=upid value=$row[idup]
     echo hiddeninput name=wwid value=$row[idww]
     echo anderehiddeninput
     echo anderehiddeninput
     echo <td>input</td>
     echo <td>input</td>
     echo <td>input</td>
     echo <td>submitbuttoninput</td>
     echo </form>
     echo </td></tr></table>
end-while


dat zou een stuk beter moeten werken, denk ik zo.

Copy.com


  • wigwam
  • Registratie: Oktober 2001
  • Laatst online: 05-06 16:37
Mag ik het ook zonder een form doen? Dus zo. Ik krijg overigens wel de juiste waarde door van mijn unieke nummer alleen als ik nu mijn velden invul krijg ik de waardes niet mee (dit komt zeker door het niet gebruiken van een form?)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
    echo "<table width=\"500\" cellspacing=\"2\" border=\"0\" align='middle'>";
        echo "<h1>Wachtwoorden</h1>";
        echo "<input type=\"text\" name=\"Windows Inlognaam\" size=\"24\" value=\"Windows Inlognaam:\"/>";
        echo "<input type=\"text\" name=\"Inlognaam\" size=\"28\" value=\"" . $row['Inlognaam'] . "\"/>";
        echo "<input type=\"hidden\" name=\"Idww\" size=\"28\" value=\"".$row['Idww']."\"/>";
        echo "<input type=\"text\" name=\"Applicatie\" size=\"24\" value=\"".$row['Applicatie']."\"/>";
        echo "<input type=\"text\" name=\"Wachtwoord\" size=\"28\" value=\"".$row['Wachtwoord']."\"/>";
        echo "<input type=\"hidden\" name=\"Applicatie\" size=\"28\" value=\"".$row['Applicatie']."\"/>";
        echo "<input type=\"hidden\" name=\"action\" size=\"24\" value=\"update\">";
        echo $row['Idww']; //netjes geeft unieke nummers weer
        echo "<td><a href=\"wachtwoord_list.php?upid=$upidpost&wwid=".$row["Idww"]."&Applicatie=".$row['Applicatie']."\">Bovenstaande variable aanpassen</a></td>\n";
        echo "</table>";
sariel schreef op donderdag 03 september 2009 @ 14:26:
Zo te zien gebruik je meerdere forms on een wachtwoorden database te updaten....
Om dat lekker te laten lopen zou ik bij iedere loop de form sluiten, anders krijgt je gibberish.
Verder zou ik een table er omheen bouwen om de data goed zichtbaar te krijgen.
Lees de handleiding over tables en forms even goed door voordat je verder gaat spelen.
Gebruik geen GET en POST door elkaar.

pseudocode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if-statement
while-statement
     echo <table><tr><td>
     echo <form action=wachtwoordlijst.php method=post>
     echo hiddeninput name=upid value=$row[idup]
     echo hiddeninput name=wwid value=$row[idww]
     echo anderehiddeninput
     echo anderehiddeninput
     echo <td>input</td>
     echo <td>input</td>
     echo <td>input</td>
     echo <td>submitbuttoninput</td>
     echo </form>
     echo </td></tr></table>
end-while


dat zou een stuk beter moeten werken, denk ik zo.

[ Voor 4% gewijzigd door wigwam op 03-09-2009 14:53 ]


  • wigwam
  • Registratie: Oktober 2001
  • Laatst online: 05-06 16:37
De werkende code mocht iemand interesse hebben
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
echo "<table width=\"500\" cellspacing=\"2\" border=\"0\" align='middle'>";
        echo "<form action=\"wachtwoord_list.php?upid=$upid\" method=\"POST\" name=\"form\" >";
        echo "<h1>Wachtwoorden</h1>";
        echo "<input type=\"text\" name=\"Windows Inlognaam\" size=\"24\" value=\"Windows Inlognaam:\"/>";
        echo "<input type=\"text\" name=\"Inlognaam\" size=\"28\" value=\"" . $row['Inlognaam'] . "\"/>";
        echo "<input type=\"text\" name=\"Applicatie\" size=\"24\" value=\"".$row['Applicatie']."\"/>";
        echo "<input type=\"text\" name=\"Wachtwoord\" size=\"28\" value=\"".$row['Wachtwoord']."\"/>";
        echo "<input type=\"hidden\" name=\"upid\" size=\"28\" value=\"".$_GET['upid']."\"/>";
        echo "<input type=\"hidden\" name=\"Idww\" size=\"28\" value=\"".$row['Idww']."\"/>";
        echo "<td><input type=\"submit\" name=\"submit\" size=\"24\" class=\"formsubmit\" value=\"Storingsmelding bijwerken\"></td>";
        echo "</form>";
        echo "</table>";

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Allemaal smaak en persoonlijke stijl (bij ons overigens codestandaard) maar vind je dit niet overzichtelijker?:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
echo '<table width="500" cellspacing="2" border="0" align="middle">
<form action="wachtwoord_list.php?upid='. $upid . '" method="post" name="form" >
<h1>Wachtwoorden</h1>
<input type="text" name="Windows Inlognaam" size="24" value="Windows Inlognaam:"/>
<input type="text" name="Inlognaam" size="28" value="' . $row["Inlognaam"] . '"/>
<input type="text" name="Applicatie" size="24" value="' . $row["Applicatie"] . '"/>
<input type="text" name="Wachtwoord" size="28" value="' . $row["Wachtwoord"] . '"/>
<input type="hidden" name="upid" size="28" value="' . $_GET["upid"] . '"/>
<input type="hidden" name="Idww" size="28" value="' . $row["Idww"] . '"/>
<td><input type="submit" name="submit" size="24" class="formsubmit" value="Storingsmelding bijwerken"></td>
</form>
</table>';
Pagina: 1