[PHP] Meerdere yes/no boxen updaten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik hoop dat ik het een beetje fatsoenlijk uit kan leggen:

Ik ben bezig met een content management systeempje voor gebruikers.
Mijn database (mysql) heeft een aantal users en een aantal teams.

In php laat ik een html paginaatje genereren waarin de groep staat beschreven, met een listing van ALLE users. Als een user lid is van de groep staat er een "yes" boxje aangevinkt.

Het probleem is dat ik niet weet hoe ik van deze pagina wijzigingen kan updaten.
Iedere yesno box heeft als "name" de userid en als value 1 of 0.

Ik probeer de database te updaten met:

query("UPDATE user SET userteamid=$userteamid WHERE userid=$userid");

maar $userid wordt (uiteraard) niet herkend.

Mijn vraag: hoe krijg ik name van en checkbox gekoppeld aan $userid?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Volgens mij maak je een kleine denkfout. Een checkbox heeft OF een waarde OF geen waarde.
Per definitie zou ik dus je value op 1 zetten. Vervolgens kan je in een loopje alle checkboxnamen doorlopen en de waarde ophalen. Als deze 1 is, dan is deze aangevinkt, anders niet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry, het gaat hier om radio buttons, niet om een checkbox.

Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

code:
1
<input type=radio name=blaat>

Hierbij is blaat de naam van de variabele die je krijgt na de post, of $_POST['blaat'] voor de nieuwe versies van php

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Nu online

Bosmonster

*zucht*

Als je ja nou als value de userid meegeeft.. kun je checken oftie 0 is. Istie niet nul dan is het een userid ;)

Maaruh.. kun je niet makkelijker alleen een checkbox neerzetten met Ja erachter.. Kun je gewoon kijken of die isset() is :) En de waarde userid meegeven aan value van die check..

(zie ook prefs van GoT.. werkt stuk lekkerder en overzichtelijker dan yes/no radio's)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmmm, ik zal hem nog iets verduidelijken:

Een html regel ziet er (gegenereerd door php) alsvolgt uit:

Yes<input type='radio' name='37' value='1' > No <input type='radio' name='37' value='0' checked><br>
Verder wordt in het form $userteamid=4 meegegeven. Als de "lid" is van dit team is "Yes" checked.

De waarde '37' is de waarde van $userid.
Zo heb ik er 44 onder elkaar staan.

Hoe moet ik het veld 'userteam' in tabel 'user' nu geupdate worden naar waarde 4? Hoe maak ik dat loopje?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

taal enzo :{

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd


Acties:
  • 0 Henk 'm!

Verwijderd

je moet gewoon dat veld niet '37' bijvoorbeeld noemen, maar userid[] ofzo, je krijgt dan een array terug, ik neem aan dat dat helpt? (count($_POST["userid"]) etc)

Acties:
  • 0 Henk 'm!

  • Praetorian
  • Registratie: November 2001
  • Laatst online: 12-09 17:08

Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Verwijderd schreef op 07 November 2002 @ 17:32:
Hmmm, ik zal hem nog iets verduidelijken:

Een html regel ziet er (gegenereerd door php) alsvolgt uit:

Yes<input type='radio' name='37' value='1' > No <input type='radio' name='37' value='0' checked><br>
Verder wordt in het form $userteamid=4 meegegeven. Als de "lid" is van dit team is "Yes" checked.

De waarde '37' is de waarde van $userid.
Zo heb ik er 44 onder elkaar staan.

Hoe moet ik het veld 'userteam' in tabel 'user' nu geupdate worden naar waarde 4? Hoe maak ik dat loopje?
De waarde '37 is NIET de waarde van $userid.
Je krijgt zo een variabele $_POST['37'] = 1 al ie is aangevinkt, en dat kan dus niet, of als het wel kan wil ik het niet eens weten want het is buttugly

Probeer dit eens:
PHP:
1
2
3
4
5
foreach($arraymetuserids as $userid)
{
   print("<input type = 'radio' name='userid_'".$userid." value='yes'>");
   print("<input type = 'radio' name='userid_'".$userid." value='no'><BR>");
}


Dan krijg je voor elke userid een variabele, bijvoorbeeld $_POST['userid_37'] = 'yes'
Ik maak zo al m'n formvariabelen, zodat ik ze in kan delen in objecten, properties, id's enz.

Die explode ik dan, zoals in jouw probleem met meerdere userid's per formulier:

PHP:
1
2
3
4
5
6
7
8
9
10
$userteamid = $_POST["userteamid"]; //?

foreach($_POST as $key => $value)
{
   list($property, $id) = explode("_", $key);
   if(($property == "userid") && ($value == "yes"))
   {
      query("UPDATE user SET userteamid=$userteamid WHERE userid=$id");
   }
}

[ Voor 0% gewijzigd door Genoil op 07-11-2002 18:31 . Reden: bugmania in code ]


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Verwijderd schreef op 07 november 2002 @ 18:14:
je moet gewoon dat veld niet '37' bijvoorbeeld noemen, maar userid[] ofzo, je krijgt dan een array terug, ik neem aan dat dat helpt? (count($_POST["userid"]) etc)
Ik blijf gewoon vergeten dat dit ook prima werkt |:(

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Kijk! Daar heb ik wat aan!
Heb er nog een beetje aan gesleuteld, maar het doet wat ik wil!

Thanx!

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Jij vraagt om taal, wat staat er in de titel ? PHP

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 07 November 2002 @ 22:00:
[...]

Jij vraagt om taal, wat staat er in de titel ? PHP


duh, die heb ik er zelf ingezet :z
die opmerking maakte ik juist omdat mensen lijken te vertikken om de taal in de titel te vermelden

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Praetorian
  • Registratie: November 2001
  • Laatst online: 12-09 17:08
lol... maar ik zag iig aan de code dat het php betrof... of praat ik nou poep :+


Oke oke oke, hij had het in de titel moeten zetten, maar jij deed het overkomen alsof je niet wist over welke taal het ging ;)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Je kunt idd het beste met arrays werken:
HTML:
1
2
3
4
5
6
7
8
9
10
User 169:<hr />
  Groep 1114 
    <input type="radio" name="userid[169][1114]" value="1"> Jepz 
    <input type="radio" name="userid[169][1114]" value="0"> Nopez <br />

  Groep 1115
    <input type="radio" name="userid[169][1115]" value="1"> Jepz 
    <input type="radio" name="userid[169][1115]" value="0"> Nopez <br />

User ... (etc)


En dan moet je als je dit formulier verzendt maar 'ns kijken wat enorm handige array je binnenkrijgt:

code:
1
2
3
4
5
6
7
8
9
10
11
$userid {
   <uid> => {
       <gid> => (1|0)
       <gid> => (1|0)
       (...)
   }
   <uid> => {
       (...)
   }
   (...)
}

kortom:
code:
1
2
3
if ( $userid [ 169 ] [ 1114 ] == "1" ) {
   echo "User 169 zit in groep 1114!!!!";
}


Probeer daar 's een beetje mee te frutselen (misschien is een andere manier van nesten wel veel handiger ;)).

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Praeth schreef op 08 november 2002 @ 18:17:
Oke oke oke, hij had het in de titel moeten zetten, maar jij deed het overkomen alsof je niet wist over welke taal het ging ;)


voor de users ja, omdat die niet zo snel door hebben dat de titel door mij is veranderd, maar de topicstarter (en daar ging het mij ook om) weet wel wat er aan de hand is :)

Kijk, natuurlijk kun je het een keer vergeten, maar het lijkt echt gigantisch vaak te gebeuren. Ik krijg de indruk dat veel mensen hier denken "oh die titel hoef ik me niet zo druk om te maken, als ie fout is dan wijzigt een mod 'm wel". Waarom is die titel dan zo belangrijk, zul je misschien denken. En daarvoor kan ik je verwijzen naar de niveau en splitsing draadjes die hier de afgelopen tijd zijn langsgekomen. Er is een beetje een tweestrijd tussen de niet-php'ers en de wel-php'ers. Over het algemeen zijn de niet-php'ers voor een splitsing (afgezien van het feit dat het niet helemaal werkt), omdat die de 'vervuiling' niet willen zien dat de meeste php topics veroorzaken. De php'ers zijn tegen zo'n splitsing, waar ik me ook wel iets bij voor kan stellen (een scripter is tenslotte niet 'minder' dan een programmeur, om het maar even zwart-wit te stellen). Die komen dan ook met het argument: lees dan om die topics heen. Goed, daar kan ik inkomen, en dat werkt natuurlijk ook gewoon prima, mits iedereen gewoon goede topictitels maakt met taal en een korte doch doeltreffende omschrijving van het probleem. En als ik dan weer eens /14 afspit om wat topictitels te repareren en ik zie dat er zo weinig mensen echt moeite doen om een goede titel te maken, dan kan ik wat gefrustreerd reageren. Goed, that comes with the job zeg ik altijd maar, maar het is wel iets waar iedereen gewoon even rekening mee moet houden, en als iedereen de tijd nam om een goede topic te openen dan was dit alles niet nodig geweest :)

DISCLAIMER: de scheiding php'er / niet-php'er is in werkelijkheid minder zwart-wit dan ik hierboven beschrijf, en dit is in geen geval een flame richting de topicstarter :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Praetorian
  • Registratie: November 2001
  • Laatst online: 12-09 17:08
Case dismissed ;) :+

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

.oisyn:
DISCLAIMER: de scheiding php'er / niet-php'er is in werkelijkheid minder zwart-wit dan ik hierboven beschrijf, en dit is in geen geval een flame richting de topicstarter :)

Richting wie dan wel, he? nou-nou-n-nou?!!

:+

</offtopic>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Kwai_gon_jinn
  • Registratie: Januari 2001
  • Niet online

Kwai_gon_jinn

[-geen icon-]

hmmz dit kan ook met een if statement maar dan moet je met die radio buttons names geven ipv nummers

<input type="radio" name="$blablabla" value="1">
...
if( $blabla && $nog && $meer && $geblaat == "1" ) { echo "doe bla bla bla"; }
else { echo "andere geblaat"; }
..

meer werk maar ut zou ook kunnen werken.. de voorgaande oplossingen is makkelijker :7

Confucius said: "In ancient time, learning was for self. Nowadays learning is for others."

Pagina: 1