Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[php]dynamische tabel per regel updaten

Pagina: 1
Acties:

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 22-11 18:34
Ik lees een mysql-database uit en genereer hiervan een tabel. Nu probeer ik een edit-button te maken om een enkele rij te updaten. Alleen update hij steeds alles naar de nieuwe waarde. Ik heb al geprobeerd te werken met een WHERE-clause, en dit werkt (uiteraard). Alleen kan ik deze niet dynamisch maken, want WHERE id=$_POST['Nummer'] klopt natuurlijk voor alle rijen.

Hoe kan ik dit het makkelijkst oplossen met php/mysql
PHP:
1
2
$sql="UPDATE inkomsten SET fStatus='$_POST[status]'";
$res=mysql_query($sql) or die(mysql_error());


HTML:
1
2
3
4
5
6
7
8
9
10
11
<td>'.$aFactuur['fStatus'].'<br />
<form action="../../update_inkomsten.php" method="post">
<select name="status">
<option value="Open" id="'.$aFactuur['Factuurnummer'].'">Open</option>
<option value="H1" id="'.$aFactuur['Factuurnummer'].'">Herinnering1</option>
<option value="H2" id="'.$aFactuur['Factuurnummer'].'">Herinnering2</option>
<option value="I" id="'.$aFactuur['Factuurnummer'].'">Incasso</option>
<option value="Betaald" id="'.$aFactuur['Factuurnummer'].'">Betaald</option>
</select>
<input type="submit" value="" class="button_edit" />
</form></td>


Is dit uberhaupt mogelijk om dit zo te doen?

  • ItsValium
  • Registratie: Juni 2009
  • Laatst online: 14:05
perfect mogelijk, probeer je WHERE clausule dynamisch in te vullen door ook het rowid uit de db te halen en deze als hidden value mee te geven

[ Voor 15% gewijzigd door ItsValium op 20-06-2013 15:53 ]


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Gewoon even een hidden input maken in je form om het ID in op te slaan. Verder zie ik geen enkele vorm van input check, direct $_POST[status] is geen goed idee. Sowieso zul je eerst willen escapen en eigenlijk ook checken of de gegeven waarde wel bestaat.

Daarnaast, je topic hoort (denk ik) in Programming thuis en niet in Webdesign, Markup & Clientside Scripting.

  • Orion84
  • Registratie: April 2002
  • Laatst online: 11:34

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Paultje3181 schreef op donderdag 20 juni 2013 @ 15:49:Ik heb al geprobeerd te werken met een WHERE-clause, en dit werkt (uiteraard). Alleen kan ik deze niet dynamisch maken, want WHERE id=$_POST['Nummer'] klopt natuurlijk voor alle rijen.
Volgens mij maak je hier een denkfout, of ik mis ergens iets heel erg. Heb je dit al eens geprobeerd? Want dit lijkt me toch echt the way to go.
Hoe kan ik dit het makkelijkst oplossen met php/mysql
PHP:
1
2
$sql="UPDATE inkomsten SET fStatus='$_POST[status]'";
$res=mysql_query($sql) or die(mysql_error());

Is dit uberhaupt mogelijk om dit zo te doen?
Als je wilt dat je binnen 1 dag gehackt bent met een mooie SQL injectie, dan moet je het vooral zo doen. Afgezien van het oplossen van je functionele probleem zo ik me als ik jou was even inlezen in hoe je op een nette en veilige manier database acties kan uitvoeren op basis van gebruikersinput. Klakkeloos inhoud van $post variabele overnemen in een query string is vragen om problemen.

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 22-11 18:34
Ik snap wat je zegt, maar ik heb geen idee hoe ik dit doe. Het factuurnummer is dynamisch, maar
PHP:
1
2
3
4
<?php
$sql="UPDATE inkomsten SET fStatus='$_POST[status]' WHERE id=$aFactuur['Factuurnummer']";
$res=mysql_query($sql) or die(mysql_error());
?>

Verandert ze bij allemaal.
Staat verder offline, dus mysql-injections ben ik niet zo bang voor...

[ Voor 10% gewijzigd door Paultje3181 op 20-06-2013 15:58 ]


  • Ypho
  • Registratie: April 2008
  • Laatst online: 06:47

Ypho

Allround Nerd

Ook met "WHERE id=$aFactuur['Factuurnummer']" worden alle rijen gewijzigd? Zijn de ID's in je tabel wel uniek? Wellicht een rare vraag, maar is ID hetzelfde als Factuurnummer in je tabel?

Is je code is nu iets in deze trend?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<td>'.$aFactuur['fStatus'].'<br />
<form action="../../update_inkomsten.php" method="post">
<select name="status">
<option value="Open" id="'.$aFactuur['Factuurnummer'].'">Open</option>
<option value="H1" id="'.$aFactuur['Factuurnummer'].'">Herinnering1</option>
<option value="H2" id="'.$aFactuur['Factuurnummer'].'">Herinnering2</option>
<option value="I" id="'.$aFactuur['Factuurnummer'].'">Incasso</option>
<option value="Betaald" id="'.$aFactuur['Factuurnummer'].'">Betaald</option>
</select>
<input type="hidden" value=".$aFactuur['Factuurnummer']." />
<input type="submit" value="" class="button_edit" />
</form></td>


Het stukje <input type="hidden" value=".$aFactuur['Factuurnummer']." /> zorgt dat het factuurnummer wordt meegestuurd.

[ Voor 81% gewijzigd door Ypho op 20-06-2013 16:06 ]

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 22-11 18:34
Ik heb het probleem gevonden... Het toevoegen van een hidden inputveld werkte perfect :D

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 21:47
Ik zou sowieso gewoon lekker op de primary key updaten, ben je een stuk minder afhankelijk van de data. Id in hidden field meesturen.
-edit-
Te laat. :D

[ Voor 7% gewijzigd door Biersteker op 20-06-2013 16:07 ]

Originally, a hacker was someone who makes furniture with an axe.


  • PatrickH89
  • Registratie: November 2009
  • Laatst online: 17:24
Paultje3181 schreef op donderdag 20 juni 2013 @ 15:57:
Ik snap wat je zegt, maar ik heb geen idee hoe ik dit doe. Het factuurnummer is dynamisch, maar
PHP:
1
2
3
4
<?php
$sql="UPDATE inkomsten SET fStatus='$_POST[status]' WHERE id=$aFactuur['Factuurnummer']";
$res=mysql_query($sql) or die(mysql_error());
?>

Verandert ze bij allemaal.
Staat verder offline, dus mysql-injections ben ik niet zo bang voor...
Voor strings hebben we mysql_real_escape_string en voor integers deed ik meestal gewoon een harde cast naar integer ($var = (int) $var). Dit zijn tegenwoordig allemaal houwtje-touwtje-oplossingen en het is beter om je in te lezen in prepared statements (http://www.php.net/manual...t.prepared-statements.php of http://php.net/manual/en/pdo.prepare.php)
Pagina: 1