function

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niek Berckmans

Niek Berckmans

06/07/2006 14:39:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

24/11/2024 19:09:48
 
Winston Smith

Winston Smith

06/07/2006 14:41:00
Quote Anchor link
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;
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
 
Jelmer -

Jelmer -

06/07/2006 14:42:00
 
Niek Berckmans

Niek Berckmans

06/07/2006 14:50:00
Quote Anchor link
Ik heb nu binnen en buiten de functie return $color; geprobeerd maar ik kan de variabele niet gebruiken...
 
Winston Smith

Winston Smith

06/07/2006 14:56:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function extract_color($linecolor) {
    global $color;
    $color = $linecolor;
}


extract_color('blauw');
echo $color;
?>


of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
function extract_color($linecolor) {
    $color = $linecolor;
    return $color;
}


echo extract_color('rood');
?>


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
 
Niek Berckmans

Niek Berckmans

06/07/2006 14:58:00
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
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;
    }    
}


?>


dit is de functie
 
Winston Smith

Winston Smith

06/07/2006 15:03:00
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
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');
?>


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
 
Niek Berckmans

Niek Berckmans

06/07/2006 15:05:00
Quote Anchor link
even kijken...
Gewijzigd op 01/01/1970 01:00:00 door Niek Berckmans
 
Bo az

Bo az

06/07/2006 15:07:00
Quote Anchor link
Tip: bij lange if/else stucturen is het ook handig eens naar switch() te kijken.
 
Niek Berckmans

Niek Berckmans

06/07/2006 15:09:00
Quote Anchor link
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?
 
Winston Smith

Winston Smith

06/07/2006 15:09:00
Quote Anchor link
Omdat ik de kwaadste niet ben: een switchje :)

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
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');
?>


Er zijn overigens nog andere manieren met switch, maar deze is prima.
 
Niek Berckmans

Niek Berckmans

06/07/2006 15:10:00
Quote Anchor link
Ziet er netjes uit...bedankt!
 
Winston Smith

Winston Smith

06/07/2006 15:12:00
Quote Anchor link
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?
 
Niek Berckmans

Niek Berckmans

06/07/2006 15:13:00
Quote Anchor link
Dit zijn de query's:

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
<?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());
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door Niek Berckmans
 
Winston Smith

Winston Smith

06/07/2006 15:22:00
Quote Anchor link
Op het eerste gezicht vraag ik me af of het klopt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT *
        FROM conf_standard

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)
PHP script in nieuw venster Selecteer het PHP script
1
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.'");';

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.
 
Niek Berckmans

Niek Berckmans

06/07/2006 15:25:00
Quote Anchor link
Ik gebruik maar 1 configuratie en daarnaast lukt het met deze query niet om een kleur in de database in te voeren.
 
Bo az

Bo az

06/07/2006 15:30:00
Quote Anchor link
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."';";
 
Niek Berckmans

Niek Berckmans

06/07/2006 15:33:00
Quote Anchor link
Dat wist ik niet...

Iemand echter nog een oplossing om de kleur in de database te krijgen?
 
Bo az

Bo az

06/07/2006 15:40:00
Quote Anchor link
Niek:
Dat wist ik niet...

Iemand echter nog een oplossing om de kleur in de database te krijgen?


Daarom vertel ik het ook...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>


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
 



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.