/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Navn på variabel
Fra : D. Johnson


Dato : 15-07-04 17:20

Hej,

Er det muligt at finde navnet på en varabel der bliver sendt med i et
funktionskald.

Dvs.

function myfunc($var1, $var2)
{
// i dette eksempel vil jeg have fat i "text" og "name"
}

myfunc ($text,$name);

Kan det lade sig gøre, er det noget med $$ ?

--
D. Johnson

 
 
Jacob Atzen (15-07-2004)
Kommentar
Fra : Jacob Atzen


Dato : 15-07-04 17:45

"D. Johnson" <notme@blah.invalid> writes:

> Er det muligt at finde navnet på en varabel der bliver sendt med i et
> funktionskald.

Nej.

> Kan det lade sig gøre, er det noget med $$ ?

$$ bruges når du har navnet på en variabel liggende i en variabel -
eksempel:

$foo = "bar";
$bar = "baz";
print $$foo; // Skriver $baz

Umiddelbart lyder det som om du er på vej ud af en meget underlig
vej. Hvis du fortæller, hvad du skal bruge det til kan det være vi kan
give en smartere måde at gøre det på.

--
Med venlig hilsen
- Jacob Atzen

D. Johnson (15-07-2004)
Kommentar
Fra : D. Johnson


Dato : 15-07-04 18:09

Jacob Atzen <87oemhcj8l.fsf@morpheus.aub.dk>:

>> Er det muligt at finde navnet på en varabel der bliver sendt med i et
>> funktionskald.
>
> Nej.

[ cut $$ forklaring ]

> Umiddelbart lyder det som om du er på vej ud af en meget underlig
> vej. Hvis du fortæller, hvad du skal bruge det til kan det være vi kan
> give en smartere måde at gøre det på.

Ja, det er lidt noget underligt noget at lave

Jeg tænkte på at lave en update funktion i forbindelse
med at opdatere en enkelt row i en mysql tabel.
Den skulle kunne tage n antal felter der skal opdateres
Noget ala

function updatemysqlrow($et_array_af_vars,rowid,$tablename)
{
//VARNAME=VARHOLD vil så blive gentaget n antal gange alt efter hvor
//stort arrayet er
// UPDATE $tablename set VARNAME=VARINDHOLD,.... WHERE id=rowid

}

$name = 'hans';
$phone = '454545';

$arr[] = $name;
$arr[] = $phone;
updatemysqlrow($arr,21,'person');
$zip = 2600;
$arr[] = $zip;
updatemysqlrow($arr,21,'person');


Det var mest for eksperimentes skyld, det kunne være sjovt hvis man
kunne.

--
D. Johnson

Jacob Atzen (15-07-2004)
Kommentar
Fra : Jacob Atzen


Dato : 15-07-04 19:10

"D. Johnson" <notme@blah.invalid> writes:

> Jeg tænkte på at lave en update funktion i forbindelse
> med at opdatere en enkelt row i en mysql tabel.
> Den skulle kunne tage n antal felter der skal opdateres
> Noget ala

Hvis du benytter et associativt array er det meget nemmere:

$arr = array('name' => 'hans',
'phone' => '1234');

update($arr);

function update($arr) {
foreach($arr as $key => $value) {
print "$key => $value\n";
}
}

Dette lille program udskriver:

name => hans
phone => 1234

--
Med venlig hilsen
- Jacob Atzen

D. Johnson (15-07-2004)
Kommentar
Fra : D. Johnson


Dato : 15-07-04 20:28

Jacob Atzen <87llhlta4n.fsf@morpheus.aub.dk>:

> Hvis du benytter et associativt array er det meget nemmere:
[ cut kode ]

Ja tak, det er det helt bestemt.


--
D. Johnson

Per Thomsen (15-07-2004)
Kommentar
Fra : Per Thomsen


Dato : 15-07-04 22:22

D. Johnson wrote:
> Jacob Atzen <87oemhcj8l.fsf@morpheus.aub.dk>:
[klip]
>
> Jeg tænkte på at lave en update funktion i forbindelse
> med at opdatere en enkelt row i en mysql tabel.
> Den skulle kunne tage n antal felter der skal opdateres
> Noget ala
>
> function updatemysqlrow($et_array_af_vars,rowid,$tablename)
> {
> //VARNAME=VARHOLD vil så blive gentaget n antal gange alt efter hvor
> //stort arrayet er
> // UPDATE $tablename set VARNAME=VARINDHOLD,.... WHERE id=rowid
>
> }
>
> $name = 'hans';
> $phone = '454545';
>
> $arr[] = $name;
> $arr[] = $phone;
> updatemysqlrow($arr,21,'person');
> $zip = 2600;
> $arr[] = $zip;
> updatemysqlrow($arr,21,'person');
>
>
> Det var mest for eksperimentes skyld, det kunne være sjovt hvis man
> kunne.
>

Hvis det hovedsageligt er for eksperimentets skyld og dermed for at lære
noget, så synes jeg da endelig du skal fortsætte :)
Men med den funktion du beskriver vil jeg ikke undlade at drage din
opmærksomhed på PEAR's DB klasse.
Der findes den funktion du beskriver nemlig allerede:

<?php
require_once('DB.php');

$DB =& DB::connect('mysql://bruger:kodeord@host/database');
if( DB::isError($DB) )
{
   trigger_error( $DB->getMessage(), E_USER_ERROR);
}

$arr = array('name' => 'hans', 'phone' => 454545, 'zip'=>'2600');

$res =& $DB->autoExecute('person', $arr, DB_AUTOQUERY_UPDATE, 'id=21');

if( DB::isError($res) ) {
   trigger_error( $res->getMessage(), E_USER_ERROR);
}
echo 'Opdatering er sket';
?>

For at 'require_once' i ovenstående skal virke, skal du have installeret
PEAR og PEAR mappen skal være i din include_path.

Du kan læse mere om PEAR generelt på:

<http://pear.php.net/>

og specifikt om DB klassen på:

<http://pear.php.net/manual/en/package.database.php>

og specielt om autoExecute (som kan det du efterspørger) på;

<http://pear.php.net/manual/en/package.database.db.intro-auto.php>

MVH Per Thomsen,
http://www.pert.dk/

D. Johnson (16-07-2004)
Kommentar
Fra : D. Johnson


Dato : 16-07-04 08:47

Per Thomsen <40f6f59c$0$24803$14726298@news.sunsite.dk>:
[cut]

> Hvis det hovedsageligt er for eksperimentets skyld og dermed for at
> lære
> noget, så synes jeg da endelig du skal fortsætte :)
> Men med den funktion du beskriver vil jeg ikke undlade at drage din
> opmærksomhed på PEAR's DB klasse.
> Der findes den funktion du beskriver nemlig allerede:

Aha!
Super, mange tak!
Jeg vil kigge nærmere på PEAR klasserne, det ser virkelig smart ud.


--
D. Johnson

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste