Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Instrukcja echo <<<XXX ... XXX;
Forum PHP.pl > Forum > Przedszkole
VitGryfny
Proszę powiedzieć dlaczego nie zakańcza się po naptkaniu XXX; tylko wyświetla cały kod jak tekst wraz z tym wraz z XXX;

W moim przypadku echo <<<FRM ... FRM; Zgodnie z jedną z książek owa instrukcja ma działać.
  1.  
  2. <?
  3.  
  4. if ($_POST['imie']=="")
  5. { echo <<<FRM
  6. <form method='POST'>
  7. Wprowadź nick: <input type="text" name="nick">
  8. <input type="submit" value="Pokaż"
  9. </form>
  10. FRM;
  11. }
  12. else
  13. {
  14. echo ($_POST['imie']);
  15. }
  16.  
  17. ?>

smietek
Po co kombinować jak koń pod górę?
  1. echo '<form method="post">
  2. Wprowadź nick: <input type="text" name="nick">
  3. <input type="submit" value="Pokaż"
  4. </form>';
VitGryfny
Dziękuję. Wprowadziłem zmianę i mimo to wyświetla mi coś takiego:
(W nawiasie kwadratowym symulacja buttona ->) [Pokaż] '} else{ echo ($_POST['imie']);} ?>
Spawnm
A masz php na servie ? smile.gif
I czy plik kończy się na .php ?
VitGryfny
Tak. Używam wampserver. Bez tego nawet to by mi się nie wyświetliło smile.gif tylko sam kod. Tak, plik kończy się na php.
Daiquiri
Cytat(VitGryfny @ 24.09.2010, 11:28:00 ) *
Dziękuję. Wprowadziłem zmianę i mimo to wyświetla mi coś takiego:
(W nawiasie kwadratowym symulacja buttona ->) [Pokaż] '} else{ echo ($_POST['imie']);} ?>
Jeżeli wyświetla Ci się else to znaczy, że masz źle domknięte echo. Powinno być
  1. echo 'wszystko co ma być wyświetlone, a nie jest zmienną itd.';
VitGryfny
Ręcę opadają. Jakolwiek bym tego nie zamknął ciągle wyświetla mi część kodu. Wyświetla sam button, bez formularza do wpisania danej.
Spawnm
Pokaż cały kod.
VitGryfny
Oto kod. Domknąłęm trochę lepiej to echo i widzę już pasek formularza.
  1. <html>
  2. <head>
  3. <title></title>
  4. </head>
  5. <body>
  6.  
  7. <?
  8.  
  9. if
  10. ($_POST['nick']=="")
  11. {
  12. echo ("<form method='POST'>
  13. <input type="text" name="nick" size="20">
  14. <input type="submit" value="Pokaż">
  15. </form>");
  16.  
  17. }
  18.  
  19. else
  20.  
  21. {echo '$_POST['nick'];}
  22.  
  23. ?>
  24.  
  25. </body>
  26. </html>
Spawnm
Widzę że masz wyłączone błędy ...
Twój kod ma pełno podstawowych błędów.

nie:
echo ("<form method='POST'>
<input type="text" name="nick" size="20">...
tylko
echo ("<form method='POST'>
<input type=\"text\" name=\"nick\" size=\"20\">...

dalej to samo, popraw wszędzie.


Dawaj na początku kodu zawsze
  1. error_reporting(E_ALL|E_STRICT);
dzięki temu będziesz dostawać komunikaty co jest źle.
Daiquiri
Pozwolę sobie uzupełnić, to co już właściwie napisał Spawnm. Echo z "" pozwala na wstawienie wewnątrz zmiennych (bo kod jest analizowany pod tym kątem) - natomiast nie możesz wstawić wewnątrz kolejnych "" bo skąd wtedy "będzie wiadomo" gdzie kończy się echo? Zasadniczo uważaj na to jak zamykasz i otwierasz echo. No i tak na marginesie zauważ jak kolorowana jest składnia. Po tym "na oko" będziesz w stanie stwierdzić, że coś jest nie tak.
VitGryfny
Backslashe w lini 9 sprawia, że zamiast guzika pojawia się pole tekstowe z wpisanym już \"Pokaż\"
else wciąż się pojawia chociaż, jak dla mnie, wszystko wydaje się dobrze pozamykane
Linia 2 - error reporting nie działa. Może mam wyłączyć jakieś aplikacje typu windows massenger (skype przeszkadza w działaniu wampa)

  1. <?
  2. error_reporting(E_ALL,E_STRICT);
  3.  
  4. if
  5. ($_POST['nick']=="")
  6. {
  7. echo ("<form method='POST'>
  8. <input type=\"text\" name=\"nick\" size=\"20\">
  9. <input type="submit" value="Pokaż">
  10. </form>");
  11. }
  12.  
  13. else
  14.  
  15. {echo ("$_POST['nick']")}
  16.  
  17. ?>
Spawnm
Cytat
popraw wszędzie.


  1. echo ("<form method='POST'>
  2. <input type=\"text\" name=\"nick\" size=\"20\">
  3. <input type="submit" value="Pokaż">
  4. </form>");
VitGryfny
Cytat(Spawnm @ 24.09.2010, 13:45:22 ) *
  1. echo ("<form method='POST'>
  2. <input type=\"text\" name=\"nick\" size=\"20\">
  3. <input type="submit" value="Pokaż">
  4. </form>");


Backslashe w (tu) lini 3 sprawia, że zamiast guzika pojawia się pole tekstowe z wpisanym \"Pokaż\"
Daiquiri
VitGryfny - za dużo kombinujesz ze zwykłym echo. Jeżeli korzystasz z "" to musisz WSZĘDZIE (jak już napisał Spawnm) wstawić backslashe. Możesz też skorzystać z echo '' i wstawiać dowolną liczbę "" w środku. Np.
  1. echo '<input type="submit" value="Pokaż">';


@down:
To chyba logiczne? smile.gif Tylko z tego co widać, VitGryfny częściej korzysta z "" niż z ''.
Ulysess
ALE jeśli w zawartości będzie miał '' wtedy przed każdym ' musi wstawić backslasha smile.gif
VitGryfny
Nie wiem. Ktoś z was może to po prostu przetestować? Gdy używam:
  1. echo '<...>'

to w ogóle nie wyświetla pola tekstowego. Wyświetla natomiast gdy ujmę w:
  1. echo ("<...>")

Czy ktoś jest w stanie przedstawić działający kod z poprawkami na to co napisałem ja?
thurinon
  1. <?php
  2. if ($_POST['imie']=="")
  3.  
  4. {
  5. //Otwieramy echo apostrofem
  6. //Dzięki temu możemy używać w środku ile chcemy cudzysłowów bez żadnych komplikacji
  7. echo '<form method="POST">
  8. Wprowadź nick: <input type="text" name="imie">
  9. <input type="submit" value="Pokaż">
  10. </form>'; // na końcu musimy poprawnie zamknąć echo robimy to wstawiając apostrof a za nim średnik
  11. }
  12.  
  13. else
  14.  
  15. {
  16. echo $_POST['imie'];
  17. }
  18. ?>


A w pierwszym poście masz błąd - zmienne $_POST['imie] a w formularzu masz input name="nick".

Sprawdzone i działa
Daiquiri
Cytat(VitGryfny @ 24.09.2010, 15:53:32 ) *
Nie wiem. Ktoś z was może to po prostu przetestować? Gdy używam:
Na końcu ma być średnik!
Otto
Ja bym to napisał tak:

  1. <html>
  2. <head>
  3. <title></title>
  4. </head>
  5. <body>
  6.  
  7. <?php
  8. if (!isset($_POST['nick']) || $_POST['nick'] == "") {
  9. ?>
  10. <form method='post' action='plik.php'>
  11. <input type="text" name="nick" size="20">
  12. <input type="submit" value="Pokaż">
  13. </form>
  14. <?php
  15. } else {
  16. echo $_POST['nick'];
  17. }
  18. ?>
  19. </body>
  20. </html>
smietek
Cytat(Otto @ 24.09.2010, 16:32:37 ) *
Ja bym to napisał tak:

  1. <html>
  2. <head>
  3. <title></title>
  4. </head>
  5. <body>
  6.  
  7. <?php
  8. if (!isset($_POST['nick']) || $_POST['nick'] == "") {
  9. ?>
  10. <form method='post' action='plik.php'>
  11. <input type="text" name="nick" size="20">
  12. <input type="submit" value="Pokaż">
  13. </form>
  14. <?php
  15. } else {
  16. echo $_POST['nick'];
  17. }
  18. ?>
  19. </body>
  20. </html>

A ja bym tak nie napisał, bo mieszanie HTMLa z PHP na takim poziomie to udręka dla dalszej modyfikacji kodu.

To powinno być tak (jeśli nie korzystamy z żadnych szablonów):
  1. <?php
  2. if(empty($_POST['nick'])){
  3. echo '<form method="post" action="plik.php">
  4. <input type="text" name="nick" size="20"/>
  5. <input type="submit" value="Pokaż"/>
  6. </form>';
  7. } else {
  8. echo $_POST['nick'];
  9. }
  10. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.