Ga naar inhoud

[PHP] Twee variabelen aan elkaar plakken


Aanbevolen berichten

Hoi luitjes, Ik ben een beginner op het php gebied, en probeer het 1 en ander uit. Stuit ik direct al op een probleem. Het volhgende: Ik heb bovenaan in mijn pagina een aantal variabelen als links. [code:1:70bde41501] $blocklink1 = "<a href=\"link1.php\">Link 1</a>"; $blocklink2 = "<a href=\"link2.php\">Link 2</a>"; $blocklink3 = "<a href=\"link3.php\">Link 3</a>"; enz........... [/code:1:70bde41501] Verder op in de pagina wil ik dan deze links onderelkaar laten plaatsen op de site. Ik weet niet precies hoeveel links er boven aan de pagina staan, aangezien dat op elke pagina anders is. Ik moet dan dus werken met een loopje die kijkt of de variabelen bestaat en zo ja dan mag hij hem laten zien. Goed ik zal eerst eens laten zien waar ik zelf mee kwam, maar wat niet werkt; [code:1:70bde41501] $counter = 1; while ($blocklink.$counter > "") { blockcontent .= "<tr><td height=\"22\" valign=\"top\">; blockcontent .= $blocklink.$counter; blockcontent .= "</td></tr>"; $counter ++; } echo $blockcontent; [/code:1:70bde41501] Goed bovenstaande resulteerd dus in een eindeloze loop. Waarschijnlijk ziet hij altijd wat in de variabelen waardoor hij blijft loopen. Heeft er iemand een suggestie over hoe dit op te lossen. Zal waarschijnlijk voor een prof. erg lachwekkkend zijn. vr.gr. Peter
Link naar reactie
[color=green:92b6d8a29e]while ($blocklink.$counter > "")[/color:92b6d8a29e] Je counter begint bij 1, en je hoogt hem op +1. Zolang je counter groter is dan null (""), blijf je optellen. Je komt dus nooit uit die conditie. Moet het niet [color=olive:92b6d8a29e]while ($blocklink.$counter < 3)[/color:92b6d8a29e] zijn?
Link naar reactie
hiervoor zou je dus VEEL beter een array kunnen gebruiken. [code:1:8034bf68b7] $blocklink=array(); $blocklink[]= "<a href=\"link1.php\">Link 1</a>"; $blocklink[]= "<a href=\"link2.php\">Link 2</a>"; $blocklink[]= "<a href=\"link3.php\">Link 3</a>"; enz.. enz.. [/code:1:8034bf68b7] en dan om de blockcontent te maken: [code:1:8034bf68b7] foreach ($blocklink as $item){ if (!empty($item){ blockcontent .= "<tr><td height=\"22\" valign=\"top\">; blockcontent .= $item; blockcontent .= "</td></tr>"; } } [/code:1:8034bf68b7]
Link naar reactie
Inderdaad een [url=http://www.php.net/manual/nl/language.types.array.php]array[/url] gebruiken. Die zijn voor dit soort zaken bedacht en hebben bovendien nog een paar andere voordelen. Om even een aanvulling te geven op je probleem (niet gebruiken dus, maar meer ter info). Variabele variabelen werken iets anders dan jij hebt geprobeerd, meer info vind je [url=http://www.php.net/manual/nl/language.variables.variable.php]hier[/url].
Link naar reactie
Mensen harstikke bedankt. Het werkt als ik het als array gebruik. En het werkt precies zoals ik wil. Ik heb wel een volgende probleempje, die ik zelf wat moeilijker vindt. Net zoals de blocklinks wil ik bovenaan de pagina een complete html table in een variabele zetten en die dan later ergens op de pagina laten zien. Op zich is dat niet zo heel moeilijk alleen kan ik dan natuurlijk geen " gebruiken anders denkt php dat dat het einde is van de variabelen. Is er een manier waarop ik het toch in een variabelen kan zetten en dan later php overal voor de " een backslash kan laten plaatsen. Ik heb het geprobeerd te zoeken in de manual (bedankt annie) maar kan niet vinden waar ik moet zijn.
Link naar reactie
Als de tabel niet verandert kan je 'm vrij simpel in een bestand zetten, en dan openen met bijvoorbeeld [url=http://www.php.net/file]file()[/url]. Mocht de tabel wel dynamisch gegenereerd moeten worden, overweeg dan om alle HTML tussen enkele quotes (') te plaatsen ipv dubbele quotes ("), je hoeft de dubbele quotes van HTML dan niet meer te escapen, maar een newline (\n) zal ook niet meer werken. En als laatste zijn er nog de functies [url=http://www.php.net/addslashes]addslashes()[/url] en [url=http://www.php.net/stripslashes]stripslashes()[/url]. Mogelijkheden genoeg dus. - Bas
Link naar reactie
Bedankt, dat verklaard een hoop. Ik wist niet dat zoiets gewoon als functie in php bestond. Begin nu te begrijpen dat php veel krachtiger is als ik in eerste instantie dacht. In ieder geval een laatste vraag(denk ik) voordat ik mijn pagina verder verrampeneer. Ik heb nog niets in een string dus is het volgende mogelijk? [code:1:75305e70eb] $maindata = addslashes(" /* kopieer de html code tussen deze regel */ /* en deze regel */ "); [/code:1:75305e70eb]
Link naar reactie
Nee. In je HTML zullen namelijk dubbele quotes voorkomen en dus zal je een parse-error krijgen. Als je geen enkele quotes in je HTML hebt staan zou je die kunnen gebruiken om de code te omsluiten. Maar mijn vraag is nu: waarom wil je addslashes() gebruiken? Als je geen error krijgt bij het declareren van een string die je toch alleen laat zien door echo() of print() heb je dat helemaal niet nodig. Pas als je met databases of geposte data gaat spelen is die functie echt van betekenis. - Bas
Link naar reactie
Je zit (nagenoeg) goed, de /* ko................gel */ moet je weglaten daar, want dat komt gewoon in de string. (maar ik neem aan dat je dat alleen hier zette om idee de verduidelijken ;) ) omdat je er html in wilt zetten dat meestal " bevat, bv <table width="100%"> kun je beter de code tussen ' (enke quotes) zetten dus [code:1:9775df4549] $maindata = addslashes(' <table width="100%"><tr bgcolor="#ff0000"><td>hello world</td></tr></table> '); [/code:1:9775df4549]
Link naar reactie
Ja dat is wat ik bedoel. Ik maak een website voor mensen die weinig tot geen verstand hebben van html/php Daarom wil ik in elke pagina een goed gekomenteerde sektie maken waarbij ze de html code kunnen plakken, wat ze hebben gemaakt met Dreamweaver MX. Daarom dacht ik aan het bovenstaande wat ik al eerder had gemaakt. Die twee regels met plak tussen hier en hier blijven dan staan want die zijn voor de mensen hier. Dus als ik het volgende doe moet het werken denk ik, of niet? [code:1:5f7790d9c7] $maindata = addslashes(' /* kopieer tussen deze regel */ /* en deze regel /* '); [/code:1:5f7790d9c7] Die komentaar regels neemt php toch niet mee? of wel soms. dan verderop in de pagina echo ik dan de variable $maindata in een tabel. Zo kan iedereen een simpel paginaatje maken met dreamweaver of word en dan de code in de template plakken en dan is alles weer hetzelfde als de rest van de site.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...