[php]Variabele in een variabele

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Hallo all, ik heb al gezocht, maar kan niets vinden waar ik echt iets aan heb. Ook op php.net niet.

Ik zit met het volgende probleem:
Voor een site heb ik een 'upload' script voor reviews. Maar een review kan natuurlijk uit meerdere pagina's bestaan. Daarom is er de mogelijkheid een pagina toe te voegen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$p = $_POST['p'];

if($p == ''){
$p = 1;
}
if(isset($addpage)){ 
$p = $p + 1; 
}elseif(isset($delpage)){
if($p > 1){
$p = $p - 1;
}else{
?>
<script language="JavaScript1.2">
<!--
alert('Je moet minstens een pagina hebben!')
//-->
</script>
<?
}
}else{
$p = 1;
}


Dit werkt allemaal perfect, ook het opslaan van de verschillende textfields in verschillende variabelen lukt:

PHP:
1
2
3
4
5
6
7
$pnr = 1;

while ($pnr <= $p){ 
$page = 'page$pnr';
$$page = $_POST['$$page'];
$pnr++;
}


Pagina één word dus opgeslagen in $page1, pagina twee in $page2 enz.
Nu komt het, als je een pagina toevoegd gaat hij weer terug naar het edit scherm, en de vorige textfields, pagina's, moeten hun inhoud natuurlijk wel bewaren, alleen wil het niet lukken om iets te verzinnen dat zich aanpast aan de huidige pagina. Dus dat de inhoud van pagina 1 ook bij textfield één komt:

PHP:
1
2
3
4
5
6
7
while ($pag <= $p){ 
     echo "<tr><td height=\"\" colspan=\"2\" class=\"minhoud\" background=\"images/back.gif\">";
     echo "<p>Inhoud pagina $pag..</p>";
     echo "<textarea name=\"page$pag\" id=\"page$pag\" cols=85 rows=11 wrap=physical>$page$pag</textarea>";
     echo "<p align=\"right\"><input type=\"submit\" name=\"delpage\" id=\"delpage\" class=\"button2\" value=\"Delete Page\"> - 
<input type=\"submit\" name=\"addpage\" id=\"addpage\" class=\"button\" value=\"Add Page\"></p></td></tr>";
$pag++;


Dit lukt maar niet!!!!! Pleas help me....

\edit:
Sorry voor de layoutverneuking...

[ Voor 31% gewijzigd door Roa op 20-01-2003 19:18 ]

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
In je stukje:
PHP:
1
2
3
4
5
6
7
$pnr = 1; 

while ($pnr <= $p){  
$page = 'page$pnr'; 
$$page = $_POST['$$page']; 
$pnr++; 
}


Maak je volgens mij sowieso de fout met het verschil tussen " en '...

echo "page$pnr"; geeft page1 (bijvoorbeeld)

Maar: echo 'page$pnr'; geeft page$pnr... Dus volgens mij moet je sowieso daar " ipv ' gebruiken :) Ik vind het sowieso netter om als volgt te doen: echo "page".$pnr;, maar dat vind ik :)

Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Hmmm...nog niet echt overnagedacht..... 'page$pnr' word wel opgeslagen als $page1. Althans, $_POST['$$page'] word opgeslagen in $page1. Daar gaat het nu ook niet echt om. Ik moet juist bij het genereren van de textfields de inhoud van de textfields hebben, oftwel als $pag 1 is, moet er tussen <textfield> en </textfield> $page1 staan. Zodat de inhoud van $page1 in het textfield komt.

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Misschien is het handig om ook ff het stukje arrays in de php manual door te nemen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

[offtopic]
Een stukje gequote van kvdveer uit een ander topic over de de zogenaamde variable variabelen
kvdveer schreef op 15 January 2003 @ 14:30:
Mensen die dit soort constructies gebruiken dienen echter standrechtelijk geexecuteerd te worden. De mensen die deze constructie hebben verzonnen dienen met een kaasschaaf teruggebracht te worden tot een formaat van 3 inch in het vierkant.
:+
[ /offtopic]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Ja, bedankt, daar heb ik echt wat aan :|

Verzin jij maar een beter script.

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Roa schreef op 20 januari 2003 @ 23:19:
Ja, bedankt, daar heb ik echt wat aan :|

Verzin jij maar een beter script.
Zoals al meerdere mensen hebben gezegd: maak gebruik van Arrays!

Klein voorbeeldje:
HTML:
1
2
3
4
<FORM METHOD=POST ACTION="post.php">
1: <input type="text" name="page[1]"><BR>
2: <input type="text" name="page[2]"><BR>
</form>


En zorg dat je in je post.php dit hebt staan:
PHP:
1
2
3
echo "<PRE>";
print_r($_REQUEST);
echo "</PRE>";


Succes!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Leuk voorbeeld, maar daar kan ik niks mee, met die array's misschien, maar het post voorbeeld is niet van toepassing om mijn probleem.

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Roa:
Leuk voorbeeld, maar daar kan ik niks mee, met die array's misschien, maar het post voorbeeld is niet van toepassing om mijn probleem.

En waarom dat zo is, ga je ook vast nog met ons delen? :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
PHP:
1
2
$nr = 1;
$res = 'page$nr';

$res == page$nr;
PHP:
1
2
$nr = 1;
$res = "page$nr";

$res == page1
PHP:
1
2
$nr = 1;
$res = 'page'.$nr;

$res == page1

[ Voor 56% gewijzigd door vinnux op 21-01-2003 14:25 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
drm schreef op 21 January 2003 @ 14:20:

[...]

En waarom dat zo is, ga je ook vast nog met ons delen? :)
Volgens mij zoekt Mijnheer Roa een lappie code die hij zo kan Ctrl-C/Ctrl-V-en... :X
vgouw schreef op 21 January 2003 @ 14:24:
PHP:
1
2
$nr = 1;
$res = 'page$nr';

$res == page$nr;
PHP:
1
2
$nr = 1;
$res = "page$nr";

$res == page1
PHP:
1
2
$nr = 1;
$res = 'page'.$nr;

$res == page1
Yeah, that's what I said :)

@ Roa: Ik zou verder geen probleem zien eigenlijk? :? Heb je het met " al wel geprobeerd? :?

edit:
Ik heb ff je stukkie code lopen proberen, maar volgens mij zit je GRUWELIJK te knoeien... 't Lijkt nergens op IMO...

[ Voor 18% gewijzigd door Osiris op 21-01-2003 14:40 ]


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
drm schreef op 21 januari 2003 @ 14:20:

[...]

En waarom dat zo is, ga je ook vast nog met ons delen? :)
Ja, komt zo ;)
@ Roa: Ik zou verder geen probleem zien eigenlijk? Heb je het met " al wel geprobeerd?
Het punt is dat ik uiteindelijk de informatie UIT $page1 moet krijgen. Het word er namelijk WEL goed in opgeslagen. Maar, als ik dan de waarde van $page1 in dat textfield wil hebben moet ik dus een script hebben dat de variabele $page1 aanpast aan het textfield van de huidige pagina: oftewel, bij textfield één moet de waarde van $page1, bij textfield 2 moet de waarde van $page2 enzovoorts.

PHP:
1
2
3
4
5
6
while ($pag <= $p){ 
     echo "Veel gezeur";
     echo "Veel gezeur";
     echo "<textarea>$page1</textarea>";
     echo "Veel gezeur";
$pag++;


De 1 in $page1 moet zich dus aanpassen aan $pag.

\edit
Het script hierboven werkt dus wel, maar laat bij iedere textfield de waarde van textfield 1 zien. Het opslaan in databases enzo gaat wel lukken, alleen dit.... 8)7

[ Voor 13% gewijzigd door Roa op 21-01-2003 16:38 ]

Research is what I'm doing when I don't know what I'm doing.

Pagina: 1