<select>&<option> met for loop en database
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
Wat is de exacte structuur van de twee tabellen; gebruikers en kleuren?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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."'>';
}
?>
//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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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 "<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 -
Jordy - op 11/01/2012 21:00:35:
Zoiets bedoel je?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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 "<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"';
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"
selected="selected", or selected="yes", or selected="true"
ah check
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)
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
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
}
?>
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
}
?>
En de rest van de <option>, waar is dat gebleven dan?
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
naar dit
Dan moet ie het doen;-)
Gewijzigd op 11/01/2012 22:22:36 door Jordy -
Maar nee de values in het veld kleur is een cijfer 0,1,2,3 enz
Gewijzigd op 11/01/2012 22:27:44 door Jordy -
Code (php)
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
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
}
?>
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
}
?>