Hoe een leeg vakje in selectielijst?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Inge V

Inge V

06/06/2012 11:33:14
Quote Anchor link
Hoi,
Ik heb op een pagina een selectielijst waar de gegevens uit een database worden gehaald. Nu wil ik graag met een leeg vakje beginnen in de lijst en wanneer je op het pijltje klikt van de lijst dat je dan pas de keuzes ziet. Hoe kan ik dit doen?

Mijn script is nu zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
if (empty($_POST))
{

$query2 = mysql_query('SELECT klas, klasid FROM klassen') or die(mysql_error());
    
?>


 <form action="" method="post">
    <table>
        <tr>
            <td>Klas:</td>
            <td><select name="klas">
            <?php

    while (list($klas, $klasid) = mysql_fetch_row($query2))
    {

        echo ("<option value='$klasid'>$klas</option>");
    }


?>

            </select></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="start" name="start"/></td>
        </tr>
    </table>
</form>
Gewijzigd op 06/06/2012 11:36:16 door Inge V
 
PHP hulp

PHP hulp

28/12/2024 13:51:55
 
Bas IJzelendoorn

Bas IJzelendoorn

06/06/2012 11:39:41
Quote Anchor link
Door een lege option mee te geven, zie regel 2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<select name="klas">
<option selected="selected" value="">-- maak een keuze --</option>
            <?php

    while (list($klas, $klasid) = mysql_fetch_row($query2))
    {

        echo ("<option value='$klasid'>$klas</option>");
    }


?>

            </select>
 
TJVB tvb

TJVB tvb

06/06/2012 11:40:41
Quote Anchor link
Bedoel je gewoon een lege optie bovenaan?
Dus <option value=""></option> boven je php code?

Het is trouwens netter om je variabele buiten quotes te halen en je php boven je html te zetten.

Het totaal wordt dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
if (empty($_POST))
{

$optionsList = '';
$klasQuery = mysql_query('SELECT klas, klasid FROM klassen');
if($klasQuery)
{

    while ($result = mysql_fetch_assoc($klasQuery))
    {

        $optionsList .= '<option value="' . $result['klasid'] . '">' . $result['klas'] . '</option>' . PHP_EOL;
    }
}

else
{
    //doe je foutafhandeling van je query
}    
?>

<form action="" method="post">
    <table>
        <tr>
            <td>Klas:</td>
            <td><select name="klas">
                <option value="" > </option>
            <?php echo $optionsList; ?>
            </select></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="start" name="start"/></td>
        </tr>
    </table>
</form>
Gewijzigd op 06/06/2012 11:41:38 door TJVB tvb
 
Joakim Broden

Joakim Broden

06/06/2012 11:45:07
Quote Anchor link
Zet je code even in tussen de [-code] en [-/code] tags (- weg laten).

Belangrijke tips
1) Maak gebruik van een goede SQL fout afhandeling (Linkje).
2) Kijken of een formulier is verstuurd doe je niet door empty $_POST (if (empty($_POST)) { word dus if ($_SERVER['REQUEST_METHOD'] != 'post') {).
3) Bij de echo hoef je geen () te gebruiken. (echo ("test"); word dus echo 'test';).
4) Variabelen buiten quotes houden (echo "<option value='$klasid'>$klas</option>" ; word dus echo '<option value="'.$klasid.'">'.$klas.'</option>';).
5) Formulieren horen niet in tabellen.

Antwoord op je vraag
Voor je while lijst een lege <option> toevoegen.. dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
echo '<option></option>';

while () {
    echo '<option>Volgende opties</option>';
}


Succes, en lees mijn tips even door en verbeter ze. Zo word je code beter en loop je later tegen minder problemen aan.
Gewijzigd op 06/06/2012 11:45:34 door Joakim Broden
 
Inge V

Inge V

06/06/2012 12:04:47
Quote Anchor link
Dankjewel allemaal, het heeft goed geholpen^^
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.