ugrás a tartalomhoz

PHP vendégkönyv megjelentíése return-nel

lord · 2014. Már. 11. (K), 23.16
Van egy oldalam, ahol a vendégkönyv menüpontnál az index.php be include-olja a vendegkonyv.php-t, ami úgy néz ki,hogy
<?php 
ha létezik a submit,akkor 
leellenőrzi a mezőkből bejövő adatokat, 
ha van hiba,azt kiírja, 
ha nincs,akkor insert into-val beteszi adatbázisba a nevet,mailcímet,üzenetet és időpontot 
?>

<form method="post" action="" enctype="multipart/form-data">
	<?php if (isset($kimenet)) print $kimenet; ?>
	<p>Név:<br />
	<input type="text" id="nev" name="nev" value="<?php if (isset($nev)) print $nev; ?>" required="required" /></p>
	<p>E-mail:<br />
	<input type="email" id="email" name="email" value="<?php if (isset($email)) print $email; ?>" required="required" /></p>
	<p>Üzenet:<br />
	<p><textarea id="uzenet" name="uzenet" cols="35" rows="20" value="<?php if (isset($uzenet)) print $uzenet; ?>" required="required"></textarea></p>
	<p><input type="submit" id="rendben" name="rendben" value="Rendben" />
</form>

<?php 
lekéri az adatokat az adatbázisból,és kilistázza a bejegyzéseket, amit return-nel ad vissza 
?>
A kérdésem, hogy hogy tudnám return-nel visszaadni a form-ot(amiben ugye php kód is van,mert visszaírja magába az adatokat az űrlap,hogy ne kelljen a vendégnek mindent újraírni,ha hiba van). Így most azt csinálja, hogy a kilistázott bejegyzéseket (mivel az return-nel van visszaadva) a megfelelő helyre (section-ön belülre) írja ki az index.php-ban, a formot viszont kirakja a lap tetejére így:
<html>
<head>
<style type="text/css"></style>
</head>
<body>

<form></form>
<meta charset="utf8" />
<title>oldalcim</title>
<link href="style.css" rel="stylesheet" />

<div id="wrapper">
<header>stb</header>
<nav>stb</nav>
<section>stb</section>
<footer>stb</footer>
</div>
</body>
</html>
Próbáltam berakni változóba az egész formot és hozzáfűzni a return-höz,de azzal az volt a baj, hogy van a formban php kód is,ami "" között nem működik. Ha már ennyit meg tudnék oldani,akkor elméletileg csak hozzáfűzöm és kész. Sajnos ennyire nem értek még a php-hoz, úgyhogy a legegyszerűbb megoldásokon gondolkodom.

Meg lehet ezt returnnel oldani? Ha ez nem működik, akkor a return-ön kívül van más(hasonlóan egyszerű) megoldás?
Köszönöm előre is.
 
1

Esetleg

ha0rex · 2014. Már. 12. (Sze), 03.34
Esetleg így?

<?php
$valtozo='
<form method="post" action="" enctype="multipart/form-data">  
    '.(isset($kimenet)?$kimenet:'').'
    <p>Név:<br />  
    <input type="text" id="nev" name="nev" value="'.(isset($nev)?$nev:'').'" required="required" /></p>  
    <p>E-mail:<br />  
    <input type="email" id="email" name="email" value="'.(isset($email)?$email:'').'" required="required" /></p>  
    <p>Üzenet:<br />  
    <p><textarea id="uzenet" name="uzenet" cols="35" rows="20" required="required">'.(isset($uzenet)?$uzenet:'').'</textarea></p>  
    <p><input type="submit" id="rendben" name="rendben" value="Rendben" /></p>
</form> 
';
?>
Ha a saját megoldásodhoz ragaszkodsz, akkor pedig nézz utána az ob_start() és ob_get_clean() függvényeknek.

Amit <?php?>-n kívül írsz, az alap esetben egyből megy az outputra, tehát jelen esetben a formod is. A bejegyzéseidet viszont egy függvény adja vissza a megfelelő helyre (return-nel). Ezért kavarodik össze.
2

Nagyon szépen köszönöm :)

lord · 2014. Már. 12. (Sze), 11.45
Nagyon szépen köszönöm :) Annyit szeretnék még kérdezni, hogy a html kódban lévő ""-k elé miért nem kell itt \
Van valami köze ahhoz, hogy a változó értékét ''-be raktad és nem ""-be?
3

A \ egy escape karakter. Amit

ha0rex · 2014. Már. 12. (Sze), 22.10
A \ egy escape karakter. Amit írtam, ott a változó értékét sima idézőjelek közé ' tettem. Ilyenkor írhatsz bármennyi dupla idézőjelet " bele tehát ez működik:
echo ' """"""""""" ';
De mi a teendő, ha azt akarod kiírni, hogy What's your name?
Két lehetőség van:
A stringet duplaidézőjelek közé teszed:
echo "What's your name?"
Vagy escape karaktert (\) használsz, és maradsz a sima idézőjeleknél:
echo 'What\'s your name?'
Alap esetben simán lehet trükközni a sima vs. dupla idézőjelekkel, annak függvényében, hogy mit szeretnél kiírni, de ha egy stringen belül van sima és dupla idézőjel is, akkor már muszáj lesz az escape karaktert használnod.
4

Köszönöm szépen, ez igazán

lillilla · 2014. Már. 12. (Sze), 22.16
Köszönöm szépen, ez igazán hasznos :)
5

Értem, köszönöm.

lord · 2014. Már. 14. (P), 17.52
Értem, köszönöm.