Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Twee variabelen aan elkaar plakken

11 antwoorden
  • 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
  • [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?
  • 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]
  • 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].
  • 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.
  • 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
  • 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]
  • 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
  • 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]
  • 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.
  • Je maakt een kleine denkfout. de code die tussen de quotes staat is HTML en geen PHP, dus als je daar commentaar wilt zetten moet dat met [code:1:025d4798d5] <!-- kopieer tussen deze regel --> <!-- en deze regel --> [/code:1:025d4798d5]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.