Segítséget kérnék! PHP: valami konkatenációs hiba a value-nál? Parse és syntax errort kapok. (Az eljárások jók és működnek sima HTML-be teszteltem!)
$form = '<form method="post">
<label>
<span>Név: </span>
<input type="text" name="name" placeholder="Gipsz Jakab" value="'.echo getValue('name');.'">'
.echo getError('name');.
'</label>';
a form is le van zárva és echoval is ki van íratva:
$form .= </form>;
echo $form;
Én még nagyon régen PHP-ztam, de akkor úgy használtuk, hogy a html tag-eket nem idézőjel, hanem aposztróf közé tettük.
Persze nem tudom, új szabványokkal működik-e, meg jó-e.
például <form method='post'> lenne ...="post" helyett. kipróbálni érdemes lehet.
Nem azért, mert nincs különválasztva a php és html kód?
Én régen ugyan, de így használtam:
<input type="text" name="name" placeholder="Gipsz Jakab" value="' <?php echo getValue('name'); ?>'">'
Bár nekem elég felületes a php tudásom.
Ha voltál annyira terhelt, hogy olyan kódot írjál, ami 2 soros és 5-10-15 percig kell bogozni egyáltalán, hogy átlásd melyik " vagy ' meddig tart, akkor legyen türelmed végignézni, és kikeresni azt, hogy hol b*sztad el.
Ki tanította neked ezt?
Amúgy meg tessék, de ez egy okádék:
<?php
function getValue() {
return '1';
}
function getError() {
return 's';
}
$form =
'<form method="post">
<label>
<span>Név: </span>
<input type="text" name="name" placeholder="Gipsz Jakab" value="'
. getValue() . '">'. getError(). '</label>';
echo $form
?>
Valahogy így:
a gondot feltehetőleg az okozza, hogy a $form csak egy karakterláncot tartalmazó változó, amikor hozzáfűzöd a getValue() és getError() függvényeket, akkor nem kell eléjük echo, hisz a karakterlánchoz a függvények visszatérési értéke kerül hozzáfűzésre, az elébük rakott echo meg nem tér vissza visszatérési értékkel (lásd itt: [link] a "Return Values" fejezetet)
#7: Bár hasonlít, de nem az ötös kódját kommenteztem ki, a sajátomat.
Más függvénydeklarációk, ettől fogva máshogy került hozzáfűzésre a karakterláncban, a kódmegosztó oldal révén megmaradt az indentálás és lezárásra került a <form> tag.
Komolyan senki nem veszi észre a nyilvánvaló hibát a kódban?
Ha egy karakterláncot fűzöl össze, akkor ugye egyrészt az echo nem lesz jó, mert az az outputra adja ki a tartalmat nem pedig visszatérési értékben, másrészt összefűzésnél nem kell a pontosvessző, hiszen az a kifejezés végét jelzi, azaz utána a . már nyilván szintaktikai hiba lesz.
Helyesen tehát:
$form = '<form method="post"><label><span>Név: </span><input type="text" name="name" placeholder="Gipsz Jakab" value="'.getValue('name').'">'.getError('name').'</label>';
De még ehhez is hozzátenném, hogy PHP változókba darabonként pakolgatni a HTML tartalmat nem jó megoldás, szűretlen user inputot meg pláne nem pakolunk közvetlenül sehova.
Ha ezt JÓL akarod csinálni, akkor a PHP és HTML vegyítése helyett templateket (pl. Smarty, Blade) használsz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!