[PHP] bij $_GET pakt ie alleen het laatste ID

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste mensen,

Ik heb een probleem ondervonden bij de volgende code:
het is de bedoeling dat de waardes van radiobuttons worden weggeschreven in de database.

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
36
37
38
39
40
echo '
        <form name="forbidcheck" action=images.php method="get">';
while ($rsPic = mysql_fetch_assoc($resPic)) {
        echo '
        <center><a onclick="window.open(\'pic.php?nr='.$rsPic['pic_id'].'\',\'foto\',\'width=618,height=480\'); return false">
        <img src="'.$locatie.'/'.$rsPic['pic_src'].'" width='.$width.' height='.$height.' border=1></a> 
        <br>
        <input type="radio" name="forbidden_' . $rsPic['pic_id'] . '" value="1">
        <input type="radio" name="forbidden_' . $rsPic['pic_id'] . '" value="2">
        <input type="radio" name="forbidden_' . $rsPic['pic_id'] . '" value="3">
        <input type="radio" name="forbidden_' . $rsPic['pic_id'] . '" value="4">
        <input type="hidden" name="pic_id" value="'.$rsPic['pic_id'].'">';
}
        
        echo'
        <br>
        <input type="submit" name="verzenden" value="update">
        </center>
        </form>
        </center>';
        


?>



<?php
if(isset($_GET['verzenden'])){


    if (!isset($_GET["forbidden_" . $_GET['pic_id']])){
        $_GET["forbidden_" . $_GET['pic_id']] = 0;
    }

    $result = mysql_query('UPDATE fab_pic_picture SET pic_forbidden_lvl="'.$_GET["forbidden_" . $_GET['pic_id']] . '" WHERE pic_id="' . $_GET['pic_id']. '"');


}
?>


ik wil in de database wegschrijven welke radiobutton per foto is aangeklikt

alle radiobuttons krijgen de goede naam:

"forbidden_1" <- bij foto id 1

"forbidden_10" <- bij foto id 10
dit werkt dus volkomen.

het probleem zit bij dat hij alleen de laatste foto pakt.

bij $_GET["forbidden_" . $_GET['pic_id']]

wordt dus alleen foto id 10 wordt bijgewerkt in de database.

ik hoop dat iemand mij kan helpen.

mvg,

Nick

Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 20-08 08:55

skabouter

Skabouter

Niet zo lastig, je leest $_GET['pic_id'] uit, maar deze wordt meerdere malen in je while loop geset (<input type="hidden" name="pic_id" value="'.$rsPic['pic_id'].'">) Standaard wordt (indien een veld met dezelfde naam vaker voorkomt) de laatste waarde genomen (in jou geval dus 10)

[ Voor 0% gewijzigd door skabouter op 08-11-2006 09:28 . Reden: typ0 ]

[ Dislect ]


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
hier stond onzin

[ Voor 74% gewijzigd door mrFoce op 08-11-2006 09:27 ]


Acties:
  • 0 Henk 'm!

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Logisch toch?

Om alle waarden op te halen zou je het ophalen ook in een loopje moeten doen, nu pak je er maar eentje.

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

je doet een aantal iteraties in die 'while' die een input creert met de naam 'pic_id'.... dus alle 10 krijgen de formfield naam 'pic_id', dus zal die alleen uiteindelijk de laatste bevatten, dus 10

en ook nog:
PHP:
1
$result = mysql_query('UPDATE fab_pic_picture SET pic_forbidden_lvl="'.$_GET["forbidden_" . $_GET['pic_id']] . '" WHERE pic_id="' . $_GET['pic_id']. '"');

Controlleer eens netjes de waarden uit een GET ipv ze rechtstreeks in een query te proppen!!!

[ Voor 41% gewijzigd door Tjark op 08-11-2006 09:30 ]

*insert signature here


Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
hier stond onzin

[ Voor 80% gewijzigd door Kuhlie op 08-11-2006 09:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

je kan dan denk ik beter: name="forbidden[" .$rsPic['pic_id']. "]" doen... dan krijg je een array uit die ook nog eens heel makkelijk weerspiegeld hoeveel foto's er zijn gesubmit, in tegenstelling tot het script van TS die of een ingewikkelde check of een nieuwe query moet doen om te weten hoeveel plaatjes hij dient te verwerken, op deze manier hoef je gelijk geen hiddenfield meer te hebben die aangeeft welk plaatje dit nou eigenlijk is, aangezien de array deze gebruikt als keys.... uitlezen met een for each met een UPDATE quuery should do the trick!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 08 november 2006 @ 09:38:
je kan dan denk ik beter: name="forbidden[" .$rsPic['pic_id']. "]" doen...
Dat denk ik niet alleen, dat weet ik wel zeker. Het gebruiken van arrays is in kwesties als deze niet meer dan gangbaar en de meest logische/praktische oplossing. Toch leuk om te zien dat zoveel mensen ondanks dat creatief met strings gaan doen. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heel erg bedankt voor jullie reacties,
het is gelukt!

thx..

mvg,

Nick
Pagina: 1