Avatar billede dannyboy Nybegynder
22. april 2003 - 16:22 Der er 30 kommentarer og
1 løsning

Validering af select box

Jeg er newbie og har brug for hjælp til validering af en select box.

(Det er en meget primitiv form for validering jeg laver, men ønsker pt. ikke at gøre mere ud af det.)

Et normalt input felt valider jeg således:

if (
($vat) && ..........  bla bla bla derud af
)
{

VAT no.:<? if (!$vat) { echo "<span class=\"red\">*</span>" ; } ?>
<input type="text" name="vat" value="<? echo $vat; ?>">


Hvordan bygger jeg det så op i en select ??


Type of business:
<select name="business" size="1">
<option value=" ">Please choose -&gt;</option>
<option value="Wholesaler">Wholesaler</option>
<option value="Retail dealer">Retail dealer</option>
<option value="Other">Other</option>
</select>
Avatar billede ahv Nybegynder
22. april 2003 - 16:25 #1
if($business == Wholesaler){ bla bla bla....

Eller hvad mener du?
Avatar billede ahv Nybegynder
22. april 2003 - 16:25 #2
hov:

if($business == "Wholesaler"){ bla bla bla....
Avatar billede dannyboy Nybegynder
22. april 2003 - 16:33 #3
Sorry, men du er nærmest nødt til at tegne og fortælle
og lave selecten for mig.
Avatar billede ahv Nybegynder
22. april 2003 - 16:37 #4
Du har din select, som du selc har konstrueret:

<select name="business" size="1">
<option>Please choose -&gt;</option>
<option value="Wholesaler">Wholesaler</option>
<option value="Retail dealer">Retail dealer</option>
<option value="Other">Other</option>
</select>

Hvis du så via PHP vil tjekke om man f.eks. har valgt Wholesaler, så gør du det på denne måde:

<?php
if($_POST['business'] == "Wholesaler"){ //Denne linie ser efter om ens valg er lig med Wholesaler, ellers fortsætter den bare.

Hvis du så vil teste om en anden er sat fortsætter du bare:

elseif($_POST['business'] == "Retail dealer"){

Skal du blot tjekke om man overhovedet har valgt noget gør du det med:

if($_POST['business']){

Er det dette du er ude efter eller...?
Avatar billede ahv Nybegynder
22. april 2003 - 16:39 #5
Jeg kan evt. kontaktes på:

MSN: alexander_hv@hotmail.com
ICQ: 82550004
Avatar billede tefcke Nybegynder
22. april 2003 - 16:40 #6
$checkbox = $_POST['business'];
switch ( $checkbox ) {
    case ' ':
        // NOTHING SELECTED!
        break; 
    case 'Wholesaler':
        // DO STUFF
        break; 
    case 'Retail dealer':
        // DO STUFF
        break; 
    case 'Other':
        // DO STUFF
        break; 
    default:
        // DO STUFF
        break; 
}
Avatar billede dannyboy Nybegynder
22. april 2003 - 16:40 #7
Tja, nu fatter jeg ikke så meget.
Men formålet er bare at validere om der er lavet et valg
-altså ikke så meget hvilket, men bare om der er valgt,
og så skal selecten "huske" valget når man submitter til PHP_SELF
sådan at boxen ikke er nulstillet.
Avatar billede ahv Nybegynder
22. april 2003 - 16:43 #8
For at få den til at huske, laver du blot:

<select name="business" size="1">
<?php if($_POST['business']){ ?>
<option value="<?php echo $_POST['business']; ?>"><?php echo $_POST['business']; ?></option>
<?php }else{ ?>
<option>Please choose -&gt;</option>
<?php } ?>
<option value="Wholesaler">Wholesaler</option>
<option value="Retail dealer">Retail dealer</option>
<option value="Other">Other</option>
</select>
Avatar billede tefcke Nybegynder
22. april 2003 - 16:45 #9
så lav din select om hvis du bare skal validerer:
<select name="business" size="1">
  <option value="0">Please choose -&gt;</option>
  <option value="1">Wholesaler</option>
  <option value="1">Retail dealer</option>
  <option value="1">Other</option>
</select>


når den sendes, tjekkes som følger:

if ( $_POST['buisness'] ) {
  // OK! - Der er valgt noget
} else {
  // Der er ikke valgt noget
}
Avatar billede ahv Nybegynder
22. april 2003 - 16:47 #10
Når du blot bare skal have den til at vælge det du vælger igen, kan min gøres lidt flottere med: (bare et eksempel)

<form action="test.php" method="post">
<select name="business" size="1">
<option>Please choose -&gt;</option>
<option value="Wholesaler" <?php if($_POST[business] == "Wholesaler"){ echo "selected";} ?>>Wholesaler</option>
<option value="Retail dealer"  <?php if($_POST[business] == "Retail dealer"){ echo "selected";} ?>>Retail dealer</option>
<option value="Other"  <?php if($_POST[business] == "Other"){ echo "selected";} ?>>Other</option>
</select>
<input type="submit" value="Send">
</form>
Avatar billede ahv Nybegynder
22. april 2003 - 16:48 #11
Det kan du se hvordan den fungere her:

http://www.ahv.starthotel.dk/test.php
Avatar billede dannyboy Nybegynder
22. april 2003 - 16:56 #12
Prøver lige
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:01 #13
OK, det sidste ahv har postet virker fint!
Den husker det som er valgt.

Nu mangler jeg bare at der skal valideres
sådan at man SKAL foretage et valg.

Selecten er del af en længere formular
hvor scriptet starter sådan:

if (
($company) &&
($vat) &&
($person) &&
($address) &&
($postal) &&
($city) &&
($country) &&
($phone) &&
($mail)
)
{

Jeg skal altså på en eller anden måde have selecten
med i valideringen og det er lidt kryptisk for mig.
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:02 #14
Som sagt valideres normale inputes sådan:

VAT no.:<? if (!$vat) { echo "<span class=\"red\">*</span>" ; } ?>
<input type="text" name="vat" value="<? echo $vat; ?>">
Avatar billede ahv Nybegynder
22. april 2003 - 17:04 #15
if($company && $vat && $person && $address && $postal && $city && $country && $phone && $mail && $business)
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:07 #16
Jeg er med på at variablen business skal med i if sætningen, men
hvordan ser koden ud i selve selecten?
Avatar billede ahv Nybegynder
22. april 2003 - 17:10 #17
Hvordan koden ser ud?
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:15 #18
Here goes:


<table border="0" cellspacing="0" cellpadding="3" align="center">
<form name="process" action="<? echo $PHP_SELF ; ?>" method="post">
 
  <tr>
    <td>Company:<? if (!$company) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="company" class="field" style="width: 220px" value="<? echo $company; ?>"></td>
  </tr>
  <tr>
    <td>VAT no. (Org.nr.):<? if (!$vat) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="vat" class="field" style="width: 220px" value="<? echo $vat; ?>"></td>
  </tr>
  <tr>
    <td>Type of business:</td>
    <td>

<select name="business" size="1" class="field" style="width: 220px">
<option>Please choose -&gt;</option>
<option value="Wholesaler" <?php if($_POST[business] == "Wholesaler"){ echo "selected";} ?>>Wholesaler</option>
<option value="Retail dealer"  <?php if($_POST[business] == "Retail dealer"){ echo "selected";} ?>>Retail dealer</option>
<option value="Other"  <?php if($_POST[business] == "Other"){ echo "selected";} ?>>Other</option>
</select>


<!-- oprindelig select
<select name="business" size="1" class="field" style="width: 220px">
<option value=" ">Please choose -&gt;</option>
<option value="Wholesaler">Wholesaler</option>
<option value="Retail dealer">Retail dealer</option>
<option value="Other">Other (note: we only sell B2B)</option>
</select>
-->

</td>
  </tr>
  <tr>
    <td>Contact person:<? if (!$person) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="person" class="field" style="width: 220px" value="<? echo $person; ?>"></td>
  </tr>
  <tr>
    <td>Address:<? if (!$address) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="address" class="field" style="width: 220px" value="<? echo $address; ?>"></td>
  </tr>
  <tr>
    <td>Postal code:<? if (!$postal) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="postal" class="field" style="width: 220px" value="<? echo $postal; ?>"></td>
  </tr>
  <tr>
    <td>City:<? if (!$city) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="city" class="field" style="width: 220px" value="<? echo $city; ?>"></td>
  </tr>
  <tr>
    <td>Country:<? if (!$country) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="country" value="Sweden" class="field" style="width: 220px" value="<? echo $country; ?>"></td>
  </tr>
  <tr>
    <td>Phone:<? if (!$phone) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="phone" class="field" style="width: 220px" value="<? echo $phone; ?>"></td>
  </tr>
  <tr>
    <td>Fax:</td>
    <td><input type="text" name="fax" class="field" style="width: 220px" value="<? echo $fax; ?>"></td>
  </tr>
  <tr>
    <td>E-mail:<? if (!$mail) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="mail" class="field" style="width: 220px" value="<? echo $mail; ?>"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="right"><input type="submit" name="submit" value="= Submit order =" class="button"></td>
  </tr>
</form>
  </table>
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:17 #19
Ups, ja og over dette er der selvfølgelig en del som sender formularen videre i en HTML mail, men det er knapt så vigtigt for det virker.

Det starter med:
if (
($company) &&
($vat) &&
($business) &&
($person) &&
($address) &&
($postal) &&
($city) &&
($country) &&
($phone) &&
($mail)
)
{
Avatar billede ahv Nybegynder
22. april 2003 - 17:23 #20
Yes... Hvad er det så du ønsker hjælp til?
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:26 #21
Øh, det har jeg vist forsøgt at beskrive et par gange nu,
men any way:

select boxen som vi har leget lidt med skal med ind i valideringen
således at man SKAL foretage et valg.

Det er ikke vigtigt hvad man vælger. Det skal bare være super simpelt
sådan at man skal vælge noget andet end "Please choose ->"
Avatar billede ahv Nybegynder
22. april 2003 - 17:29 #22
Det synes jeg at jeg har prøvet på med:

<select name="business" size="1" class="field" style="width: 220px">
<option>Please choose -&gt;</option>
<option value="Wholesaler" <?php if($_POST[business] == "Wholesaler"){ echo "selected";} ?>>Wholesaler</option>
<option value="Retail dealer"  <?php if($_POST[business] == "Retail dealer"){ echo "selected";} ?>>Retail dealer</option>
<option value="Other"  <?php if($_POST[business] == "Other"){ echo "selected";} ?>>Other</option>
</select>

Please choose skal bare ikke have noget value? Så skal man foretage et valg og du tjekker jo om det er sat med den:

if (
($company) &&
($vat) &&
($business) &&
($person) &&
($address) &&
($postal) &&
($city) &&
($country) &&
($phone) &&
($mail)
)
{

Derfor jeg bliver forvirret, ved ikke helt hvad det er du mener hvis ikke det er dette du søger.
Avatar billede dannyboy Nybegynder
22. april 2003 - 17:37 #23
Ok, men bær over med mig da jeg er ekstrem newbie.

Jeg mangler selve det med den røde stjerne i selecten
lige som der er i de andre inputs.
Avatar billede ahv Nybegynder
22. april 2003 - 17:39 #24
aah, ok:


Type of business:
<? if (!$business) { echo "<span class=\"red\">*</span>" ; } ?>
<select name="business" size="1" class="field" style="width: 220px">
<option>Please choose -&gt;</option>
<option value="Wholesaler" <?php if($_POST[business] == "Wholesaler"){ echo "selected";} ?>>Wholesaler</option>
<option value="Retail dealer"  <?php if($_POST[business] == "Retail dealer"){ echo "selected";} ?>>Retail dealer</option>
<option value="Other"  <?php if($_POST[business] == "Other"){ echo "selected";} ?>>Other</option>
</select>
Avatar billede dannyboy Nybegynder
22. april 2003 - 18:23 #25
Det er tæt på, men der er noget som ikke helt flasker sig.
Hvis man løber formularen igennem og prøver at submitte
allerede efter første input, så forsvinder stjernen fra selecten
som om at man har valgt noget der, selvom "Please choose->"
stadigvæk står der.
Avatar billede ahv Nybegynder
22. april 2003 - 18:58 #26
Type of business:
<? if (!$_POST['business']) { echo "<span class=\"red\">*</span>" ; } ?>
<select name="business" size="1" class="field" style="width: 220px">
<option>Please choose -&gt;</option>
<option value="Wholesaler" <?php if($_POST[business] == "Wholesaler"){ echo "selected";} ?>>Wholesaler</option>
<option value="Retail dealer"  <?php if($_POST[business] == "Retail dealer"){ echo "selected";} ?>>Retail dealer</option>
<option value="Other"  <?php if($_POST[business] == "Other"){ echo "selected";} ?>>Other</option>
</select>
Avatar billede dannyboy Nybegynder
22. april 2003 - 19:32 #27
Nope, der sker stadigvæk det at den røde stjerne forsvinder når man prøver at submitte, som om feltet er i orden.
Avatar billede ahv Nybegynder
22. april 2003 - 19:45 #28
<table border="0" cellspacing="0" cellpadding="3" align="center">
<form name="process" action="<? echo $PHP_SELF ; ?>" method="post">
 
  <tr>
    <td>Company:<? if (!$company) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="company" class="field" style="width: 220px" value="<? echo $company; ?>"></td>
  </tr>
  <tr>
    <td>VAT no. (Org.nr.):<? if (!$vat) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="vat" class="field" style="width: 220px" value="<? echo $vat; ?>"></td>
  </tr>
  <tr>
    <td>Type of business:</td>
    <td>

<? if (!$business) { echo "<span class=\"red\">*</span>" ; } ?>
<select name="business" size="1" class="field" style="width: 220px">
<option>Please choose -&gt;</option>
<option value="Wholesaler" <?php if($_POST[business] == "Wholesaler"){ echo "selected";} ?>>Wholesaler</option>
<option value="Retail dealer"  <?php if($_POST[business] == "Retail dealer"){ echo "selected";} ?>>Retail dealer</option>
<option value="Other"  <?php if($_POST[business] == "Other"){ echo "selected";} ?>>Other</option>
</select>

</td>
  </tr>
  <tr>
    <td>Contact person:<? if (!$person) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="person" class="field" style="width: 220px" value="<? echo $person; ?>"></td>
  </tr>
  <tr>
    <td>Address:<? if (!$address) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="address" class="field" style="width: 220px" value="<? echo $address; ?>"></td>
  </tr>
  <tr>
    <td>Postal code:<? if (!$postal) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="postal" class="field" style="width: 220px" value="<? echo $postal; ?>"></td>
  </tr>
  <tr>
    <td>City:<? if (!$city) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="city" class="field" style="width: 220px" value="<? echo $city; ?>"></td>
  </tr>
  <tr>
    <td>Country:<? if (!$country) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="country" value="Sweden" class="field" style="width: 220px" value="<? echo $country; ?>"></td>
  </tr>
  <tr>
    <td>Phone:<? if (!$phone) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="phone" class="field" style="width: 220px" value="<? echo $phone; ?>"></td>
  </tr>
  <tr>
    <td>Fax:</td>
    <td><input type="text" name="fax" class="field" style="width: 220px" value="<? echo $fax; ?>"></td>
  </tr>
  <tr>
    <td>E-mail:<? if (!$mail) { echo "<span class=\"red\">*</span>" ; } ?></td>
    <td><input type="text" name="mail" class="field" style="width: 220px" value="<? echo $mail; ?>"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="right"><input type="submit" name="submit" value="= Submit order =" class="button"></td>
  </tr>
</form>
  </table>
Avatar billede dannyboy Nybegynder
22. april 2003 - 22:56 #29
Det lader sig ikke gøre åbenbart.
Hvis jeg bare skriver 1 bogstav i første input felt og klikker
submit, så forsvinder den røde stjerne fra select boxen som
om den er udfyldt.
Avatar billede dannyboy Nybegynder
22. april 2003 - 23:13 #30
Jeg laver det med Javascript.
Tak for hjælpen.
Avatar billede ahv Nybegynder
22. april 2003 - 23:20 #31
dannyboy -> Har fundet en løsning, den vil åbenbart have en value, men den skal blot sættes til ingenting og ikke et mellemrum som du lavede i starten, så:

if(!$_POST['business']){ echo "<span class=\"red\">*</span>" ; } ?>
<select name="business" class="field" style="width: 220px">
<option value="">Please choose</option>
<option value="Wholesaler">Wholesaler</option>
<option value="Retail dealer">Retail dealer</option>
<option value="Other">Other</option>
</select>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester