FORM radiobutton naar array multiple row UPDATE

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick G

patrick G

18/03/2008 19:12:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';    
            }
            
        }
         ?>

</select>
<input type="submit" name="renner" value="kiesteam">
<input type="hidden" name="gekozen_ronde" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rd_id; ?>
">
<input type="hidden" name="teamkeus" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $ploeg_id; ?>
">
</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 ?
 
PHP hulp

PHP hulp

05/11/2024 16:30:45
 
Lode

Lode

18/03/2008 19:32:00
Quote Anchor link
<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...
Gewijzigd op 01/01/1970 01:00:00 door Lode
 
Patrick G

patrick G

18/03/2008 19:36:00
Quote Anchor link
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 ?
 
Lode

Lode

18/03/2008 21:31:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
     //$_POST array wordt uitgespuugd... dan moet het wel lukken...
     echo '<pre>'.print_r($_POST, true).'</pre><br/>'.PHP_EOL;
}

?>

<form name='blaat' method='post' action='
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php basename(__FILE__); ?>
'>
<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>
 
Patrick G

patrick G

18/03/2008 21:55:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door patrick G
 
Jan Koehoorn

Jan Koehoorn

18/03/2008 22:02:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    while (fetch fetch fetch) {
        echo '<input name="blaat[]" type="checkbox" value="'.$row['id'].'">';
    }

?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (isset ($_POST['blaat'])) {
            foreach ($_POST['blaat'] as $id) {
                $sql = "
                    UPDATE tabelnaam
                    SET
                        veldnaam = 'x'
                    WHERE id = "
.$id."
                    "
;
                if (mysql_query ($sql)) {
                    // okee
                }
            }
        }
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Patrick G

patrick G

18/03/2008 22:37:00
Quote Anchor link
Ik moet ze niet allemaal op x zetten, sommige staan al checked afhankelijk van de huidige status.
ik bedacht dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';    
            }
            
        }
?>

Dan zou ik in de foreach
moeten uitvragen of de check wel gezet is of niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
         foreach ($_POST['id'] AS $id ){
            
        if ( hier wil ik de check uitvragen ){
        $value = "UPDATE renners SET
        ronde_$rd_id = 0
        WHERE
        id_renner = '$id'
        "
;
else{spreekt voor zich}?>


kan dat ?
Gewijzigd op 01/01/1970 01:00:00 door patrick G
 
Lode

Lode

19/03/2008 01:39:00
Quote Anchor link
patrick schreef op 18.03.2008 21:55:
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.


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?!
 
Patrick G

patrick G

19/03/2008 11:31:00
Quote Anchor link
Ja lode, het is waarschijnlijk een mooi stukje code maar het voldoet niet aan wat ik zoek, ikwil niet :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
Array
(
[blaat] => Array
(
[0] => 12345
[1] => 98765
[2] => oja
)

)

maar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
Array
(
[blaat] => Array
(
[612] => J
[14] => 0
[977] => J
)

)

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
 
Patrick G

patrick G

19/03/2008 13:07:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.