FORM radiobutton naar array multiple row UPDATE
Ik zit even vast, met de volgende code lees ik uit de database of een (wiel)renner al dan niet meedoet aan een wedstrijd en zet dit in een radiobutton Ja danwel Nee:
</select>
<input type="submit" name="renner" value="kiesteam">
<input type="hidden" name="gekozen_ronde" value="">
<input type="hidden" name="teamkeus" value="">
</form>
Nu moet er na het aanpassen van de radiobuttons een update gebeuren op alle rijen , maar ik moet nu eerst met een foreach alle $_POST[] waarden ophalen en daarna updaten denk ik.
Alleen weet ik niet hoeveel rijen er moeten worden geupdate, want een team kan van 15 t/m 30 wielrennersrenners bevatten.
Hoe lees ik al die waarden in in een array ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
echo '<form name = "uitvaller" action = "'.$_SERVER['PHP_SELF'].'" method="post">';
$queryrenner = "
SELECT *
FROM renners
WHERE ploeg_id = $ploeg_id
";
$meedoen = mysql_query($queryrenner) or die (mysql_error($query));
while ($kies = mysql_fetch_array($meedoen))
{
if ($kies['ronde_$rd_id'] = 'J'){
echo $kies['naam_renner'];
echo '<input type="radio" name="'.$kies['id_renner'].'" value="J" checked="checked"><input type="radio" name="'.$kies['id_renner'].'" value="" ><br>';
}
else
{
echo $kies['naam_renner'];
echo '<input type="radio" name="'.$kies['id_renner'].'" value="J" ><input type="radio" name="'.$kies['id_renner'].'" value="" checked="checked"><br>';
}
}
?>
$queryrenner = "
SELECT *
FROM renners
WHERE ploeg_id = $ploeg_id
";
$meedoen = mysql_query($queryrenner) or die (mysql_error($query));
while ($kies = mysql_fetch_array($meedoen))
{
if ($kies['ronde_$rd_id'] = 'J'){
echo $kies['naam_renner'];
echo '<input type="radio" name="'.$kies['id_renner'].'" value="J" checked="checked"><input type="radio" name="'.$kies['id_renner'].'" value="" ><br>';
}
else
{
echo $kies['naam_renner'];
echo '<input type="radio" name="'.$kies['id_renner'].'" value="J" ><input type="radio" name="'.$kies['id_renner'].'" value="" checked="checked"><br>';
}
}
?>
</select>
<input type="submit" name="renner" value="kiesteam">
<input type="hidden" name="gekozen_ronde" value="">
<input type="hidden" name="teamkeus" value="">
</form>
Nu moet er na het aanpassen van de radiobuttons een update gebeuren op alle rijen , maar ik moet nu eerst met een foreach alle $_POST[] waarden ophalen en daarna updaten denk ik.
Alleen weet ik niet hoeveel rijen er moeten worden geupdate, want een team kan van 15 t/m 30 wielrennersrenners bevatten.
Hoe lees ik al die waarden in in een array ?
<input type="..whatever.." name="waardes[]" value="1"/>
<input type="..whatever.." name="waardes[]" value="2"/>
<input type="..whatever.." name="waardes[]" value="3"/>
en dan krijg je een array...
als je dan nog een goede referentie in je value stopt ben je er...
<input type="..whatever.." name="waardes[]" value="2"/>
<input type="..whatever.." name="waardes[]" value="3"/>
en dan krijg je een array...
als je dan nog een goede referentie in je value stopt ben je er...
Gewijzigd op 01/01/1970 01:00:00 door Lode
Dat doe ik al :)
name = $kies['id_renner'], in de while loop.
mijn laatste zin was bij nader inzien niet helemaal goed.
Ik bedoel, hoe lees ik de gemaakte array weer uit na de post en update dan de DB ?
name = $kies['id_renner'], in de while loop.
mijn laatste zin was bij nader inzien niet helemaal goed.
Ik bedoel, hoe lees ik de gemaakte array weer uit na de post en update dan de DB ?
Dat doe je niet denk ik! Joost mag weten wat $kies['id_renner'] uitspuigt natuurlijk..... met [] LEEG achter de naam wordt het veld iig een array opzichzelf...
Probeer het eens:
<form name='blaat' method='post' action=''>
<input type="text" name="blaat[]" value="12345" />
<input type="text" name="blaat[]" value="98765" />
<input type="text" name="blaat[]" value="oja" />
<input type="submit" />
</form>
Probeer het eens:
Code (php)
<form name='blaat' method='post' action=''>
<input type="text" name="blaat[]" value="12345" />
<input type="text" name="blaat[]" value="98765" />
<input type="text" name="blaat[]" value="oja" />
<input type="submit" />
</form>
Nou, dat werkt dus niet, $kies[id_renner] spuugt namelijk de primary key uit.
Deze key heb ik nodig om te weten welke row ik moet updaten.
Standaard staat waarde in de tabel ronde_$rd_id op "".(=leeg)
De bedoeling is dus dat de $kies[id_renner] de key van het array wordt en de waarde die gechecked wordt, wordt doorgegeven aan de database veld ronde_$rd_id behorende bij die key.
voorbeeld, uit de database komt:
Jan 0 x (id= 612)
Piet x 0 (id= 14)
Klaas x 0 (id= 977)
enz...
(x= checked)
als ik nu een of meer radioboxen verander moet na submit het form verstuurd worden en de waarde van de radioboxen moet ronde_$rd_id van ALLE rows die zijn opgehaald updaten!
hopelijk maakt dit iets duidelijker.
Deze key heb ik nodig om te weten welke row ik moet updaten.
Standaard staat waarde in de tabel ronde_$rd_id op "".(=leeg)
De bedoeling is dus dat de $kies[id_renner] de key van het array wordt en de waarde die gechecked wordt, wordt doorgegeven aan de database veld ronde_$rd_id behorende bij die key.
voorbeeld, uit de database komt:
Jan 0 x (id= 612)
Piet x 0 (id= 14)
Klaas x 0 (id= 977)
enz...
(x= checked)
als ik nu een of meer radioboxen verander moet na submit het form verstuurd worden en de waarde van de radioboxen moet ronde_$rd_id van ALLE rows die zijn opgehaald updaten!
hopelijk maakt dit iets duidelijker.
Gewijzigd op 01/01/1970 01:00:00 door patrick G
Als je die primairy key in de value van de input zet en en je maakt er bijvoorbeeld een checkbox van, dan zou je krijgen:
Dan kijk je na het verzenden gewoon welke id's er in de array $_POST['blaat zitten']. Die moet je updaten en op x zetten ipv 0.
Code (php)
Dan kijk je na het verzenden gewoon welke id's er in de array $_POST['blaat zitten']. Die moet je updaten en op x zetten ipv 0.
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Ik moet ze niet allemaal op x zetten, sommige staan al checked afhankelijk van de huidige status.
ik bedacht dit:
Dan zou ik in de foreach
moeten uitvragen of de check wel gezet is of niet.
kan dat ?
ik bedacht dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
while ($kies = mysql_fetch_array($meedoen))
{
$renner = $kies['id_renner'];
if ($kies['ronde_$rd_id'] = 'J'){
echo $kies['naam_renner'];
echo '<input type="checkbox" name="id[]" value="'.$renner.'" checked="checked"><br>';
}
else
{
echo $kies['naam_renner'];
echo '<input type="checkbox" name="id[]" value="'.$renner.'" ><br>';
}
}?>
while ($kies = mysql_fetch_array($meedoen))
{
$renner = $kies['id_renner'];
if ($kies['ronde_$rd_id'] = 'J'){
echo $kies['naam_renner'];
echo '<input type="checkbox" name="id[]" value="'.$renner.'" checked="checked"><br>';
}
else
{
echo $kies['naam_renner'];
echo '<input type="checkbox" name="id[]" value="'.$renner.'" ><br>';
}
}?>
Dan zou ik in de foreach
moeten uitvragen of de check wel gezet is of niet.
Code (php)
kan dat ?
Gewijzigd op 01/01/1970 01:00:00 door patrick G
'patrick:
Nou, dat werkt dus niet, $kies[id_renner] spuugt namelijk de primary key uit.
Deze key heb ik nodig om te weten welke row ik moet updaten.
Standaard staat waarde in de tabel ronde_$rd_id op "".(=leeg)
De bedoeling is dus dat de $kies[id_renner] de key van het array wordt en de waarde die gechecked wordt, wordt doorgegeven aan de database veld ronde_$rd_id behorende bij die key.
voorbeeld, uit de database komt:
Jan 0 x (id= 612)
Piet x 0 (id= 14)
Klaas x 0 (id= 977)
enz...
(x= checked)
als ik nu een of meer radioboxen verander moet na submit het form verstuurd worden en de waarde van de radioboxen moet ronde_$rd_id van ALLE rows die zijn opgehaald updaten!
hopelijk maakt dit iets duidelijker.
Deze key heb ik nodig om te weten welke row ik moet updaten.
Standaard staat waarde in de tabel ronde_$rd_id op "".(=leeg)
De bedoeling is dus dat de $kies[id_renner] de key van het array wordt en de waarde die gechecked wordt, wordt doorgegeven aan de database veld ronde_$rd_id behorende bij die key.
voorbeeld, uit de database komt:
Jan 0 x (id= 612)
Piet x 0 (id= 14)
Klaas x 0 (id= 977)
enz...
(x= checked)
als ik nu een of meer radioboxen verander moet na submit het form verstuurd worden en de waarde van de radioboxen moet ronde_$rd_id van ALLE rows die zijn opgehaald updaten!
hopelijk maakt dit iets duidelijker.
Fantastisch tig regels code...
Ik schrijf eens stukje werkende code voor je hoor?! Met als uitkomst:
Array
(
[blaat] => Array
(
[0] => 12345
[1] => 98765
[2] => oja
)
)
Ik geef je het antwoord maar heb je het uberhaupt wel geprobeerd?!
Ja lode, het is waarschijnlijk een mooi stukje code maar het voldoet niet aan wat ik zoek, ikwil niet :
maar
als output.
daarom heb ik het niet geprobeerd.
@ Jan Koehoorn:
Jouw code werkt dus wel om een J toe te voegen aan de tabel (bij het checken van de checkbox ), maar ik wil ook "unchecken" voor tabellen waar een eerdere update ongedaan moet worden gemaakt , dat doet het niet.
De reden dat ik het zo wil is om te zorgen dat er 1 overzicht ontstaat waarmee ik in 1 oogopslag kan controleren en aanpassen welke rij geupdate is en welke niet
maar
als output.
daarom heb ik het niet geprobeerd.
@ Jan Koehoorn:
Jouw code werkt dus wel om een J toe te voegen aan de tabel (bij het checken van de checkbox ), maar ik wil ook "unchecken" voor tabellen waar een eerdere update ongedaan moet worden gemaakt , dat doet het niet.
De reden dat ik het zo wil is om te zorgen dat er 1 overzicht ontstaat waarmee ik in 1 oogopslag kan controleren en aanpassen welke rij geupdate is en welke niet
Gewijzigd op 01/01/1970 01:00:00 door patrick G
BUMP opgelost:
Toch met jouw code Jan, maar met een extra truukje.
Na het selecteren en laten zien van de waarden in de rijen zet ik eerst alle geselecteerde rijen in de database op 0.
Hierna update ik met de foreach alle gecheckte waarden naar "J" .
Bedankt voor het meedenken.
Toch met jouw code Jan, maar met een extra truukje.
Na het selecteren en laten zien van de waarden in de rijen zet ik eerst alle geselecteerde rijen in de database op 0.
Hierna update ik met de foreach alle gecheckte waarden naar "J" .
Bedankt voor het meedenken.




