<select>&<option> met for loop en database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

11/01/2012 20:31:37
Quote Anchor link
Hallo medeleden,

Ik zit met een vraag cq probleem.
Ik heb in een database bij leden een tabel kleur.
Hier in staat de kleur van de naam van de gebruiker.
De gebruiker kan deze kleur wijzigen door middel van de <select> attribute

Nu is het zo dat als de pagina zich refresht dat er dan elke keer weer op de juiste kleur gedrukt dient te worden.

Nu wilde ik het zo doen dat het met een for loop uit de database leden wordt gehaald en dan kijken welke kleur ze hebben en dan de <option> attribute op selected laten staan.

maar ik zou niet weten hoe te beginnen met een for loop.
Kan iemand mij op weg helpen hiermee met een voorbeeld.

Alvast bedankt
 
PHP hulp

PHP hulp

22/12/2024 18:37:03
 
B a s
Beheerder

B a s

11/01/2012 20:35:24
Quote Anchor link
Wat is de exacte structuur van de twee tabellen; gebruikers en kleuren?
 
Thomas de vries

thomas de vries

11/01/2012 20:56:11
Quote Anchor link
het is eigenlijk geen 2 tabbellen maar 1 volgens mij legde ik het idd niet goed uit.
Mijn fout
de structuur is als volgt.
de tabel login heeft deze velden(Nu weet ik weer hoe het heet).
id,naam,kleur
1,test,1

Kleur 1 = bijvoorbeeld zwart.
Ik weet dat ik ook in de richting dien te kijken met een array
bijvoorbeeld zo
$arr = array('Selecteer kleur','Zwart','Rood');

de sql gegevens ophalen dat is ook geen probleem.
ik zal hieronder schetsen aan de hand voor een voorbeeld code wat ik bedoel
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
<?php
//Gegevens uit de DB halen
$sql = "SELECT naam,kleur FROM login WHERE naam = '".$mysqli->real_escape_string($_SESSION['naam'])."'";
if(!$res = $mysqli->query($sql))
{

    $dbFout = "Er is een fout geconstateerd.<br />Probeer het later nogmaals. De beheerder is op de hoogte gesteld van de fout";
    $mailFout = "Er is een fout in script test.php op regel 5<br />".$mysqli>error."<br />";    
}

else
{
    //Gegevens fetchen.
        $row = $res->fetch_assoc();

    $arr = array('Selecteer een kleur','Zwart','Rood','Blauw');
        //Hier onder de for loop kijken welke getal uit het veld kleur overeen komt met de array code dus 1 zal dan zwart geven.
        echo '<select ="kleur"><option value="zwart" select='".$selected."'>';
    
}

?>


Ik weet niet of het zo een wat duidelijkere omschijving schetst.
Gewijzigd op 11/01/2012 20:56:30 door thomas de vries
 
Jordy -

Jordy -

11/01/2012 21:00:35
Quote Anchor link
Zoiets bedoel je?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
echo "<form><select>";//begin standaard het formulier
foreach($arr as $key=>$value){//doorloop array met alle kleuren
    echo "<option value="'.$value'" ";//geef optie-veld met kleur weer
    if ($row['kleur']==$value){//als speler deze kleur heeft aangegeven, deze standaard selecteren
        echo "selected";
    }

  echo ">";
}

echo "</select></form>";//eindig formulier
?>
Gewijzigd op 11/01/2012 21:05:48 door Jordy -
 
Arend b

arend b

11/01/2012 21:08:57
Quote Anchor link
Jordy - op 11/01/2012 21:00:35:
Zoiets bedoel je?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
echo "<form><select>";//begin standaard het formulier
foreach($arr as $key=>$value){//doorloop array met alle kleuren
    echo "<option value="'.$value'" ";//geef optie-veld met kleur weer
    if ($row['kleur']==$value){//als speler deze kleur heeft aangegeven, deze standaard selecteren
        echo "selected";
    }

  echo ">";
}

echo "</select></form>";//eindig formulier
?>


echo "selected"; dit moet volgens mij moet dit zijn:

echo 'selected="selected"';
 
Jordy -

Jordy -

11/01/2012 21:14:29
Quote Anchor link
Dat hangt van je DOCTYPE af.

Quote:
in HTML doctypes it's ok to set boolean attributes without values [selected], in XHTML doctypes it is not [..] there you have got to use:

selected="selected", or selected="yes", or selected="true"
 
Arend b

arend b

11/01/2012 21:26:39
Quote Anchor link
ah check
 
Thomas de vries

thomas de vries

11/01/2012 21:58:27
Quote Anchor link
Ik heb nu dit maar er komt geen kleuren in de select box te staan.
wel als ik boven de echo "<option value='".$value."' ";//geef optie-veld met kleur weer
echo $value doe. dan krijg ik het wel maar niet met de selected.
dit is wat ik tot nu toe heb
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
<?php
session_start();
include ("../includes/config.php");

//Gegevens uit de DB halen
$sql = "SELECT naam,kleurcode FROM login WHERE naam = '".$mysqli->real_escape_string($_SESSION['naam'])."'";
if(!$res = $mysqli->query($sql))
{

    $dbFout = "Er is een fout geconstateerd.<br />Probeer het later nogmaals. De beheerder is op de hoogte gesteld van de fout";
    //$mailFout = "Er is een fout in script test.php op regel 5<br />'".$mysqli>error;."'<br />";    
}
else
{
    //Gegevens fetchen.
    $arr = array('test','Zwart','Rood','Blauw');
    echo "<form><select>";//begin standaard het formulier
    foreach($arr as $key=>$value)//doorloop array met alle kleuren
    {
        $row = $res->fetch_assoc();
        echo "<option value='".$value."' ";//geef optie-veld met kleur weer
        if ($row['kleurcode'] == $value)
        {
//als speler deze kleur heeft aangegeven, deze standaard selecteren
            echo 'selected="selected"';
        }

          echo ">";
    }

    echo "</select></form>";//eindig formulier
    
}

?>
 
Noppes Homeland

Noppes Homeland

11/01/2012 22:02:23
Quote Anchor link
En de rest van de <option>, waar is dat gebleven dan?
 
Jordy -

Jordy -

11/01/2012 22:10:49
Quote Anchor link
Dus in je database heb je bij een gebruiker bv Rood of Zwart in een tabel staan? Hoofdlettergevoelig, gebruik anders strtolower().

En $row = $res->fetch_assoc(); mag buiten de for-loop, direct boven het invullen van je array.

Toevoeging op 11/01/2012 22:14:52:

Verander even deze regel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 echo ">";
?>

naar dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 echo ">".$value."</option>";
?>


Dan moet ie het doen;-)
Gewijzigd op 11/01/2012 22:22:36 door Jordy -
 
Thomas de vries

thomas de vries

11/01/2012 22:26:03
Quote Anchor link
Bedankt voor de rest Jordy zag het echt niet keek er dus overeen.
Maar nee de values in het veld kleur is een cijfer 0,1,2,3 enz
 
Jordy -

Jordy -

11/01/2012 22:27:34
Quote Anchor link
Ja, ik moet je zeggen dat ik het verkeerd had neergezet. Even niet bij nagedacht:P De values worden inderdaad doorgegeven naar de server, en binnen de tags <option></option> moet je de $value zetten;-)
Gewijzigd op 11/01/2012 22:27:44 door Jordy -
 
- SanThe -

- SanThe -

12/01/2012 00:05:13
Quote Anchor link
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
<?php
session_start();
include ("../includes/config.php");

//Gegevens uit de DB halen
$sql = "SELECT naam,kleurcode FROM login WHERE naam = '".$mysqli->real_escape_string($_SESSION['naam'])."'";
if(!$res = $mysqli->query($sql))
{

    $dbFout = "Er is een fout geconstateerd.<br />Probeer het later nogmaals. De beheerder is op de hoogte gesteld van de fout";
    //$mailFout = "Er is een fout in script test.php op regel 5<br />'".$mysqli>error;."'<br />";    
}
else
{
    //Gegevens fetchen.
    $row = $res->fetch_assoc();
    $arr = array(0 => 'Kies een kleur','Zwart','Rood','Blauw');
    echo '<form><select name="kleur">';    //begin standaard het formulier
    foreach($arr as $key=>$value)    //doorloop array met alle kleuren
    {
        $selected = ($row['kleurcode'] == $key) ? ' selected="selected"' : '';
        echo '<option value="' . $key. '"' . $selected . '>' . $value . '</option>'; //geef optie-veld met kleur weer
    }
    echo '</select></form>';    //eindig formulier
}
?>
 



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.