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
  1. <?php   
  2. ha létezik a submit,akkor   
  3. leellenőrzi a mezőkből bejövő adatokat,   
  4. ha van hiba,azt kiírja,   
  5. ha nincs,akkor insert into-val beteszi adatbázisba a nevet,mailcímet,üzenetet és időpontot   
  6. ?>  
  7.   
  8. <form method="post" action="" enctype="multipart/form-data">  
  9.     <?php if (isset($kimenet)) print $kimenet; ?>  
  10.     <p>Név:<br />  
  11.     <input type="text" id="nev" name="nev" value="<?php if (isset($nev)) print $nev; ?>" required="required" /></p>  
  12.     <p>E-mail:<br />  
  13.     <input type="email" id="email" name="email" value="<?php if (isset($email)) print $email; ?>" required="required" /></p>  
  14.     <p>Üzenet:<br />  
  15.     <p><textarea id="uzenet" name="uzenet" cols="35" rows="20" value="<?php if (isset($uzenet)) print $uzenet; ?>" required="required"></textarea></p>  
  16.     <p><input type="submit" id="rendben" name="rendben" value="Rendben" />  
  17. </form>  
  18.   
  19. <?php   
  20. lekéri az adatokat az adatbázisból,és kilistázza a bejegyzéseket, amit return-nel ad vissza   
  21. ?>  
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:
  1. <html>  
  2. <head>  
  3. <style type="text/css"></style>  
  4. </head>  
  5. <body>  
  6.   
  7. <form></form>  
  8. <meta charset="utf8" />  
  9. <title>oldalcim</title>  
  10. <link href="style.css" rel="stylesheet" />  
  11.   
  12. <div id="wrapper">  
  13. <header>stb</header>  
  14. <nav>stb</nav>  
  15. <section>stb</section>  
  16. <footer>stb</footer>  
  17. </div>  
  18. </body>  
  19. </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?
  1. <?php  
  2. $valtozo='  
  3. <form method="post" action="" enctype="multipart/form-data">    
  4.     '.(isset($kimenet)?$kimenet:'').'  
  5.     <p>Név:<br />    
  6.     <input type="text" id="nev" name="nev" value="'.(isset($nev)?$nev:'').'" required="required" /></p>    
  7.     <p>E-mail:<br />    
  8.     <input type="email" id="email" name="email" value="'.(isset($email)?$email:'').'" required="required" /></p>    
  9.     <p>Üzenet:<br />    
  10.     <p><textarea id="uzenet" name="uzenet" cols="35" rows="20" required="required">'.(isset($uzenet)?$uzenet:'').'</textarea></p>    
  11.     <p><input type="submit" id="rendben" name="rendben" value="Rendben" /></p>  
  12. </form>   
  13. ';  
  14. ?>  
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:
  1. 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:
  1. echo "What's your name?"  
Vagy escape karaktert (\) használsz, és maradsz a sima idézőjeleknél:
  1. 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.