function
Ik heb een functie gemaakt om een kleurnaam om te zetten naar een kleurcode. Het bestand waar deze functie instaat include ik dan in het bestand waar ik deze functie wil gebruiken. Ik roep de functie dan zo aan:
extract_color($linecolor);
en geef $linecolor daarna de waarde van $color die ik in de functie heb aangemaakt:
$linecolor = $color;
Het probleem is dat $color daar in 1 keer geen waarde meer heeft, terwijl dat binnen de functie nog wel zo was. Iemand enig idee wat dit probleem veroorzaakt en hoe het is op te lossen?
b.v.d
extract_color($linecolor);
en geef $linecolor daarna de waarde van $color die ik in de functie heb aangemaakt:
$linecolor = $color;
Het probleem is dat $color daar in 1 keer geen waarde meer heeft, terwijl dat binnen de functie nog wel zo was. Iemand enig idee wat dit probleem veroorzaakt en hoe het is op te lossen?
b.v.d
variabelen die binnen een functie worden gedeclareerd zijn alleen binnen die functie bruikbaar.
Je kan de variabele als global declareren, dan werkt het wel.
Edit:
Of je moet $color retourneren met return $color;
Je kan de variabele als global declareren, dan werkt het wel.
Edit:
Of je moet $color retourneren met return $color;
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
Ik heb nu binnen en buiten de functie return $color; geprobeerd maar ik kan de variabele niet gebruiken...
Code (php)
of
Code (php)
Het nut van deze functies ontgaat me, maar jij zal waarschijnlijk nog meer handelingen binnen je functie toepassen :)
Ik weet trouwens niet zeker of de eerste werkt -> werk eigenlijk nooit met global.
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
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
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
<?php
function extract_color($color){
$color = strtolower($color);
if($color=='black'){
$color='000000';
}elseif($color=='white'){
$color='FFFFFF';
}elseif($color=='grey'){
$color='A3A3A3';
}elseif($color=='blue'){
$color='273694';
}elseif($color=='red'){
$color='C00000';
}elseif($color=='yellow'){
$color='FBF800';
}elseif($color=='orange'){
$color='FD6B00';
}elseif($color=='purple'){
$color='7107BC';
}elseif($color=='pink'){
$color='FE00EF';
}elseif($color=='green'){
$color='1C7700';
}else{
$color=$color;
}
}
?>
function extract_color($color){
$color = strtolower($color);
if($color=='black'){
$color='000000';
}elseif($color=='white'){
$color='FFFFFF';
}elseif($color=='grey'){
$color='A3A3A3';
}elseif($color=='blue'){
$color='273694';
}elseif($color=='red'){
$color='C00000';
}elseif($color=='yellow'){
$color='FBF800';
}elseif($color=='orange'){
$color='FD6B00';
}elseif($color=='purple'){
$color='7107BC';
}elseif($color=='pink'){
$color='FE00EF';
}elseif($color=='green'){
$color='1C7700';
}else{
$color=$color;
}
}
?>
dit is de functie
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
32
33
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
33
<?php
function extract_color($color){
$color = strtolower($color);
if($color=='black'){
$color='000000';
}elseif($color=='white'){
$color='FFFFFF';
}elseif($color=='grey'){
$color='A3A3A3';
}elseif($color=='blue'){
$color='273694';
}elseif($color=='red'){
$color='C00000';
}elseif($color=='yellow'){
$color='FBF800';
}elseif($color=='orange'){
$color='FD6B00';
}elseif($color=='purple'){
$color='7107BC';
}elseif($color=='pink'){
$color='FE00EF';
}elseif($color=='green'){
$color='1C7700';
}else{
$color=$color;
}
return $color
}
// output zou moeten zijn: 000000
echo extract_color('black');
?>
function extract_color($color){
$color = strtolower($color);
if($color=='black'){
$color='000000';
}elseif($color=='white'){
$color='FFFFFF';
}elseif($color=='grey'){
$color='A3A3A3';
}elseif($color=='blue'){
$color='273694';
}elseif($color=='red'){
$color='C00000';
}elseif($color=='yellow'){
$color='FBF800';
}elseif($color=='orange'){
$color='FD6B00';
}elseif($color=='purple'){
$color='7107BC';
}elseif($color=='pink'){
$color='FE00EF';
}elseif($color=='green'){
$color='1C7700';
}else{
$color=$color;
}
return $color
}
// output zou moeten zijn: 000000
echo extract_color('black');
?>
edit:
Je zou overigens ook eens kunnen kijken naar switch, dat vervangt je elseif'jes op een elegantere manier (switch is gemaakt voor vele elseif'jes).
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
even kijken...
Gewijzigd op 01/01/1970 01:00:00 door Niek Berckmans
Tip: bij lange if/else stucturen is het ook handig eens naar switch() te kijken.
Ik heb nu $linecolor = extract_color($linecolor);
als ik nu $linecolor echo heeft $linecolor de goede waarde. Maar hoe kan ik $linecolor nu in de database zetten?
als ik nu $linecolor echo heeft $linecolor de goede waarde. Maar hoe kan ik $linecolor nu in de database zetten?
Omdat ik de kwaadste niet ben: een switchje :)
Er zijn overigens nog andere manieren met switch, maar deze is prima.
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
32
33
34
35
36
37
38
39
40
41
42
43
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
33
34
35
36
37
38
39
40
41
42
43
<?php
function extract_color($color){
switch(strtolower($color)) {
case 'black':
$color='000000';
break;
case 'white':
$color='FFFFFF';
break;
case 'grey':
$color='A3A3A3';
break;
case 'blue':
$color='273694';
break;
case 'red':
$color='C00000';
break;
case 'yellow':
$color='FBF800';
break;
case 'orange':
$color='FD6B00';
break;
case 'purple':
$color='7107BC';
break;
case 'pink':
$color='FE00EF';
break;
case 'green':
$color='1C7700';
break;
default:
$color=$color;
}
return $color
}
// output zou moeten zijn: 000000
echo extract_color('black');
?>
function extract_color($color){
switch(strtolower($color)) {
case 'black':
$color='000000';
break;
case 'white':
$color='FFFFFF';
break;
case 'grey':
$color='A3A3A3';
break;
case 'blue':
$color='273694';
break;
case 'red':
$color='C00000';
break;
case 'yellow':
$color='FBF800';
break;
case 'orange':
$color='FD6B00';
break;
case 'purple':
$color='7107BC';
break;
case 'pink':
$color='FE00EF';
break;
case 'green':
$color='1C7700';
break;
default:
$color=$color;
}
return $color
}
// output zou moeten zijn: 000000
echo extract_color('black');
?>
Er zijn overigens nog andere manieren met switch, maar deze is prima.
Ziet er netjes uit...bedankt!
Geen dank. Het opslaan van $line_color in de database is overigens weer iets heel anders.
Heb je al een database en tabel aangemaakt? Zo ja, hoe ziet de structuur eruit?
Heb je al een database en tabel aangemaakt? Zo ja, hoe ziet de structuur eruit?
Dit zijn de query's:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$query='
SELECT *
FROM conf_standard';
$result=mysql_query($query) or die (mysql_error());
if(mysql_num_rows($result)==0){
$query='
INSERT INTO conf_standard (divline, linecolor, linewidth, lineheight, link, linkcolor, linkstyle, hovercolor, hoverstyle, list, liststyle, listimg)
VALUES ("'.$divline.'", "'.$linecolor.'", "'.$linewidth.'", "'.$lineheight.'", "'.$link.'", "'.$linkcolor.'", "'.$linkstyle.'", "'.$linkcolor_over.'", "'.$linkstyle_over.'", "'.$list.'", "'.$liststyle.'", "'.$listimg.'");';
$result=mysql_query($query) or die (mysql_error());
}else{
$query='
UPDATE conf_standard
SET divline = "'.$divline.'", linecolor = "'.$linecolor.'", linewidth = "'.$linewidth.'", lineheight = "'.$lineheight.'", link = "'.$link.'", linkcolor = "'.$linkcolor.'", linkstyle = "'.$linkstyle.'", hovercolor = "'.$linkcolor_over.'", hoverstyle = "'.$linkstyle_over.'", list = "'.$list.'", liststyle = "'.$liststyle.'", listimg = "'.$listimg.'"
WHERE id=1';
$result=mysql_query($query) or die (mysql_error());
}
?>
$query='
SELECT *
FROM conf_standard';
$result=mysql_query($query) or die (mysql_error());
if(mysql_num_rows($result)==0){
$query='
INSERT INTO conf_standard (divline, linecolor, linewidth, lineheight, link, linkcolor, linkstyle, hovercolor, hoverstyle, list, liststyle, listimg)
VALUES ("'.$divline.'", "'.$linecolor.'", "'.$linewidth.'", "'.$lineheight.'", "'.$link.'", "'.$linkcolor.'", "'.$linkstyle.'", "'.$linkcolor_over.'", "'.$linkstyle_over.'", "'.$list.'", "'.$liststyle.'", "'.$listimg.'");';
$result=mysql_query($query) or die (mysql_error());
}else{
$query='
UPDATE conf_standard
SET divline = "'.$divline.'", linecolor = "'.$linecolor.'", linewidth = "'.$linewidth.'", lineheight = "'.$lineheight.'", link = "'.$link.'", linkcolor = "'.$linkcolor.'", linkstyle = "'.$linkstyle.'", hovercolor = "'.$linkcolor_over.'", hoverstyle = "'.$linkstyle_over.'", list = "'.$list.'", liststyle = "'.$liststyle.'", listimg = "'.$listimg.'"
WHERE id=1';
$result=mysql_query($query) or die (mysql_error());
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Niek Berckmans
Op het eerste gezicht vraag ik me af of het klopt:
Bovenstaande haalt alles op uit de tabel conf_standard.
Als je iets invoert in die tabel, wordt mysql_num_rows > 0. Gevolg is dat
nooit meer wordt aangeroepen, en er dus altijd geupdate wordt.
Maar als dat wel de bedoeling is (je wilt bv. maar één configuratie hebben), dan moet het zo te zien automatisch goedkomen als je die code plaatst nadat je $line_color een waarde hebt gegeven.
Bovenstaande haalt alles op uit de tabel conf_standard.
Als je iets invoert in die tabel, wordt mysql_num_rows > 0. Gevolg is dat
Code (php)
1
2
2
INSERT INTO conf_standard (divline, linecolor, linewidth, lineheight, link, linkcolor, linkstyle, hovercolor, hoverstyle, list, liststyle, listimg)
VALUES ("'.$divline.'", "'.$linecolor.'", "'.$linewidth.'", "'.$lineheight.'", "'.$link.'", "'.$linkcolor.'", "'.$linkstyle.'", "'.$linkcolor_over.'", "'.$linkstyle_over.'", "'.$list.'", "'.$liststyle.'", "'.$listimg.'");';
VALUES ("'.$divline.'", "'.$linecolor.'", "'.$linewidth.'", "'.$lineheight.'", "'.$link.'", "'.$linkcolor.'", "'.$linkstyle.'", "'.$linkcolor_over.'", "'.$linkstyle_over.'", "'.$list.'", "'.$liststyle.'", "'.$listimg.'");';
nooit meer wordt aangeroepen, en er dus altijd geupdate wordt.
Maar als dat wel de bedoeling is (je wilt bv. maar één configuratie hebben), dan moet het zo te zien automatisch goedkomen als je die code plaatst nadat je $line_color een waarde hebt gegeven.
Ik gebruik maar 1 configuratie en daarnaast lukt het met deze query niet om een kleur in de database in te voeren.
Als je, je query alleen geruikt om er vervolgens num_rows op los te laten kan je beter niet alles selecteren en ook beter het tel werk aan MySQL overlaten:
$query = "SELECT COUNT(1) FROM tabel WHERE kolom='".$waarde."';";
$query = "SELECT COUNT(1) FROM tabel WHERE kolom='".$waarde."';";
Dat wist ik niet...
Iemand echter nog een oplossing om de kleur in de database te krijgen?
Iemand echter nog een oplossing om de kleur in de database te krijgen?
Niek:
Dat wist ik niet...
Iemand echter nog een oplossing om de kleur in de database te krijgen?
Iemand echter nog een oplossing om de kleur in de database te krijgen?
Daarom vertel ik het ook...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query = "SELECT COUNT(1) FROM tabel WHERE kolom='".$waarde."';";
$result=mysql_query($query) or die (mysql_error());
if(mysql_result($result, 0) < 1){
// Insert
}else{
// Update
}
?>
$query = "SELECT COUNT(1) FROM tabel WHERE kolom='".$waarde."';";
$result=mysql_query($query) or die (mysql_error());
if(mysql_result($result, 0) < 1){
// Insert
}else{
// Update
}
?>
En dan even kijken of je een foutmelding krijgt, ik heb namelijk het vermoeden dat je enkele en dubbele quotes precies andersom moet gebruiken in je query's




