Gå til innhold

Function som returnerer en variabel


Anbefalte innlegg

Hei.

 

Jeg trenger litt hjelp, prøve meg på en funksjon som skal returnere en variabel men får det ikke helt til, kan noen hjelpe meg evt se hva som er feil eller om det overhode er mulig å gjøre det.

 

function getUserName($brukernavn, $database) {
$sql = mysql_query("SELECT * FROM $database WHERE brukernavn = '$brukernavn'") or die(mysql_error());
while ($row = mysql_fetch_row($sql)) {
	$brukernavn = $row[1];
}
}

 

Jeg vil gjerne at denne skal lage en variabel for meg slik at jeg kan bruke variabelen $brukernavn men det ser dårlig ut når jeg gjør det slik. Prøvde med (echo $brukernavn;) på en side der jeg hadde inkludert function fila men kom bare fram til en blank side.

Lenke til kommentar
Videoannonse
Annonse

Får det forsatt ikke til.. problemet er jo at variabelen ikke blir satt i neste side?

 

Function.php

function getUserName($brukernavn, $database) {
$sql = mysql_query("SELECT * FROM $database WHERE brukernavn = '$brukernavn'") or die(mysql_error());
while ($row = mysql_fetch_row($sql)) {
	$brukernavn = $row[1];
	return $brukernavn;
}
}

 

echo.php

 include("mysql/dbcon.php");
include("function/functions.php");

getusername(xatic, brukere);
echo $brukernavn;

 

Hva gjør jeg feil? oO

Lenke til kommentar

$brukernavn variabelen lever bare inne i funksjonen. Utenfor funksjonen, er den ukjent.

 

Dette bør fungere:

echo.php:

include("mysql/dbcon.php");
include("function/functions.php");

$brukernavn = getusername ("exatic", "brukere")
echo $brukernavn;

Husk å ha " rundt strenger.

 

Også er det kanskje litt misvisende å bruke $databasen. I sql spørringen, så henter du fra tabellen $database

Lenke til kommentar
$brukernavn variabelen lever bare inne i funksjonen. Utenfor funksjonen, er den ukjent.

 

Dette bør fungere:

echo.php:

include("mysql/dbcon.php");
include("function/functions.php");

$brukernavn = getusername ("exatic", "brukere")
echo $brukernavn;

Husk å ha " rundt strenger.

 

Også er det kanskje litt misvisende å bruke $databasen. I sql spørringen, så henter du fra tabellen $database

 

Ja, dette fungerte fint. Men, er det mulig å hente ut flere variabler fra samme funksjon? F.eks hvis funksjonen ser slik ut,

 

function getUserName($brukernavn, $database) {
$sql = mysql_query("SELECT * FROM $database WHERE brukernavn = '$brukernavn'") or die(mysql_error());
while ($row = mysql_fetch_row($sql)) {
	$id = $row[0];
	$brukernavn = $row[1];
	$nick = $row[2];
}
}

Endret av xatic
Lenke til kommentar

Hvis du skal returnere flere verdier så kan det være greit å returnere en array, hvis spørringen under skulle returnere flere enn en rad, vil kun den siste raden bli returnet av funksjonen.

 

function getUserName($brukernavn, $database) {
$sql = mysql_query("SELECT * FROM {$database} WHERE brukernavn = '{$brukernavn}'") or die(mysql_error());
while ($row = mysql_fetch_row($sql)) {
	$ret_arr['id'] = $row[0];
	$ret_arr['brukernavn'] = $row[1];
	$ret_arr['nick'] = $row[2];
}
 return $ret_arr;
}

$user=getUserName('test','test2');
echo "Id: ".$user['id']."<br />Brukernavn: ".$user['brukernavn']."<br />Nick: ".$user['nick'];

 

Og det er ikke nødvendig bruke en fetch i en løkke hvis spørringen kun returnerer en rad. Da kan du like godt gjøre det slik

 

function getUserName($brukernavn, $database) {
$row = mysql_fetch_row(mysql_query("SELECT * FROM {$database} WHERE brukernavn = '{$brukernavn}'")) or die(mysql_error());
 return $row;
}
$user=getUserName('test','test2');
echo "Id: ".$user[0]."<br />Brukernavn: ".$user[1]."<br />Nick: ".$user[2];

 

 

Litt mer avansert(?) er å bruke References (Passing by Reference)

 

function getUserName($brukernavn, $database, &$xid, &$xbruker, &$xnick) {
 $row = mysql_fetch_row(mysql_query("SELECT * FROM {$database} WHERE brukernavn = '{$brukernavn}'")) or die(mysql_error());
 $xid = $row[0];
 $xbruker = $row[1];
 $xnick = $row[2];
}

// er ikke helt sikker på om det er nødvendig å deklarere variablene på forhånd
// fikk ingen feilmeldinger når jeg kommenterte dem ut
$id=0;
$bruker='';
$nick='';

getUserName('db','test',$id,$bruker,$nick);

echo "Id: ".$id."<br />Brukernavn: ".$bruker."<br />Nick: ".$nick;

 

--

 

For å pirke litt, hvis du skal være helt sikker så bør du legge variabler inn i {} når du bruker den i en streng, slik at php er 100% sikker på hvor variabelen start og stopper. Eller konkatinere den inn, f.eks

"SELECT * FROM ".$database." WHERE brukernavn = '".$brukernavn."'"

Endret av Crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...