webForumDet fria alternativet

$$ problem

6 svar · 218 visningar · startad av GrodanBoll

GrodanBollMedlem sedan sep. 2001788 inlägg
#1

Hej hej

Jag har lite strul med en grej som jag försöker fixa... hoppas att ni kan hjälpa mig :)

Jag har ett formulär som jag ska fylla med info från databas, detta gör jag ju vanligast genom $row['variabelnamn'].
Men nu tänkte jag toka till det en aning.

Jag håller nämligen på med lite saker för att kunna validera ett formulär, så då kan man fylla formuläret på två sätt:
1. $row['variabelnamn']
2. $_REQUEST['variabelnamn']
Det som är gemensamt med de båda är då ['variabelnamn'], så jag behöver bara bestämma om det ska vara $row eller $_REQUEST före.

T.ex.:

// lägger till prefixet som gör att rätt variabler kommer med
$pre = "row";

Formulärfältet ser sedan ut såhär:

<input type="text" name="medlFodelsedatum" id="medlFodelsedatum" size="40" maxlength="150" value="<?php $tmp = $pre."['medlFodelsedatum']"; echo $$tmp; ?>" class="notistext"><br />

När jag försöker att hämta det såhär så får jag inte fram någe. Kollar jag i error.log (Apache) så finns det ett meddelande såhär:

PHP Notice:  Undefined variable:  row['medlFodelsedatum'] in C:\Program\Apache Group\Apache2\htdocs\vif\includes\forms\form_medlem2.inc.php on line 10

rad 10 är då formulärskoden.

Ersätter jag $$tmp med:

$row['medlFodelsedatum']

så fungerar allt perfa, så jag hämtar iaf rätt från db.

Jag har ingen aning om varför det inte funkar. Vore kanontacksam för lite hjälp :)

/Grodan

MatteMedlem sedan aug. 20002 975 inlägg
#2

Prova det här:

... value="<?php $tmp = ${$pre."['medlFodelsedatum']"}; echo $tmp; ?>" ...
GrodanBollMedlem sedan sep. 2001788 inlägg
#3

Hej :)

Men, nope. Jag får samma felmeddelande. :(

/G

PHP Notice:  Undefined variable:  row['medlFodelsedatum'] in C:\Program\Apache Group\Apache2\htdocs\vif\includes\forms\form_medlem2.inc.php on line 10
MatteMedlem sedan aug. 20002 975 inlägg
#4

En variant som borde gå är

$pre = $row; // alternativt $pre = $_REQUEST;
.
.
... value="<?php echo $pre['medlFodelsedatum'] ?>" ...

Annars några exempel $$:

Detta fungerar:

$text1="ettan";
$text2="tvåan";
for($i=1;$i<=2;$i++) echo ${"text".$i}."<br>";

Detta fungerar också:

$text['ett'] = "ettan";
$text['tva'] = "tvåan";
$pre = "text";
foreach ($$pre as $Value) {
echo $Value."<br>";

Men detta fungerar inte (konstaterade jag nu):

$text['ett'] = "ettan";
$text['tva'] = "tvåan";
$pre = "text";
echo ${$pre."['ett']"}."<br>";

Någon kanske kan förklara varför ?

GrodanBollMedlem sedan sep. 2001788 inlägg
#5

Ursprungligen av Matte En variant som borde gå är

$pre = $row; // alternativt $pre = $_REQUEST;
.
.
... value="<?php echo $pre['medlFodelsedatum'] ?>" ...

Japp, detta funkade (iaf för $row, ska testa det andra snart).
Fattar dock inte varför detta funkar när det första inte funka, någon som kan förklara?

Men jag e JÄTTEnöjd, bugar o tackar. :birp
Saved my day lixom. :)

/Grodan

ThACRoWMedlem sedan dec. 2001314 inlägg
#6

Men detta fungerar inte (konstaterade jag nu):

$text['ett'] = "ettan";
$text['tva'] = "tvåan";
$pre = "text";
echo ${$pre."['ett']"}."<br>";

Någon kanske kan förklara varför ?

Yepp, man gör så här:

$text['ett'] = "ettan";
$text['tva'] = "tvåan";
$pre = "text";
echo ${$pre}['ett']."<br>";
MatteMedlem sedan aug. 20002 975 inlägg
#7

Man tackar. Så självklart allt är när man ser svaret. :)

Då borde mitt ursprungliga kodförslag fungerat om man ändrat den till:

... value="<?php $tmp = ${$pre}['medlFodelsedatum']; echo $tmp; ?>" ...
130 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)