[php] dynamische <form.... tag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • borgdaville
  • Registratie: December 2000
  • Laatst online: 20:10
Hoi, ik ben aardig nieuw in PHP, ben met mijn eerste projectje bezig. Het verbaast me hoe goed het me af gaat met hulp van google en veel proberen, toch heb ik nu een probleempje dat ik maar niet onder de duim krijg. Omdat het volgens mij iets kleins en eenvoudigs moet zijn heb ik maar besloten de hulp van hier in te roepen.

Ik wil dit dynamisch genereren:
<form method="post" action="status_opslaan.php?rol=1">

de waarde van Rol moet uit de variabel $rol gelezen worden.

Dit is mijn poging, heb veel gespeeld met / en " tekens, maar ik denk dat deze het best is.
<?php
echo "<form method=/"post/" action=/"status_opslaan.php?rol=" . $rol . "/">";
?>

Toch blijf ik deze error krijgen:
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /var/www/qsystem/status.php on line 22

Iemand enig idee?

edit:
deze heb ik ook geprobeerd:
echo "<form method=/"post/" action=/"status_opslaan.php?rol=/"" . $rol . "/">";

[ Voor 15% gewijzigd door borgdaville op 21-10-2005 09:45 ]

Familieman, nerd, mooi weer fietser, buitenmens en levensgenieter...


Acties:
  • 0 Henk 'm!

Verwijderd

Vervang je forward slashes (/) eens door backslashes (\) in die echo...

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Je moet geen forward slashes ( / ) gebruiken, maar backslashes ( \ ) om te escapen, dus:
PHP:
1
echo "<form method=\"post\" action=\"status_opslaan.php\">";


$rol zou ik trouwens gewoon in een hidden field in je form zetten, als je toch ale en form gebruikt.

HTML:
1
<input type="hidden" name="rol" value="<?php echo $rol; ?>" />

[ Voor 16% gewijzigd door Borizz op 21-10-2005 10:07 ]

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • borgdaville
  • Registratie: December 2000
  • Laatst online: 20:10
thnx...mensen, ik voel me zo stom nu! 8)7

vooral om dat ik die die "\"" constructie vaker heb gebruikt!

Familieman, nerd, mooi weer fietser, buitenmens en levensgenieter...


Acties:
  • 0 Henk 'm!

  • Mercarra
  • Registratie: Juni 2001
  • Nu online
Ik ben pas begonnen met php, maar dit zou toch moeten werken:

code:
1
2
3
form enz
<?php echo($rol)?>
meer html
Volgens mij is het namelijk niet zo gaaf om enorm stukken html te gaan echo'en en daardoor allerlei dingen te moeten escapen.

Spuit 11 enzo...

[ Voor 8% gewijzigd door Mercarra op 21-10-2005 10:04 ]

Canon EOS 6D / Samyang 14mm f/2.8 / 17-40mm f/4.0 / 35mm f/1.4 / 50mm f/1.4 / 85mm f/1.8 / 70-200mm f/4 IS mercarra.nl


Acties:
  • 0 Henk 'm!

  • borgdaville
  • Registratie: December 2000
  • Laatst online: 20:10
mercarra schreef op vrijdag 21 oktober 2005 @ 10:04:
Ik ben pas begonnen met php, maar dit zou toch moeten werken:

code:
1
2
3
form enz
<?php echo($rol)?>
meer html
Volgens mij is het namelijk niet zo gaaf om enorm stukken html te gaan echo'en en daardoor allerlei dingen te moeten escapen.
we gaan misschien offtopic, maar ik ben nu 3 dagen met PHP en naar mijn mening..echo je alle HTML die dynamisch is. Dat is toch de hele gedachte achter PHP?

Familieman, nerd, mooi weer fietser, buitenmens en levensgenieter...


Acties:
  • 0 Henk 'm!

Verwijderd

mercarra schreef op vrijdag 21 oktober 2005 @ 10:04:
Ik ben pas begonnen met php, maar dit zou toch moeten werken:

code:
1
2
3
form enz
<?php echo($rol)?>
meer html
Volgens mij is het namelijk niet zo gaaf om enorm stukken html te gaan echo'en en daardoor allerlei dingen te moeten escapen.

Spuit 11 enzo...
Misschien ietwat offtopic, maar als je situaties als deze tegenkomt (binnen HTML gebruik moeten maken van PHP-variabelen) dan moet je je afvragen of dat eenmalig is binnen heel veel HTML, of meerdere malen binnen (wellicht iets minder-) HTML.

Dus als in het voorbeeld van de TS de variabele `rol` de enigste is die gebruikt moet worden binnen zijn code kan hij het beste iets neerzetten als;

PHP:
1
<form action="pagina.php?rol=<?=$rol?>">


Als hij echter in zijn hele formulier meerdere malen met PHP gaat werken is het niet verstandig om constant te switchen tussen HTML en PHP. Daarom zou een constructie als deze dan verstandiger zijn, IMO;

PHP:
1
2
echo '<form action="pagina.php?rol='.$rol.'">';
echo 'etc.';


...en let daarbij op gebruik van single quotes, zodat je niet constant aan het escapen bent.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
borgdaville schreef op vrijdag 21 oktober 2005 @ 10:07:
[...]

we gaan misschien offtopic, maar ik ben nu 3 dagen met PHP en naar mijn mening..echo je alle HTML die dynamisch is. Dat is toch de hele gedachte achter PHP?
Persoonlijk probeer ik geen enkel print of echo statement te gebruiken voor HTML output. Het beperkt je aanpassings mogelijkheden en bevorderd het mixes van code en HTML alleen maar, wat je eigenlijk moet voorkomen. Wat ik gebruik is iets als dit:

PHP:
1
2
3
4
5
<ul>
<? foreach ( $items as $item ) { ?>
  <li><?=$item?></li>
<? } ?>
</ul>


Dat legt de nadruk ook wat meer op de HTML, waar het bij de output om gaat. Het beetje php is puur voor invulling van variabelen enzo.

edit:
wat ivy dus ook zegt :P

[ Voor 7% gewijzigd door Michali op 21-10-2005 10:13 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:45

RM-rf

1 2 3 4 5 7 6 8 9

met alle respect, maar de PHP engine vraagt je niet om jouw mening, maar volgt gewoon zijn gedocumenteerde gedrag ...

dat betekent dat inderdaad zowel

PHP:
1
<? echo (  "<form action=\"blah.php?foo=".urlencode( $bar )."\">" ); ?>

als
PHP:
1
<form action="blah.php?foo=<?php echo urlencode( $bar ); ?>">


functioneert ....

Beide zijn gewoon te gebruiken, en het verschil is niet al te groot, de tweede heeft natuurlijk wel als voordeel dat dit als HTML te parsen en valideren blijft (alhoewel het inderdaad een error op die action attribute zou moeten geven ...), echter, als je op die manier wilt werken, is PHP misschien sowieso niet helemaal de beste optie (denk dan eerder aan XSLT, .Net of miss. Coldfusion e.d.)

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Het echo'en van HTML, zeker in dit soort (niet herhalende) situaties zou ik zoveel mogelijk voorkomen. Het maakt de code onlees- en slecht beheerbaar.

Het uiteindelijke doel is natuurlijk gewoon de boel volledig te scheiden (templates), of in ieder geval in je PHP/HTML templates niets anders te gebruiken dan control-structures (if/else/for/etc) en variabelen. Echo/print e.d. zijn dan uit den boze als het niet om een variabele gaat!

Acties:
  • 0 Henk 'm!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
PHP:
1
2
3
echo <<<ECHOTJE
Lap HTML code
ECHOTJE;


Netjes, leesbaar en beheerbaar.

[ Voor 24% gewijzigd door Fles op 21-10-2005 11:47 ]


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Graveheart schreef op vrijdag 21 oktober 2005 @ 11:46:
PHP:
1
2
3
echo <<<ECHOTJE
Lap HTML code
ECHOTJE;


Netjes, leesbaar en beheerbaar.
Absolutement, Heredoc syntax is soms erg handig!

Zie: PHP: Strings - Manual

Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Verwijderd schreef op vrijdag 21 oktober 2005 @ 10:08:
[...]
PHP:
1
2
echo '<form action="pagina.php?rol='.$rol.'">';
echo 'etc.';


...en let daarbij op gebruik van single quotes, zodat je niet constant aan het escapen bent.
Plus je moet de string onderbreken om variabelen erin te zetten, wat beter leesbaar is dan
PHP:
1
echo "string met $variabele";

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Graveheart schreef op vrijdag 21 oktober 2005 @ 11:46:
PHP:
1
2
3
echo <<<ECHOTJE
Lap HTML code
ECHOTJE;


Netjes, leesbaar en beheerbaar.
Waarom zou je heredoc gebruiken om HTML af te drukken als je het net zo goed buiten PHP om kan doen? Heredoc mag dan duidelijker kunnen zijn dan standaard echo's of print's, maar het haalt het nog steeds niet bij het onderbreken van de PHP-tag om HTML te gebruiken, wat IMHO veel duidelijker is.

'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!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
-NMe- schreef op vrijdag 21 oktober 2005 @ 12:19:
[...]

Waarom zou je heredoc gebruiken om HTML af te drukken als je het net zo goed buiten PHP om kan doen? Heredoc mag dan duidelijker kunnen zijn dan standaard echo's of print's, maar het haalt het nog steeds niet bij het onderbreken van de PHP-tag om HTML te gebruiken, wat IMHO veel duidelijker is.
Kan ik hieruit concluderen dat je ook de volgende constuctie gebruikt:

PHP:
1
2
3
4
5
if ($waarde) {
?>
Lap HTML
<?
}


Het ligt er aan van welke kant je het bekijkt.

Ik ben bezig in PHP en moet even wat HTML kwijt.
Ik ben aan het HTMLen en moet onderbreken om wat PHP te tikken.

Voor beide is wel wat te zeggen, hoewel ik persoonlijk de bovenstaande code vrij onduidelijk vind. Mocht je dit niet gebruiken, dan zou ik het ook bij 1 methode houden en niet bij een keuze functie heredoc gebruiken en anders php sluiten.

Nou is het niet zo dat ik alles in PHP doe, de <html> tag met de volgende staan meestal buiten PHP. Maar als ik bijvoorbeeld met een keuze mogelijkheid html moet weergeven, dan gebruik ik heredoc.

[ Voor 11% gewijzigd door Fles op 21-10-2005 12:42 ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Graveheart schreef op vrijdag 21 oktober 2005 @ 12:37:
[...]


Kan ik hieruit concluderen dat je ook de volgende constuctie gebruikt:

PHP:
1
2
3
4
5
if ($waarde) {
?>
Lap HTML
<?
}


Het ligt er aan van welke kant je het bekijkt.

Ik ben bezig in PHP en moet even wat HTML kwijt.
Ik ben aan het HTMLen en moet onderbreken om wat PHP te tikken.

Voor beide is wel wat te zeggen, hoewel ik persoonlijk de bovenstaande code vrij onduidelijk vind. Mocht je dit niet gebruiken, dan zou ik het ook bij 1 methode houden en niet bij een keuze functie heredoc gebruiken en anders php sluiten.
Je eerste optie wil zeggen dat je je HTML maar tussen al je php logica neer plempt en is dus per definitie fout. De 2de optie heb je als je je HTML in een aparte template zet en tussendoor wat variabelen invult en af en toe een constructie toepast (zoals loops en condities ed.). De 2de optie is dus gewoon zoals het hoort. In de rest van je php code hoort geen enkele output.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Michali schreef op vrijdag 21 oktober 2005 @ 12:40:
[...]

Je eerste optie wil zeggen dat je je HTML maar tussen al je php logica neer plempt en is dus per definitie fout. De 2de optie heb je als je je HTML in een aparte template zet en tussendoor wat variabelen invult en af en toe een constructie toepast (zoals loops en condities ed.). De 2de optie is dus gewoon zoals het hoort. In de rest van je php code hoort geen enkele output.
Nou ja dit is niet per definitie waar. Ik heb websites gemaakt met enorme lappen PHP, objecten en voorwaardes, met relatief weinig html. Dan zet je niet af en toe een variabele neer of een constructie.

Dan zal ik wel buiten PHP beginnen en dan in het midden ergens een functie aanroep in php. Maar in alle objecten en functies ga ik niet de heletijd terug naar html.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Graveheart schreef op vrijdag 21 oktober 2005 @ 12:47:
Nou ja dit is niet per definitie waar. Ik heb websites gemaakt met enorme lappen PHP, objecten en voorwaardes, met relatief weinig html. Dan zet je niet af en toe een variabele neer of een constructie.

Dan zal ik wel buiten PHP beginnen en dan in het midden ergens een functie aanroep in php. Maar in alle objecten en functies ga ik niet de heletijd terug naar html.
Je moet functies ook geen HTML laten outputten. Zet dat soort dingen liever in variabelen neer, en die variabelen kun je dan netjes in je HTML templates zetten. Dat is de enige manier om je code een beetje netjes te scheiden van je layout.

'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!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Als je met veel MySQL, keuze mogelijkheden en vooral loops aan je HTML code komt, dan kun je dat niet netjes in templates bij elkaar zetten. Dan maak ik echt wel een functie of object aan om de html code te genereren die ik vervolgens terug geef aan de functie of het object.

[ Voor 17% gewijzigd door Fles op 24-10-2005 11:16 ]


Acties:
  • 0 Henk 'm!

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 07-07 15:40
code:
1
2
3
4
5
6
7
8
9
10
11
function gettemplate($filename)
{
    $handle = fopen($filename, "r");
    $template = fread($handle, filesize($filename));
    fclose($handle);
    return $template;
}

$contents = gettemplate("gastenboek.htm");
$contents = str_replace("%title%", $title, $contents);  
$contents = str_replace("%value%", $value, $contents);

Ik maak meestal gewoon in een html-editor de html pagina's, Op de plekken waar php getallen of tekst moet neer zetten, zet ik in de html gewoon %Variable% neer, die replace ik dan later via .php met de gegenereerde tekst en getallen. Op deze manier kan je altijd vrij simpel de pagina's later aanpassen.

[ Voor 29% gewijzigd door djexplo op 24-10-2005 11:15 ]

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
@djexplo: En wat doe je dan als je op een recursieve manier een menu tree moet maken? De beperkingen die je jezelf oplegt met een (eigen) template engine zijn voor mij gewoon de reden dat ik het niet gebruik. Mischien dat de wat geadvanceerdere template egine's hier wel goed mee omgaan (zoals smarty), maar vaak moet je dan toch wat (naar mijn idee) onlogische handelingen uitvoeren. Ik maak gewoon van iedere template een aparte class en gebruik daarbij voor kleinere delen ook weer losse classes. Ik werk dan ook volgens het MVC pattern op een geheel OO manier, wat imo wel erg lekker werkt.

Noushka's Magnificent Dream | Unity

Pagina: 1