[PHP] php iets laten selecteren in een dropdown

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

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
ik heb al verschillende mensen gevraagd die er verstand van hebben maar niemand kan het mij vertellen. ook weet ik niet waar ik moet zoeken @ php.net want ik kan niet goed omschrijven wat ik bedoel.

stel het volgende:
op een site moet je je leeftijd opgeven, dit kan van 1 tot 99 zijn
(in het echt zou ik met geboortedatum werken maar dat doet er ff niet toe het gaat om het idee; ik wil dit principe met een andere situatie gebruiken)
je geeft dan een formulier:

code:
1
2
3
4
5
6
7
<select size="1" name="leeftijd"> 
    <option value="1">1 jaar</option> 
    <option value="2">2 jaar</option> 
    <option value="3">3 jaar</option> 
    ... 
    <option value="99">99 jaar</option> 
</select>


je gooit dan $_POST['leeftijd'] in de database (dat is niet zo moeilijk.
Maar wat nu als iemand zijn lprofiel wil editen?
hij / zij gaat naar het edit scherm en dan zou het fijn zijn als de dropdown al meteen de goede leeftijd aangeeft.
voorbeeld.
Mark had in zijn profiel staan 45 maar is nu 46 geworden.
Hij gaat naar de edit-profiel-pagina.
de dropdown staat reeds op 45 selected, hij hoeft slechts eentje naar onder te gaan en hij kan z'n profiel editen.

Probleem is:
ik snap niet hoe je php de gewenste optie kunt laten selecten. Hoe kun je aan php meegeven dat hij het getal uit de database haalt en vervolgens dit getal in de dropdown select??? en dat moet dan ook mogelijk zijn als het niet over getallen gaat maar over bijv. een verzameling woorden
(nogmaals: dit is een hypothetische vraag ik zit niet op antwoorden te wachten als dat het niet slim is om mensen hun leeftijd in te laten voeren want dat snap ik ook wel het is slechts een voorbeeld)

Hoeder van het Noord-Meierijse dialect


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Bedoel je:
<option Selected value="1">1 jaar</option>
?

Ik denk dat je de Selected zelf wel voor elkaar kan krijgen. :)

[ Voor 93% gewijzigd door gorgi_19 op 30-09-2003 16:17 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
gorgi_19 schreef op 30 September 2003 @ 16:17:
Bedoel je:
<option Selected value="1">1 jaar</option>
?
ja dat bedoel ik
als ik bijv. 99 opties heb
en iemand heeft voor optie 45 gekozen
dan moet php die 45 uit de database halen (ja dat snap ik wel hoe je dat doet hoor :+ )
en vervolgens moet php dan <option selected value="45">45 jaar</option> doen

edit:
selected snap ik wel dat dat zo werkt hoor in html
allee ik snap niet hoe ik php bij het juiste getal selected toe laat voegen?

[ Voor 21% gewijzigd door Harrie_ op 30-09-2003 16:19 ]

Hoeder van het Noord-Meierijse dialect


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:40

RM-rf

1 2 3 4 5 7 6 8 9

McLatey schreef op 30 september 2003 @ 16:16:
ik heb al verschillende mensen gevraagd die er verstand van hebben maar niemand kan het mij vertellen. ook weet ik niet waar ik moet zoeken @ php.net want ik kan niet goed omschrijven wat ik bedoel.
PHP genereert in dit geval gewoon HTML, wat je wil bereiken, wil je bereiken in HTML, PHP is daarbij nauwelijks van belang.

leer dus eerst HTML, en dan had je geweten dat de

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-08 13:41
Je kan php het stukje code laten echo'en wat gorgi_19 voorstelt. Zo'n dropdown is dus html, en de oplossing ook. Die selected kun je er krijgen door met een if eerst te checken welke id er in de db staat, en dan te echo'en als deze klopt met de id van het ene stukje van de drop down :)

|>


  • RePlayer
  • Registratie: September 2003
  • Laatst online: 01-07 14:23
Je moet de leeftijd uit laten lezen en dan zeggen dat ie selected neer moet zetten bij de value die overeenkomt met de leeftijd uit de db.

---


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Ja, en wat lukt je daarbij niet?

Je kunt toch gewoon en lusje maken die van 1 tot 99 gaat en dan de options afdrukt. Binnen die lus vergelijk je de teller met je db result en print je selected.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Simon schreef op 30 september 2003 @ 16:19:
Je kan php het stukje code laten echo'en wat gorgi_19 voorstelt. Zo'n dropdown is dus html, en de oplossing ook. Die selected kun je er krijgen door met een if eerst te checken welke id er in de db staat, en dan te echo'en als deze klopt met de id van het ene stukje van de drop down :)
combineer dat met een lusje die van 0 tot 130 gaat (of zijn er al oudere mensen op deze wereld? ;) ) en je bent klaar :)

HTML code voor een dropdown met >100 opties zal echter wel wat kilobytes zijn; je zou kunnen overwegen om de dropdown clientside met javascript te populaten.

Intentionally left blank


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
Janoz schreef op 30 September 2003 @ 16:21:
Ja, en wat lukt je daarbij niet?

Je kunt toch gewoon en lusje maken die van 1 tot 99 gaat en dan de options afdrukt. Binnen die lus vergelijk je de teller met je db result en print je selected.
die lus lukt me dus niet... :'(

Hoeder van het Noord-Meierijse dialect


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 20-08 14:51

TwoR

Gekleurde stippen

* TwoR Strijkt eens met zijn hand over zijn hard
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
 for ($i = 01; $i <= 31; $i++){ 
        $value = $i;
        if ($value < 10){
         $value = "0$value";
        }
         echo "<option value=\"$value\" ";
         if ($i == $dag){ 
          echo " selected "; 
         } 
         echo ">$value</option>"; 
        }
        echo "
        </select>

Is dit dan echt zo moeilijk

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

McLatey schreef op 30 September 2003 @ 16:22:
[...]


die lus lukt me dus niet... :'(
Wat lukt je niet?
Kan je dit stukje code neerzetten? En wat probeersels.. :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
TwoR schreef op 30 September 2003 @ 16:23:
* TwoR Strijkt eens met zijn hand over zijn hard
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
 for ($i = 01; $i <= 31; $i++){ 
        $value = $i;
        if ($value < 10){
         $value = "0$value";
        }
         echo "<option value=\"$value\" ";
         if ($i == $dag){ 
          echo " selected "; 
         } 
         echo ">$value</option>"; 
        }
        echo "
        </select>

Is dit dan echt zo moeilijk
zover kwam ik ook nog wel
maar wat nu als ik een dropdown heb met opties als piet,henk,jan,kees etc.
dan kom ik er dus niet meer uit

Hoeder van het Noord-Meierijse dialect


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Effe in ASP (ben ik wat bekender mee):
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%
   Option Explicit

   Dim T, iAge, strTMP

   iAge = 25  'De gewenste leeftijd (uit het profiel dus)

   Response.Write "<select name=""leeftijd"">" & vbCrLf
   For t=1 to 99
      if T = iAge then strTMP = " selected" else strTMP = ""
      response.write "<option value=""" & T & """" & strTMP & ">" & T & " jaar</option>" & vbCrLf
   Next
   Response.Write "</select>" & vbCrLf
%>


edit:

Ja hey! Gaan ze opeens allemaal code posten :P
McLatey schreef op 30 September 2003 @ 16:25:
[...]
zover kwam ik ook nog wel
maar wat nu als ik een dropdown heb met opties als piet,henk,jan,kees etc.
dan kom ik er dus niet meer uit
Dan krijg je dus zoiets

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
   Option Explicit

   Dim strName, strTMP

   strName = "Administrators"  'De gewenste "string"

   Response.Write "<select name=""Groep"">" & vbCrLf
   While not MyRecordSet.eof
      if strName = MyRecordSet.Fields("GroupName") then strTMP = " selected" else strTMP = ""
      response.write "<option value=""" & T & """" & strTMP & ">" & T & " jaar</option>" & vbCrLf
      MyRecordset.movenext
   Wend
   Response.Write "</select>" & vbCrLf
%>

[ Voor 106% gewijzigd door RobIII op 30-09-2003 16:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

McLatey schreef op 30 September 2003 @ 16:25:
[...]


zover kwam ik ook nog wel
maar wat nu als ik een dropdown heb met opties als piet,henk,jan,kees etc.
dan kom ik er dus niet meer uit
Het principe is hetzelfde.. Laat jouw code eens zien.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 21-08 09:50

Tjark

DON'T PANIC

PHP:
1
2
3
4
5
6
7
8
$opt = '';
for($j=1;$j<100;$j++) {
  $option .= '<option ';
  if($j == $leeftijd_uit_database) {
    $option .= 'selected ';
  }
  $option = 'value="'.$j.'">'.$j.' jaar</option>';
}


of natuurlijk

PHP:
1
2
3
4
5
$opt = '';
for($j=1;$j<100;$j++) {
  $option .= '<option value="'.$j.'">'.$j.' jaar</option>';
}
$option = str_replace("\"$leeftijd_uit_database\"", "\"$leeftijd_uit_database\" selected",$option);

*insert signature here


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 20-08 14:51

TwoR

Gekleurde stippen

Ja je had het toch net echt wel over getallen he.. Maar goed dan zo.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<select name=\"categorie\">
";
$sql_cat = "SELECT * FROM categorien";
$query_cat = mysql_query($sql_cat) or die(mysql_error());
while ($cat = mysql_fetch_array($query_cat)){
 echo "<option value=\"" . $cat['CatID'] ."\"";
  if ($cat['CatID'] == $object->categorie){
   echo " selected";
  } 
 echo ">$cat[CatName]</option>"; 
}
echo"   
</select>

[ Voor 28% gewijzigd door TwoR op 30-09-2003 16:29 ]


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
gorgi_19 schreef op 30 September 2003 @ 16:26:
[...]

Het principe is hetzelfde.. Laat jouw code eens zien.. :)
ik had al een code bijna identiek aan die van Twor, alleen nu wilde ik datzelfde doen alleen dan met keuzes in m'n dropdown die niet van 0 tot 100 lopen ofzo.
echter ik weet niet hoe ik dát aan moet pakken

Hoeder van het Noord-Meierijse dialect


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
TwoR schreef op 30 September 2003 @ 16:28:
Ja je had het toch net echt wel over getallen he.. Maar goed dan zo.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<select name=\"categorie\">
";
$sql_cat = "SELECT * FROM categorien";
$query_cat = mysql_query($sql_cat) or die(mysql_error());
while ($cat = mysql_fetch_array($query_cat)){
 echo "<option value=\"" . $cat['CatID'] ."\"";
  if ($cat['CatID'] == $object->categorie){
   echo " selected";
  } 
 echo ">$cat[CatName]</option>"; 
}
echo"   
</select>
en als die categoriën nu eens niet in m'n database staan :-)
daar is waar ik dus vastloop he

Hoeder van het Noord-Meierijse dialect


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-08 13:41
McLatey schreef op 30 september 2003 @ 16:30:
[...]


en als die categoriën nu eens niet in m'n database staan :-)
daar is waar ik dus vastloop he
Dan maak je toch een andere query? En als die if waarde niet waar is, dan is er toch ook niets aan de hand?

|>


  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 21-08 09:50

Tjark

DON'T PANIC

Heb je mijn 2e optie gelezen?

*insert signature here


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 20-08 14:51

TwoR

Gekleurde stippen

Ja hallo he!! categorien is natuurlijk een tabel en als je dit dan nog niet snapt ga dan eerst maar eens PHP leren.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
McLatey schreef op 30 September 2003 @ 16:29:
[...]


ik had al een code bijna identiek aan die van Twor, alleen nu wilde ik datzelfde doen alleen dan met keuzes in m'n dropdown die niet van 0 tot 100 lopen ofzo.
echter ik weet niet hoe ik dát aan moet pakken
Dat kan ook met ID's ofzo...
Als je een lijst hebt met dingen:
code:
1
2
3
4
5
6
ID Omschrijving
1  Appels
2  Peren
3  Bananen
4  Citroenen
...etc

Dan kun je dus kijken of het ID overeenkomt. Je gebruikt de Value attribute van de optie om het ID vast te houden (en dus ook om op te slaan of te POST/GET-ten) en de option value zelf voor de "Omschrijving". Sim-pel.
HTML:
1
2
3
4
5
6
<select name="Fruit">
  <option Value="1">Appels</option>
  <option Value="2">Peren</option>
  <option Value="3">Bananen</option>
  ..etc
</select>

Kwestie van ID-tje vergelijken met de waarde die je hebt...

[ Voor 24% gewijzigd door RobIII op 30-09-2003 16:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
TwoR schreef op 30 September 2003 @ 16:31:
Ja hallo he!! categorien is natuurlijk een tabel en als je dit dan nog niet snapt ga dan eerst maar eens PHP leren.
ik snap wel dat categoriën een tabel is.
maar wat nu als ik het wil doen zonder die tabel categorien?

Hoeder van het Noord-Meierijse dialect


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 20:20
Waarom werk je trouwens met leeftijd en niet met datum. (dus 30-9-1993 ipv. 10) :?

Dan hoeven ze maar 1 keer hun leeftijd in te vullen en je kunt het met een berekening zo berekenen. Heb je die dropdown box alleen bij het aanmelden nodig :)

let the past be the past.


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-08 13:41
McLatey schreef op 30 september 2003 @ 16:35:
[...]


ik snap wel dat categoriën een tabel is.
maar wat nu als ik het wil doen zonder die tabel categorien?
Bedoel je helemaal zonder tabel, of met één tabel?

Helemaal zonder tabel: waar haal je dan je data uit?
Andere tabel: Dan moet je je eens verdiepen in SQL/MySQL (no offence)

|>


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
SPee schreef op 30 September 2003 @ 16:38:
Waarom werk je trouwens met leeftijd en niet met datum. (dus 30-9-1993 ipv. 10) :?

Dan hoeven ze maar 1 keer hun leeftijd in te vullen en je kunt het met een berekening zo berekenen. Heb je die dropdown box alleen bij het aanmelden nodig :)
zie firstpost: het is hypothetisch niet specifiek voor de leeftijd maar de manier ik wil dit ook toe kunnen passen als users in moeten vullen hoeveel huisdieren ze hebben. dan vult pietje in dat hij 4 huisdieren heeft. als zijn hamster later 2 kindjes krijgt dan dan kan hij dat editen tot 6.

Hoeder van het Noord-Meierijse dialect


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
Simon schreef op 30 September 2003 @ 16:38:
[...]

Bedoel je helemaal zonder tabel, of met één tabel?

Helemaal zonder tabel: waar haal je dan je data uit?
Andere tabel: Dan moet je je eens verdiepen in SQL/MySQL (no offence)
ik wil het doen met één tabel waar de data instaat
bijv:

ID CATEGORIE
------------------------
1 APPELS
2 BANANEN
3 KIWIS
4 APPELS
5 BANANEN

op die manier kan hij de data wel uit de database halen maar weet hij nog niet welke verschillende categoriën er allemaal zijn :)
no offence
none taken :+

[ Voor 4% gewijzigd door Harrie_ op 30-09-2003 16:44 ]

Hoeder van het Noord-Meierijse dialect


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 21-08 13:52
McLatey schreef op 30 September 2003 @ 16:41:
zie firstpost: het is hypothetisch niet specifiek voor de leeftijd maar de manier ik wil dit ook toe kunnen passen als users in moeten vullen hoeveel huisdieren ze hebben. dan vult pietje in dat hij 4 huisdieren heeft. als zijn hamster later 2 kindjes krijgt dan dan kan hij dat editen tot 6.
En als je dat nou eens gewone textuele invoervelden maakt en die verifieerd op invoer? :?

Lijkt mij toch wel simpeler. :)

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
Banpei schreef op 30 September 2003 @ 16:44:
[...]

En als je dat nou eens gewone textuele invoervelden maakt en die verifieerd op invoer? :?

Lijkt mij toch wel simpeler. :)
maar als ik nu eens 40 categoriën wil
en elke categorie doet een plaatje outputten
bijv. als de categorie appels is dan doet hij appels.jpg
is de categorie passievruchten dan geeft hij passievruchten.jpg
dan is het niet handig om dat met een textueel invoerveld te doen...
dalijk vult iemand poepvruchten in en dan wil hij poepvruchten.jpg outputten, terwijl die helemaal niet bestaat (krijg je een leuk rood kruisje op je site)

Hoeder van het Noord-Meierijse dialect


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-08 13:41
McLatey schreef op 30 September 2003 @ 16:43:
[...]


ik wil het doen met één tabel waar de data instaat
bijv:

ID CATEGORIE
------------------------
1 APPELS
2 BANANEN
3 KIWIS
4 APPELS
5 BANANEN

op die manier kan hij de data wel uit de database halen maar weet hij nog niet welke verschillende categoriën er allemaal zijn :)


[...]

none taken :+
Dan maak je je query zo SELECT * FROM tabelnaam, die voer je uit, en je vergelijkt dan op de 'ID' dus de eerste kolom.

Overigens; http://www.w3schools.com/sql/default.asp :) Kan je een hoop tijd uiteindelijk schelen :)

[ Voor 10% gewijzigd door simon op 30-09-2003 16:47 ]

|>


Verwijderd

McLatey, ik ben nu dit forum een beetje aan het lezen en het lijkt mij een heeeel verstandig idee dat je effe een PHP/HTML cursus gaat volgen... (no offence!)

Want het maakt geen biet uit of je nu een nummer of string vergelijk en of de data nu uit een array/tekstbestand/database komt veranderd nog niet veel aan het lusje...

De voorbeelden die de mensen hier hebben laten zien zijn goed!

Het kan natuurlijk ook we jouw vraag verkeerd begrijpen...

---

Natuurlijk is mijn post weer te laat ;)

[ Voor 6% gewijzigd door Verwijderd op 30-09-2003 16:48 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

McLatey schreef op 30 September 2003 @ 16:46:
[...]


maar als ik nu eens 40 categoriën wil
en elke categorie doet een plaatje outputten
bijv. als de categorie appels is dan doet hij appels.jpg
is de categorie passievruchten dan geeft hij passievruchten.jpg
dan is het niet handig om dat met een textueel invoerveld te doen...
dalijk vult iemand poepvruchten in en dan wil hij poepvruchten.jpg outputten, terwijl die helemaal niet bestaat (krijg je een leuk rood kruisje op je site)
dat kan je toch checken?
file_exists()

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Topicstarter
Erkens schreef op 30 September 2003 @ 16:47:
[...]

dat kan je toch checken?
file_exists()
kan ook idd... maar ik wil het zo makkelijk mogelijk maken voor de user en ik wil dit op allerlei gebieden toepassen met opties van 1 t/m 5 maar ook met bijv. 2000 verschillende hondenrassen :) (ik noem maar iets)

verder mag je het gerust op slot gooien want ik denk dat de meeste mensen hier mijn vraag verkeerd begrijpen... het is ook moeilijk uit te leggen wat ik precies bedoel maarja ik zal het nog eens overdenken :Y

Hoeder van het Noord-Meierijse dialect


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

McLatey schreef op 30 september 2003 @ 16:49:
[...]
verder mag je het gerust op slot gooien want ik denk dat de meeste mensen hier mijn vraag verkeerd begrijpen... het is ook moeilijk uit te leggen wat ik precies bedoel maarja ik zal het nog eens overdenken :Y
Als alle mensen je vraag verkeerd begrijpen ligt dat niet aan hun maar aan de originele vraagstelling :)

Wellicht de volgende keer even vantevoren een episteltje typen voordat je post? ;)

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.