Toon posts:

[PHP] Updaten van meerdere rijen *

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik probeer het voor elkaar te krijgen om meerdere rijen te updaten in 1 keer,

Ik haal eerst wat records op uit een db en die wil ik allemaal editen op 1 pagina, zijn er maar een stuk of 12 , en dan met 1 submit gewoon alles bewerken in de db.

Zoals ik het nu heb kan ik het wijzigen maar als ik dan submit gebeurd er niks.


Het ziet er als volgt uit,

De records ophalen en weergeven:

<form action='index.php' method=post>
<?
//Loon Informatie ophalen
$example = mysql_query("select * from Lonen");

print ("<br><br><center><table border='0' cellspacing='1' class='article' >\n");
print ("<tr bgcolor='#D6D6D6'><th>Leeftijd</th><th>Salaris</th>\n");

while ($row = mysql_fetch_array($example))
{
$ExampleID=$row["ExampleID"];
$Leeftijd=$row["Leeftijd"];
$Regeling=$row["Regeling"];

print ("</tr>");
print ("<tr>");
print ("<td name=Leeftijd>$Leeftijd</td>");
print ("<td><input type='text' style='border : 1px solid #868686' name='Regeling' value='$Regeling'></td>");

}
print ("</tr></table>\n");
print "<br><br><center><a href='index.php'>Terug naar begin</a></center>";
?>
<table>
<tr>
<td>
<input type='submit' name='wijzig' value='wijzig'>
</td>
</tr>
</table>
</form>

en dan vervolgens als je op submit drukt

<?
if ($wijzig)
{
$update = mysql_query("UPDATE Lonen SET Regeling='$Regeling'where Leeftijd='$Leeftijd'")or die (mysql_error());
print ("Gewijzigd");
exit;
};
?>
?>

Ik hoop dat iemand hier een antwoord op heb, ben totaal nog niet ervaren met php, heb al diverse sites afgezocht maar kan geen direct oplossing of richting vinden hoe dit op te lossen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:59

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 gokt een Register Globals probleem en je update-query is sowieso fout; daar mist hier en daar een spatie.

[ Voor 35% gewijzigd door gorgi_19 op 17-01-2004 00:11 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Register globals staan aan , de rest van de site/app werkt gewoon met updates..inserts etc etc

En inderdaad ik ben een spatie vergeten maar is niet het probleem , had de niet bijgewerkte regel gepast maar in mijn files staan die spaties wel.

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 18:00

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
PHP:
1
2
3
<?php
if ($wijzig)
?>

moet worden
PHP:
1
2
3
<?php
if $_POST['wijzig']
?>

Dacht ik dan :). Zal vast nog wel meer zijn.

[ Voor 14% gewijzigd door We Are Borg op 17-01-2004 00:18 ]


Verwijderd

Topicstarter
We Are Borg schreef op 17 januari 2004 @ 00:18:
PHP:
1
2
3
<?php
if ($wijzig)
?>

moet worden
PHP:
1
2
3
<?php
if $_POST['wijzig']
?>

Dacht ik dan :). Zal vast nog wel meer zijn.
Ik neem aan dat je dit zegt ivm "veiligheid" , is niet eens zo belangrijk het is voor een interne applicatie wat niet vanaf inet te bereiken is.

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 21-05 15:06
je moet je inputvelden in een array plaatsten en dan daarover itereren als je je rijen wil updaten denk ik zo op het eerste gezicht...

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 17 januari 2004 @ 00:23:
[...]

Ik neem aan dat je dit zegt ivm "veiligheid" , is niet eens zo belangrijk het is voor een interne applicatie wat niet vanaf inet te bereiken is.
PHP is standaard veiliger geworden. Je zal de wijzigingen dus door moeten voeren omdat je een bepaalde PHP versie draait (boven 4.0 ofzo)

edit:
Als je registered_globals al aan hebt staan zou het natuurlijk wel gewoon moeten werken

[ Voor 13% gewijzigd door Spider.007 op 17-01-2004 17:30 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 16:59

Robtimus

me Robtimus no like you

Cuball schreef op 17 januari 2004 @ 17:25:
je moet je inputvelden in een array plaatsten en dan daarover itereren als je je rijen wil updaten denk ik zo op het eerste gezicht...
Idd. Je hebt maar 1 variable genaamd Regeling en maar 1 variabele genaamd Leeftijd. Je kan dus maar hooguit 1 veld updaten op deze manier.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • ebas
  • Registratie: Maart 2001
  • Laatst online: 20-04-2017

ebas

 

Je moet een array maken van die inputs

<input name="Leeftijd[<? echo $id ?>]">

en dan foreach ($leeftijd as $id => $value) { blabla }

  • damanseb
  • Registratie: Maart 2002
  • Laatst online: 24-07-2025
je probeerd regelingen te updaten bij de corresponderende leeftijden

althans dat is wat ik er uit opmaak..

waarschijnlijk pakt ie je leeftijd niet omdat je deze waarde toekent aan de TD van een table en niet aan form element..
verstandiger zou zijn een hidden field toe tevoegen
je moet zorgen dat je zon form gegenereerd krijgt op je input pagina:

<form name="formRegeling" method="post" action="regeling.php">

<input type="hidden" name="leeftijd" value="12"> <-- haal de value uit de DB
<input type="text" name="regeling" value=""> <-- haal de bestaande value uit de DB

(dit kun je doen door gewoon selectie te maken uit je tabel en door de diverse leeftijden lussen met while en ze weg te schrijven naar je pagina met corresponderende waarde als regeling..)

als je vervolgende onderaan dit form op je submit drukt worden alle leeftijden met regeling waardes doorgeven uit je form..

echter.. omdat je meerdere form elementen hebt met dezelfde naam.. (meerdere name="leeftijd" en meerdere regeling="waarde") worden deze doorgeven inde vorm van een array.. m.a.w. als je de waardes ophaald met $_REQUEST..
doe dat dan ongeveer zo..
<?php
voor elke i in de array $_REQUEST["leeftijd"][i] {
// voor elke keer dat leeftijd is gesubmit, waarde uit leeftijd array en waarde uit regeling array wegschrijven naar tabel
$sql = "UPDATE regelingen set veldLeeftijd=". $_REQUEST["leeftijd"][i] .", veldRegeling='". $_REQUEST["regeling"][i]" ."'"
mysql_query($sql) or die("Could not insert into database: " . mysql_error());

?>

de code klopt waarschijnlijk niet helemaal maar het idee is duidelijk, je moet door de waardes lopen in je array van gesubmitte leeftijden en deze stuk voor stuk wegschrijven in je DB..

Hoop dat dit duidelijk is, anders damanseb@hotmail.com

[ Voor 36% gewijzigd door damanseb op 18-01-2004 18:03 ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

damanseb schreef op 18 januari 2004 @ 17:57:
je probeerd regelingen te updaten bij de corresponderende leeftijden

althans dat is wat ik er uit opmaak..

waarschijnlijk pakt ie je leeftijd niet omdat je deze waarde toekent aan de TD van een table en niet aan form element..
verstandiger zou zijn een hidden field toe tevoegen
je moet zorgen dat je zon form gegenereerd krijgt op je input pagina:
code:
1
2
3
4
<form name="formRegeling" method="post" action="regeling.php">

<input type="hidden" name="leeftijd" value="12"> <-- haal de value uit de DB
<input type="text" name="regeling" value=""> <-- haal de bestaande value uit de DB

(dit kun je doen door gewoon selectie te maken uit je tabel en door de diverse leeftijden lussen met while en ze weg te schrijven naar je pagina met corresponderende waarde als regeling..)

als je vervolgende onderaan dit form op je submit drukt worden alle leeftijden met regeling waardes doorgeven uit je form..

echter.. omdat je meerdere form elementen hebt met dezelfde naam.. (meerdere name="leeftijd" en meerdere regeling="waarde") worden deze doorgeven inde vorm van een array.. m.a.w. als je de waardes ophaald met $_REQUEST..
doe dat dan ongeveer zo..
PHP:
1
2
3
4
5
6
7
<?php
voor elke i in de array $_REQUEST["leeftijd"][i] {
// voor elke keer dat leeftijd is gesubmit, waarde uit leeftijd array en waarde uit regeling array wegschrijven naar tabel
$sql = "UPDATE regelingen set veldLeeftijd=". $_REQUEST["leeftijd"][i] .", veldRegeling='". $_REQUEST["regeling"][i]" ."'"
mysql_query($sql) or die("Could not insert into database: " . mysql_error());

?>


de code klopt waarschijnlijk niet helemaal maar het idee is duidelijk, je moet door de waardes lopen in je array van gesubmitte leeftijden en deze stuk voor stuk wegschrijven in je DB..

Hoop dat dit duidelijk is, anders *******@hotmail.com
Doe je medemense een plezier en maak gebruik van de [ code ] en [ php ] tags :) Verder kan de communicatie toch prima via dit forum verlopen? Dan hebben wij er ook nog wat aan :)

[ Voor 24% gewijzigd door Spider.007 op 18-01-2004 18:15 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • damanseb
  • Registratie: Maart 2002
  • Laatst online: 24-07-2025
kewl, was niet op de hoogte van het bestaan van deze tags, thanx..
tis ook niet echt code maar een stukje text dat slechts de logica uitlegd..

Hier echter toch een werkend voorbeeld:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<title>mypage.php</title>
<head></head>
<body>
<?php
if ($_REQUEST["submitform"] == "submit") {
    //$connection = mysql_connect("localhost","root","") or die("Could not connect: " . mysql_error());
    reset ($_POST["leeftijd"]);
    while(list($key, $val) = each ($_POST["leeftijd"])) {
        print "INSERT INTO TabelRegeling (VeldRegeling) VALUES (". $_POST["regeling"][$key] .") WHERE VeldLeeftijd=". $val .")<br>";
        //$sql = "INSERT INTO TabelRegeling (VeldRegeling) VALUES (". $_POST["regeling"][$key] .") WHERE VeldLeeftijd=". $val .")";
        //mysql_query($sql) or die("Could not insert into database: " . mysql_error());
    }
    //mysql_close($connection);
}
?>
<form name="myForm" method="post" action="mypage.php">
  <table width="400" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Leeftijd</td>
      <td>Regeling</td>
    </tr>
    <tr>
      <td>16<input type="hidden" name="leeftijd[]" value="16"></td>
      <td><input type="text" name="regeling[]"></td>
    </tr>
    <tr>
      <td>18<input type="hidden" name="leeftijd[]" value="18"></td>
      <td><input type="text" name="regeling[]"></td>
    </tr>
  </table>
  <input type="submit" name="submitform" value="submit">
</form>
</body>
</html>


Zoals je ziet meerdere leeftijd velden die astuk voor stuk in de database worden toegevoegd..

De werkelijke code om in te voegen in de database is //commented omdat ik niet zo'n bestaande database heb voor het voorbeeld..
Echter als je het form submit, print ie ook de sql code uit die normaal gesproken word gebruikt om te inserten..

zijn er reeds bestaande records moet je hiervoor uiteraard geen insert maar een update query voor uitvoeren..

Werkend voorbeeld: http://killabee.gotdns.org/werkendvoorbeeld.jpg
De pagina zelf: http://killabee.gotdns.org/mypage.php

[ Voor 119% gewijzigd door damanseb op 18-01-2004 19:44 ]


Verwijderd

Use search; you'll find this

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

5 maanden geleden was ie vast heel blij geweest met je antwoord :/

[edit]
Knap dat je trouwens in een topic van januari dit jaar gaat verwijzen naar een topic van april dit jaar van jezelf.... had je zelf destijds niet beter de search kunnen gebruiken? :z

[ Voor 59% gewijzigd door curry684 op 31-05-2004 15:37 ]

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.