[PHP] listbox variabelen -> selected probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers, ik heb via de got search en google een hoop geleerd over php en hoe ik bepaalde problemen moet oplossen. Alleen nu loop ik tegen een probleem aan wat nergens via google of GOT bekend blijkt te zijn.... Ik ben al een tijdje bezig met een simpel bestelformulier waarin een listbox staat met bestelnummers... deze bestelnummers worden d.m.v. een $ dynamisch ingeladen... Alleen is mijn probleem: Ik wil graag dat de 1e option (deze wordt niet ingeladen door een $ maar staat gewoon in de html code) standaard "selected" is. Als ik gewoon selected neerzet bij de 1e option dan selecteert hij niet die standard selected maar hij selecteert de laatste ingeladen $ in de textbox... Dus inplaats van de bovenste standard option selecteert ie de onderste laatst geladen $.

hier is de code die ik gebruik... voor de $'s
code:
1
2
3
4
5
6
7
8
9
10
11
<?php $bn1 = "100103"; $bn2 = "100204"; $bn3 = "100305"; $bn4 = "4"; 
$bn5 = "5"; $bn6 = "6"; $bn7 = "7"; $bn8 = "8"; $bn9 = "9"; $bn10 = "10";
$bn11 = ""; $bn12 = "";

$ao1 = "jurk"; $ao2 = "hemd"; $ao3 = "blouse"; $ao4 = "4"; $ao5 = "5";
$ao6 = "6"; $ao7 = "7"; $ao8 = "8"; $ao9 = "9"; $ao10 = "10";
$ao11 = "11"; $ao12 = "12";

$prijs1 = "19.95"; $prijs2 = "29.95"; $prijs3 = "39.95"; $prijs4 = "4"; $prijs5 = "5";
$prijs6 = "6"; $prijs7 = "7"; $prijs8 = "8"; $prijs9 = "9"; $prijs10 = "10";
$prijs11 = "11"; $prijs12 = "12"; ?>

bn staat voor bestelnummer en ao staat voor artikelomschrijving.

Hier komt de code van de textbox:
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
<select name="Bestelnummer" class="listbox" onClick="clicked(this.form);this.form.Prijs.value = (this.form.Aantal.value - 0) * (this.form.prijsps.value - 0);bereken(7);" <? print $style; ?>>
            <option value='' selected id="0" label="">Selecteer</option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn1" ); ?>  id="<?php echo $prijs1; ?>" label="<?php echo $ao1; ?>" value="<?php echo $bn1; ?>"><?php echo $bn1; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn2" ); ?>  id="<?php echo $prijs2; ?>" label="<?php echo $ao2; ?>" value="<?php echo $bn2; ?>"><?php echo $bn2; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn3" ); ?>  id="<?php echo $prijs3; ?>" label="<?php echo $ao3; ?>" value="<?php echo $bn3; ?>"><?php echo $bn3; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn4" ); ?>  id="<?php echo $prijs4; ?>" label="<?php echo $ao4; ?>" value="<?php echo $bn4; ?>"><?php echo $bn4; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn5" ); ?>  id="<?php echo $prijs5; ?>" label="<?php echo $ao5; ?>" value="<?php echo $bn5; ?>"><?php echo $bn5; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn6" ); ?>  id="<?php echo $prijs6; ?>" label="<?php echo $ao6; ?>" value="<?php echo $bn6; ?>"><?php echo $bn6; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn7" ); ?>  id="<?php echo $prijs7; ?>" label="<?php echo $ao7; ?>" value="<?php echo $bn7; ?>"><?php echo $bn7; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn8" ); ?>  id="<?php echo $prijs8; ?>" label="<?php echo $ao8; ?>" value="<?php echo $bn8; ?>"><?php echo $bn8; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn9" ); ?>  id="<?php echo $prijs9; ?>" label="<?php echo $ao9; ?>" value="<?php echo $bn9; ?>"><?php echo $bn9; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn10" ); ?>  id="<?php echo $prijs10; ?>" label="<?php echo $ao10; ?>" value="<?php echo $bn10; ?>"><?php echo $bn10; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn11" ); ?>  id="<?php echo $prijs11; ?>" label="<?php echo $ao11; ?>" value="<?php echo $bn11; ?>"><?php echo $bn11; ?> 
            </option>
            <option  <?php  formSelected( $HTTP_POST_VARS[ "Bestelnummer" ], "$bn12" ); ?>  id="<?php echo $prijs12; ?>" label="<?php echo $ao12; ?>" value="<?php echo $bn12; ?>"><?php echo $bn12; ?> 
            </option>
          </select>

Op de 2e regel van de textbox zie je duidelijk dat er "selected" staat maar dit werkt dus niet... Sorry van de lange code van de textbox maar ik ben bang dat het een zooitje/onoverzichtelijk wordt als ik enters erin ga zetten.

Ps. De reden dat ik deze topic in P&W post is omdat ik denk dat de oplossing in php ligt.

[ Voor 23% gewijzigd door Verwijderd op 22-04-2004 14:41 . Reden: was incompleet ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat bedoel je in hemelsnaam met een $? Een variabele? En lees eens een stukje bij over arrays :)

[ Voor 139% gewijzigd door .oisyn op 22-04-2004 14:48 ]

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

Topicstarter
ja zoals je in de code kunt zien gaat het om variabelen ja :D Maar het is toch raar dat ie zich niet houd aan de "selected" option? :D

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar ik snap je probleem niet helemaal. Blijkbaar laat ie nog steeds de laatste zien als je nog niets geselecteerd hebt? Heb je naar de html output gekeken? Bijvoorbeeld dat die formSelected functie altijd "selected" output?

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

Topicstarter
ok ik ga ff een url posten voor je zodat je het kunt zien... als je kijkt zie je 6 listboxen.... waarvan alleen de bovenste dynamisch met php variabelen word ingeladen.

De optie "selecteer" staat hier als "selected" ook in de html output. Maar hij doet het gewoon niet :D

Url:
[url]url verwijderd[/url]

Ik ga maar ff gauw een pakje sigaretten halen met een groot pak koffie want als ik ga lezen over arrays zoals je hebt voorgesteld dan ben ik nog wel ff bezig hahaha :D

[ Voor 8% gewijzigd door Verwijderd op 22-04-2004 17:04 . Reden: url verwijderd tegen valse/test bestellingen :D ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Standaard debug probleempje... Gewoon even goed opletten waar je mee bezig bent. Als je gewoon even had gekeken wat er bij het geselecteerde veld stond.

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
<option value='' selected id="0" label="">Selecteer</option>
<option value="100103"  id="19.95" label="jurk"  >100103 
</option>
<option    id="29.95" label="hemd" value="100204">100204 
</option>
<option    id="39.95" label="blouse" value="100305">100305 
</option>
<option    id="4" label="4" value="4">4 
</option>
<option    id="5" label="5" value="5">5 
</option>
<option    id="6" label="6" value="6">6 
</option>
<option    id="7" label="7" value="7">7 
</option>
<option    id="8" label="8" value="8">8 
</option>
<option    id="9" label="9" value="9">9 
</option>
<option    id="10" label="10" value="10">10 
</option>
<option  selected  id="11" label="11" value=""> 
</option>
<option  selected  id="12" label="12" value=""> 
</option>

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op 22 april 2004 @ 14:57:
Standaard debug probleempje... Gewoon even goed opletten waar je mee bezig bent. Als je gewoon even had gekeken wat er bij het geselecteerde veld stond.
Ok kijk daar had ik overheen gelezen.... maar nou snap ik nog niet hoe dat komt want in de bron code hierboven (in mijn 1e post) staat nergens dat ie die 2 laatste options op selected moet zetten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou ja zeg... hij zet ze op selected omdat ik bij de variabelen niks had ingevuld...
Maar nou blijft alleen het probleem dat als er niet 12 bestelnummers nodig zijn in het winterseizoen bijv. dat ik ze niet blanco kan laten... dit is jammer!

Acties:
  • 0 Henk 'm!

  • bartware
  • Registratie: Juni 2001
  • Laatst online: 25-03-2023

bartware

@jabber.org

Misschien kun je beter een functie maken die de hele regel met <option> en </option> uitvoert. In plaats van deze brij waar je elke variable toch weer echoot.
(Wat als er meer dan 12 bestelnummers komen?)

Dan door je bestelnummers loopen, en voor de gevallen die niet leeg zijn met deze nieuwe functie een option genereren.

Heb ik me begrepen?
Cycle Vision 2020: 17-20 juli Sportpark Sloten & Wheelerplanet Spaarnwoude


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Verwijderd schreef op 22 april 2004 @ 15:26:
Nou ja zeg... hij zet ze op selected omdat ik bij de variabelen niks had ingevuld...
Maar nou blijft alleen het probleem dat als er niet 12 bestelnummers nodig zijn in het winterseizoen bijv. dat ik ze niet blanco kan laten... dit is jammer!
Je kunt toch gewoon checken of een variable leeg is of niet?:

PHP:
1
2
3
4
if ( !empty($variable) )
{
  echo "<option......";
}

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bartware schreef op 22 april 2004 @ 15:42:
Misschien kun je beter een functie maken die de hele regel met <option> en </option> uitvoert. In plaats van deze brij waar je elke variable toch weer echoot.
(Wat als er meer dan 12 bestelnummers komen?)

Dan door je bestelnummers loopen, en voor de gevallen die niet leeg zijn met deze nieuwe functie een option genereren.
Ja dat is een idee, maar goed dat ik 3 pakken senseo heb gekocht want ik moet me zeker nog veel meer gaan verdiepen in PHP. Voordat ik jou voorstel voorelkaar heb ben ik wel een paar daagje verder hehehehe :D

En Michali ik weet niet of hij met jou oplossing alsnog niet de lege variabelen op selected zet in de listbox

Acties:
  • 0 Henk 'm!

  • bartware
  • Registratie: Juni 2001
  • Laatst online: 25-03-2023

bartware

@jabber.org

Verwijderd schreef op 22 april 2004 @ 16:09:
En Michali ik weet niet of hij met jou oplossing alsnog niet de lege variabelen op selected zet in de listbox
Eeehm, je weet zelf toch wat de functie formSelected doet? (Je hebt de source toch wel?) Wij niet, want we hebben geen glazen bol :P

Verder hoop ik dat je je gaat verdiepen in PHP en het gebruik van arrays, want daar kun je zoveel meer mee bereiken.
En die 3 pakken Senseo is het zeker waard. ;)

Heb ik me begrepen?
Cycle Vision 2020: 17-20 juli Sportpark Sloten & Wheelerplanet Spaarnwoude


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

<option selected> is verouderd/fout, probeer het eens met <option selected="selected">, daar heb ik nog nooit problemen mee gehad.

Je code is ook niet echt geweldig, je kan zoiets veel korter doen met een array en een loop:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<select name="town" size="1" class="input">
<?php

//geselecteerde item, je kunt die ook met nummers doen
$user_town = "Den Haag";

$town_name = array("Amsterdam", "Den Haag", "Rotterdam");

for($i = 1; $i <= count($town_name); $i++) {

    if($user_town == $town_name[$i]) {
        $sel = " selected=\"selected\"";
    } else {
        $sel = "";
    }


    echo ("<option".$sel.">".$town_name[$i]."</option>\n");
}

?>
</select>


Dit stukje code laat dus een lijstje met steden zien waarbij de stad Den Haag is geselecteerd.

[ Voor 43% gewijzigd door Johnny op 22-04-2004 16:41 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Een klein stukje code als die van Jonny maar dan iets schoner :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$userTown = "Den Haag";

$townName = array("Amsterdam", "Den Haag", "Rotterdam"); 

$n = count($townName);
for ($i=0; $i<$n; $i++)
{
    if($userTown == $townName[$i])
        echo "<option selected=\"selected\">".$townName[$i]."</option>\n";
    else
        echo "<option>".$townName[$i]."</option>\n";

}


Zo doe ik het graag

[ Voor 18% gewijzigd door Suepahfly op 22-04-2004 16:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Johnny schreef op 22 april 2004 @ 16:39:
Dit stukje code laat dus een lijstje met steden zien waarbij de stad Den Haag is geselecteerd.
Hehe... ja ik ga nog ff stevig studeren want als ik naar je code kijk... :D

Dus mijn kennis is nog te min :D Maar thanks voor jullie hulp guys!

[ Voor 9% gewijzigd door Verwijderd op 22-04-2004 19:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Johnny schreef op 22 april 2004 @ 16:39:
Je code is ook niet echt geweldig, je kan zoiets veel korter doen met een array en een loop:
Alle code die ik heb gepost heb ik dus wel nodig zoals de id en label tags i.v.m. prijs en artikelomschrijving... Ik weet het het is raar maar wel inventief toch? :D
Voor elke option in de listbox moet er dus ook een id en label tag zijn.


Verder snap ik nu wel waarom jou php code een stuk beter is maar als ik daar die id tags enzo in moet verwerken moet ik nog even stevig door studeren :D

[ Voor 8% gewijzigd door Verwijderd op 22-04-2004 18:46 ]

Pagina: 1