PHP Function variabelen returnen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 08:42:31
Quote Anchor link
hallo allemaal,

ik probeer de laatste tijd wat meer met functions te werken ivm het overzicht..
ik heb nu een functie die automatisch een pagina moet vullen met de informatie..
hij haalt op met een GET de nickname uit de url,
en aan de hand daarvan haalt hij alle gegevens uit de database.

Maar als ik alle velden die ik nodig heb uit de database, in variabelen zet
en vervolgens return, kan ik de variabelen niet aanroepen op de profiel.php pagina.

hier een voorbeeld van hoe ik 2 rijen return..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function get_info() {
include('db_connection.php');
    $nickname = $_GET['profiel'];
    $query = mysql_query("SELECT registratie_datum, leeftijd, geslacht from lid
                         where nickname = '$nickname'"
);
    $row = mysql_fetch_assoc($query);
    $registratie = $row['registratie_datum'];

return $registratie;
return $nickname
}
?>


en dan in profiel.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php include('db_functions.php');
get_info();
//even een test echo..
echo $nickname." is geregistreerd op ".$registratie;
?>


weet iemand hoe ik dit kan laten werken?
Gewijzigd op 15/06/2011 08:45:05 door Jason van der Zeeuw
 
PHP hulp

PHP hulp

29/03/2024 05:42:25
 
Johan van der Molen

Johan van der Molen

15/06/2011 08:47:31
Quote Anchor link
Toevoeging op 15/06/2011 08:51:19:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function get_info($key) {
    include('db_connection.php');
        $nickname = $_GET['profiel'];
        $query = mysql_query("SELECT registratie_datum, leeftijd, geslacht from lid
                             where nickname = '$nickname'"
);
        $row = mysql_fetch_assoc($query);
        $registratie = $row['registratie_datum'];
        $array['nickname'] = $nickname;
        $array['registratie_datum'] = $registratie;
    return $array[$key];
}

?>


Verder zou ik even controleren wat de $_GET bevat omdat je hem nu rechtstreeks in de query gooit. Niet echt veilig.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo get_info('nickname');
echo get_info('registratie_datum');
?>
Gewijzigd op 15/06/2011 08:57:24 door Johan van der Molen
 
Kees Schepers

kees Schepers

15/06/2011 08:57:41
Quote Anchor link
Misschien beetje zeikerig, niet verkeerde bedoeld! Maar je mag wel meerdere return statements gebruiken in een functie, echter kan er maar 1 tegelijk uitgevoerd worden.

Dit kan bijvoorbeeld dus wel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function test($var) {
    switch($var) {
        case
'test1' :
            return false;
        case
'test2' :
            return true;
        case
'test3' :
            return null;
    }
}

?>


Dit kan dus niet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function test($var) {
    return false;
    return true;
    return null;
}

?>
 
Johan van der Molen

Johan van der Molen

15/06/2011 09:00:47
Quote Anchor link
Kees Schepers op 15/06/2011 08:57:41:
Misschien beetje zeikerig, niet verkeerde bedoeld! Maar je mag wel meerdere return statements gebruiken in een functie, echter kan er maar 1 tegelijk uitgevoerd worden.


Ja ik had het iets verkeerd verwoord.
 
Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 09:48:45
Quote Anchor link
en hoe kan ik die variabelen nu weer ophalen?
ik snap dat je de velden in een array zet en die returnt..
ik snap niet precies hoe ik het moet doen...
ik heb nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
getinfo($key);
echo$array['nickname'];
?>
 
Johan van der Molen

Johan van der Molen

15/06/2011 09:53:25
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo get_info('nickname');
echo get_info('registratie_datum');
?>


Zo dus.
 
Arjan -

Arjan -

15/06/2011 09:56:44
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
34
<?php
include('db_connection.php');

function
get_info($nickname = '') {

    if(!empty($nickname) AND trim($nickname) != '') {
    
        $query = mysql_query("SELECT nickname, registratie_datum, leeftijd, geslacht from lid
                             where nickname = '"
.mysql_real_escape_string($nickname)."' LIMIT 1");

        if($query) {
            
            if(mysql_num_rows($query) > 0) {
                
                $row = mysql_fetch_assoc($query);

                return $row;
                
            }

            return false;
        }

        return false;
        
    }

    return false;

}


$return_waarde = get_info($_GET['profiel']);

if($return_waarde) {
    echo $return_waarde['nickname'];
}

?>


De variabele $return_waarde krijgt in dit geval, wanneer een record wordt gevonden met de waarde van $key, de array van $row mee. In het geval dat er geen record wordt gevonden zal $return_waarde de waarde "false" krijgen.
Gewijzigd op 15/06/2011 10:12:18 door Arjan -
 
Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 09:58:49
Quote Anchor link
@ Arjan,

ik heb het al werkend op de manier van johan,
maar ik zal ook een aantal dingen uit jouw voorbeeld gebruiken :)

bedankt voor jullie hulp!
Gewijzigd op 15/06/2011 10:01:01 door Jason van der Zeeuw
 
Arjan -

Arjan -

15/06/2011 10:00:26
Quote Anchor link
Ik heb het nog even aangepast, want de werking was niet helemaal juist.

Je geeft de $_GET variabele mee aan je functie. Deze moet je niet in de functie zelf gaan gebruiken. Kijk maar of je het begrijpt.

En de database connectie niet in je functie zetten, aangezien een functie bedoeld is om meerdere keren aangesproken te worden. Dus dan maakt ie ook verschillende connecties aan.

De manier van Johan is helemaal fout. Als je die gebruikt zal hij voor elk veld waarvan je de waarde wilt hebben een nieuwe query uitvoeren. Zeer inefficiënt en omslachtig. Dus met mijn code voer je één keer get_info() uit en kan je daarna met de array van $return_waarde de verschillende waarde van de velden binnen je SELECT gebruiken.
Gewijzigd op 15/06/2011 10:02:52 door Arjan -
 
Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 10:02:51
Quote Anchor link
Oow, op die manier had ik het niet bekeken! bedankt!

ik ga eens even goed kijken naar jou functie!
Gewijzigd op 15/06/2011 10:04:18 door Jason van der Zeeuw
 
Arjan -

Arjan -

15/06/2011 10:04:53
Quote Anchor link
Nee niet die van Johan gebruiken! Dan begrijp je het idee nog niet!

Wanneer je het volgende hebt in mijn code:

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
<?php

$return
= get_info('piet');

if($return) {

echo $return['nickname'];
echo $return['registratie_datum'];

}
else {

echo 'Geen informatie bij de betreffende gebruiker gevonden!';

}

?>


Dan hoef je dus maar één keer de functie aan te spreken (dus ook maar één keer de query uit te voeren), en kan je daarna middels bovenstaand voorbeeld alle waarden uit je SELECT gebruiken!

Dus maar één keer de functie uitvoeren!!!!

En ook de mysql_real_escape_string() niet vergeten in de query. Dit voorkomt mysql injecties!
Gewijzigd op 15/06/2011 10:12:31 door Arjan -
 
Johan van der Molen

Johan van der Molen

15/06/2011 10:04:55
Quote Anchor link
Jason van der Zeeuw op 15/06/2011 10:02:51:
Ik wil ook meerdere waardes returnen, dus daarvoor gebruik ik dan het gedeelte van Johan.

bedankt voor de tips ;)!


Ik zou toch even het advies volgen van arjan.
Die van mij werkt wel maar is niet de way to go inderdaad.
Maar ik wou je even snel een voorbeeld geven hoe je meerdere waarden kunt returnen doormiddel van een array.

Die van arjan is precies wat je zoekt plus beetje controlle op je $_GET en checken op results.
Gewijzigd op 15/06/2011 10:07:58 door Johan van der Molen
 
Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 10:09:37
Quote Anchor link
Ik reageerde te snel, ik snapte de functie niet helemaal..
maar waarom is het:

function get_info($nickname = '')

want dan moet ik een variabele meegeven (in dit geval de nickname) maar dan is de nickname toch automatisch leeg?
en dan kom je hier toch niet langs?

if(!empty($nickname) AND trim($nickname) != '') {
 
Johan van der Molen

Johan van der Molen

15/06/2011 10:11:24
Quote Anchor link
In jouw geval:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$return = getinfo($_GET['profiel']);


Hij heeft dat er neer gezet om te voorkomen dat jij foutmeldingen krijgt op het moment dat jij dit aanroept:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$return = getinfo();


Wat geen result op gaat leveren.
Gewijzigd op 15/06/2011 10:12:48 door Johan van der Molen
 
Arjan -

Arjan -

15/06/2011 10:11:51
Quote Anchor link
Ik begreep dat in je $_GET['profiel'] de nickname van de betreffende persoon zit toch?

Dan geef je dus met get_info($_GET['profiel']); deze waarde mee aan de functie, die vervolgens onder de naam $nickname op te vragen is binnen de functie.

Ik neem altijd als uitgangspunt dat je binnen functies geen $_POST en $_GET variabelen moet gebruiken. Deze geef je altijd buiten je functie mee aan de betreffende functie.
Gewijzigd op 15/06/2011 10:14:27 door Arjan -
 
Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 10:14:22
Quote Anchor link
maar moet de functie dan niet zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
function get_info($nickname)

??
 
Arjan -

Arjan -

15/06/2011 10:16:44
Quote Anchor link
Nee, die get_info($nickname = '') betekent dat wanneer $nickname niet bestaat $nickname een lege string bevat.

Stel, je doet dit:

get_info(); // dus geen variabele meegeven

Dan zal in het geval van:

function get_info($nickname) {

een foutmelding weergegeven worden. Immers bestaat de variabele $nickname niet.

in het geval van:

function get_info($nickname = '') {

zal $nickname een lege string bevatten, wat geen foutmelding oplevert. Je functie zal in dit geval false teruggeven, aangezien ie niet door de if voorwaarde komt.
Gewijzigd op 15/06/2011 10:19:10 door Arjan -
 
Johan van der Molen

Johan van der Molen

15/06/2011 10:19:02
Quote Anchor link
Ik denk dat hij het principe van het aanroepen van functies met variabelen niet echt snapt.

Zou me daar eerst even in verdiepen als ik jou was.
Gewijzigd op 15/06/2011 10:21:19 door Johan van der Molen
 
Jason  van der Zeeuw

Jason van der Zeeuw

15/06/2011 10:19:35
Quote Anchor link
oke! dat is duidelijk :)

en dit:

echo $return['nickname'];
echo $return['registratie_datum'];

is eigenlijk: echo $row['nickname']; zegmaar?
dus ik kan elke rij die in de query staat hiermee returnen :)?

super dit! ik snap het! bedankt!

Toevoeging op 15/06/2011 10:21:59:

@Johan

dat snap ik wel.. maar bijv: function get_info($var)
als je dan de functie aanroept met: get_info("hallo")
dan vult hij overal hallo in op de plaats van $var..
maar ik had het nog niet eerder gezien met bijv: $nickname = ''
deze wordt dus geheel verplaatst door mijn ingevoerde waarde.

het is duidelijk :)
 
Arjan -

Arjan -

15/06/2011 10:25:25
Quote Anchor link
Quote:
is eigenlijk: echo $row['nickname']; zegmaar?


Dat klopt. Het voordeel is nu dat je de functie meerdere keren kan gebruiken (let wel: alleen gebruiken voor het opvragen van de gegevens van verschillende personen, anders is het omslachtig).

Quote:
deze wordt dus geheel verplaatst door mijn ingevoerde waarde.


Alleen in het geval wanneer de waarde $nickname een waarde bevat.

Dus:

$return = get_info(); // In dit geval bevat $nickname geen waarde en zal dus een lege string bevatten

$return = get_info('piet'); // In dit geval bevat $nickname gewoon de waarde 'piet'
Gewijzigd op 15/06/2011 10:26:07 door Arjan -
 
Johan van der Molen

Johan van der Molen

15/06/2011 10:25:31
Quote Anchor link
Jason van der Zeeuw op 15/06/2011 10:19:35:
@Johan

dat snap ik wel.. maar bijv: function get_info($var)
als je dan de functie aanroept met: get_info("hallo")
dan vult hij overal hallo in op de plaats van $var..
maar ik had het nog niet eerder gezien met bijv: $nickname = ''
deze wordt dus geheel verplaatst door mijn ingevoerde waarde.

het is duidelijk :)


Ja klopt. De variable $var wordt dan gevuld met hallo in dat geval!

Succes ermee!
 

Pagina: 1 2 volgende »



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.