[PHP] Variabele in echo

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Het volgende is het geval: ik heb een pagina (leden.php) waarin ik een andere pagina include om er informatie uit te halen:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php 
include('info.php');
?>

<h1><?php echo $naam; ?></h1>

<div id="photo">
<h2>Foto</h2><br />
<img src="images/photos/<?php echo $naamphoto; ?>.jpg" alt="<?php echo $naam; ?>" />
</div>

Dit werkt goed. Alleen nu wil ik deze pagina aanroepen waardoor "naam" wordt vervangen door de naam waarmee de pagina wordt aangeroepen. Bijvoorbeeld als ik leden.php?lid=jaap doe, dat dan leden.php dit wordt:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php 
include('info.php');
?>

<h1><?php echo $jaap; ?></h1>

<div id="photo">
<h2>Foto</h2><br />
<img src="images/photos/<?php echo $jaapphoto; ?>.jpg" alt="<?php echo $jaap; ?>" />
</div>

Het uitlezen kan natuurlijk zo $lid = $_GET['lid'];, maar wat niet werkt en denk ik ook niet de bedoeling is, is als ik <?php echo $$lidphoto; ?> doe.

Hoe kan ik dit het beste/mooiste oplossen?

[ Voor 8% gewijzigd door Ruzor op 09-02-2007 02:39 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 21:10

pietje63

RTFM

Wat wil je precies? Variabele namen van variabele?

Wat wil je voor elkaar krijgen met
PHP:
1
<?php echo $$lidphoto; ?>

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Dat als ik de pagina met leden.php?lid=jaap doe dat dat als uitkomst heeft dat hij $jaapphoto uitleest en met lid=piet, $pietphoto uitleest. Die informatie haalt 'ie dan uit info.php (waar $jaapphoto is gedefinieerd).

Misschien doe ik het wel heel onhandig of omslachtig, maar dan zijn tips welkom :)

[ Voor 65% gewijzigd door Ruzor op 09-02-2007 02:51 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom zou je dit willen? 99 van de 100 keer dat je een dergelijke constructie nodig hebt, kun je beter een andere constructie gebruiken, bijvoorbeeld een array. En gezien het feit dat je niet eens behoorlijk onder woorden lijkt te kunnen brengen wat je eigenlijk wil schaar ik je eerder bij die ene procent dan bij die 99. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Afgezien van dat de constrcuctie idd af te raden is, is $$varnaam wel hoe dat werkt ja:

code:
1
2
3
4
5
6
7
8
9
[marco@portia marco]$ php
<?
$foo = "bar";
$bar = "hoi!";

echo $$foo;
?>
hoi!
[marco@portia marco]$

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

PHP:
1
<? echo $$lid.'photo'; ?>

Geeft je wat je wilt, echter zou ik als ik jou was inderdaad een betere contructie gebruiken zoals NME hierboven zegt.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Nou ja, ik hoop wel dat het duidelijk is wat ik wil? Maar idd ik zit wel bij die 1% :P Maar dan zou ik wel graag wat tips willen hebben over die constructie eventueel met arrays dan.

Ik zal wel even helemaal uitleggen wat de bedoeling is. In één php bestand heb ik allemaal informatie staan over bepaalde leden. Bijvoorbeeld $jaapleeftijd ="46", $pietwoonplaats="rotjeknor", etc. Die informatie wil ik dan op de pagina van die persoon laten weergeven. In piet.php wordt dan die info uitgelezen. Bijvoorbeeld woonplaats = <?php echo $pietwoonplaats; ?>.

Maar nu heb ik piet.php, jaap.php, jan.php, etc. Het leek mij handig om daar één pagina van te maken, aangezien het enige wat er verschilt in die pagina's is de naam. Mijn idee was dan om een lid.php te maken en om te laten weten welke naam 'ie moet gebruiken, wordt lid.php aangeroepen met b.v. lid.php?lid=jaap.

Maar als iemand een betere/mooiere oplossing heeft, graag _/-\o_

p.s. <? echo $$lid.'woonplaats'; ?> werkt niet, dan krijg ik woonplaats = pietwoonplaats i.p.v. woonplaats = rotjeknor :/

[ Voor 9% gewijzigd door Ruzor op 09-02-2007 03:24 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Maak dan een associatief array?

PHP:
1
2
3
4
5
6
7
8
$users = array(
    'Piet' => array('woonplaats' => 'Rotjeknor', 'photo' => 'http://jouwdomein.nl/foto.jpg'),
    'Jan' => array('woonplaats' => 'Amsterdam', 'photo' => 'http://jouwdomein.nl/foto.jpg'),
    'Klaas' => array('woonplaats' => 'Utrecht', 'photo' => 'http://jouwdomein.nl/foto.jpg'),
    'Gerard' => array('woonplaats' => 'Schiermonnikoog', 'photo' => 'http://jouwdomein.nl/foto.jpg')
);

print_r($users);

Je kan een user dan domweg aanspreken door je array aan te spreken. Wil je bijvoorbeeld de woonplaats van Piet afdrukken:
PHP:
1
echo $users['Piet']['woonplaats'];

Lijkt me een stuk duidelijker/gangbaarder/leesbaarder dan variabele variabelen. ;)
dusty schreef op vrijdag 09 februari 2007 @ 02:58:
PHP:
1
<? echo $$lid.'photo'; ?>

Geeft je wat je wilt, echter zou ik als ik jou was inderdaad een betere contructie gebruiken zoals NME hierboven zegt.
Zou dat niet ${$lid.'photo'} worden? :P

[ Voor 17% gewijzigd door NMe op 09-02-2007 04:12 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Dat is duidelijk informatie die je in een database stopt...

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
@-NMe-: Dat ziet er inderdaad een stuk beter uit! Ik denk dat ik daar dan mee aan de slag ga. Bedankt iig.

@CyBeR: Dat is inderdaad wel database informatie, maar het is maar een vrij eenvoudige site die ik door middel van php zo effectief en overzichtelijk mogelijk wil inrichten.

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Ruzor schreef op vrijdag 09 februari 2007 @ 14:43:
@-NMe-: Dat ziet er inderdaad een stuk beter uit! Ik denk dat ik daar dan mee aan de slag ga. Bedankt iig.

@CyBeR: Dat is inderdaad wel database informatie, maar het is maar een vrij eenvoudige site die ik door middel van php zo effectief en overzichtelijk mogelijk wil inrichten.
Juist, en als je dat effectief en overzichtelijk wil doen, doe je dat in een database. ;)
Misschien een idee om eens de basishoofdstukken van de PHP handleiding door te lezen, want volgens mij mis je nog wel wat stevige basiskennis om echt vooruit te kunnen. Bespaart je een hoop problemen achteraf. :)

(Overigens kan het natuurlijk ook zijn dat je geen database tot je beschikking hebt, dan zijn array's duidelijk de beste oplossing. Als het uitgebreider moet zou je ook een extern bestandsformaat kunnen overwegen.)

[ Voor 13% gewijzigd door --MeAngry-- op 09-02-2007 14:48 ]

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
--MeAngry-- schreef op vrijdag 09 februari 2007 @ 14:48:
[...]

Juist, en als je dat effectief en overzichtelijk wil doen, doe je dat in een database. ;)
Met eenvoudige website bedoelde ik ook mijn kennisniveau van php ;) Kijk het is een website die gewoon m.b.v. html makkelijk in elkaar te zetten is (en op dit moment ook gewoon werkt). Maar door wat simpele php te gebruiken probeer ik het makkelijker te maken om up-te daten, overzichtelijker en eenvoudiger te maken. Ook ter voorkoming van meerdere (en overbodige) dezelfde soort pagina's, etc. Door op te zoeken hoe dingen werken in (en vragen te stellen over) php, leer ik ook stukje bij beetje wat meer over php.

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ruzor schreef op vrijdag 09 februari 2007 @ 15:21:
[...]
Met eenvoudige website bedoelde ik ook mijn kennisniveau van php ;)
OK, dan hier wat tips voor je kennis:
• $$ is evil, onthou dit en vermijd het verder.
• Arrays zijn hip, zeker in PHP (associatief, stack en list functionaliteit etc.), dus lees je in op het gebeid van arrays.

{signature}


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Ik alles nu op de manier gedaan zoals -NMe- hier voorstelt en het ziet er nu een stuk beter uit.

Maar mijn eigenlijke vraag is nog niet beantwoord: Hoe krijg ik het nu zover dat als ik lid.php?id=piet doe, automatisch piet wordt ingevuld in de echo?
PHP:
1
<?php echo $users(hier code voor de variabele id)['woonplaats']; ?>

wordt
PHP:
1
<?php echo $users['piet']['woonplaats']; ?>


EDIT: Laat maar, al gevonden:
PHP:
1
<?php echo $users[$id]['woonplaats']; ?>.

O-)

[ Voor 20% gewijzigd door Ruzor op 10-02-2007 15:37 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 27-08 14:50
PHP:
1
<?php echo $users[$_GET['id']['woonplaats']; ?>

Zoals jij het nu hebt, maak je gebruik van register_globals. En dat is vies.
Als je $_GET['id'] gebruikt, is het al een heel stuk minder vies.
Als je dus nog wat checks ervoor doet, dan is het helemaal mooi :)

edit:
Kijk hier anders eens: http://nl2.php.net/variables.predefined

[ Voor 12% gewijzigd door Mr. Bondt op 10-02-2007 16:02 ]

Pagina: 1