Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z HEREDOC
Forum PHP.pl > Forum > Przedszkole
damien90
Witam! Mam problem z heredoc. Gdy tworzę zmienną i przypisuję do Niej składnię heredoc i tak dalej, to mi raz działa a raz wywala błąd.
Kod
<?php

  $zmiennanowa = <<<WEOER
  sadsda"sada"sd
  asda'sda'sdas
  dasdsa
  WEOER;
  
?>

Wie może ktoś czemu to tak?
batman
Wklej cały kod oraz komunikat błędu. Wróżkami nie jesteśmy. To co wkleiłeś działa bez problemu.
damien90
Taki błąd mi zwraca interpreter

Kod
Parse error: syntax error, unexpected $end in  C:\xampp\htdocs\xampp\php_kurs\ciagi.php on line 11
batman
Gdzieś w niewidzialnym kodzie brakuje Ci zamykającej klamry lub średnika. Co de średnika to nie jestem pewien.
damien90
w jakim niewidzialnym? ja tylko tyle napisałem co jest wyżej to nie działa. Albo jak utworzyłem nowy drugi dokument w php i napisałem z użyciem heredoc to działał. I na koniec utworzyłem trzeci też napisałem z heredoc i nie działał. Denerwujące to jest...
batman
Cytat(damien90 @ 29.11.2008, 20:00:57 ) *
w jakim niewidzialnym? ja tylko tyle napisałem co jest wyżej to nie działa. Albo jak utworzyłem nowy drugi dokument w php i napisałem z użyciem heredoc to działał. I na koniec utworzyłem trzeci też napisałem z heredoc i nie działał. Denerwujące to jest...

Niewidzialnym, czyli takim, którego nie widać...
Wklej ten kod i zobaczymy gdzie jest błąd.
damien90
Poniższy kod
Kod
<?php


$formatek = <<<FORMEK
<form action="skrypt.php" method="post">
<input type="text" name="lala" />
</form>
FORMEK;

?>


też nie działa. Dziwne..
batman
I to jest cała zawartość pliku, czy jest coś więcej? Dołączasz jakieś pliku poprzez include/require?
damien90
tak to jest cała zawartość pliku...
batman
Przykro mi to mówić, ale nie pomogę Ci. U mnie działa. Nie sypie błędami, nic do error loga nie zapisuje. Ten kod działa.
damien90
a w jakim edytorze tworzysz skrypt php ?
batman
Sprawdzałem w PSPad.
damien90
podałbyś linka do tego edytora jak możesz?
piotrooo89
http://www.letmegooglethatforyou.com/?q=pspad
damien90
Dziękuję. Ściągnąłem, zainstalowałem i wpisałem taki kod

Kod
<?php
echo "To będzie test";

$zmienna2 = <<<FORMSTART
ssdasdsadasdasdasdasdasdas
dasdasdasdadasdasdasdas
FORMSTART;

?>


i nie działa też..:/ zwraca mi taki błąd
Kod
[b]Parse error[/b]: parse error in  [b]c:\usr\krasnal\www\kursphp\nowy2.php[/b] on line [b]10[/b]
batman
Nie wiem co i dlaczego Ci nie działa. Kod jest poprawny i wyświetla, to co ma wyświetlić.
piotrooo89
ja po wpisaniu tego:

  1. <?php
  2. echo "To będzie test";
  3.  
  4. $zmienna2 = <<<FORMSTART
  5. ssdasdsadasdasdasdasdasdas
  6. dasdasdasdadasdasdasdas
  7. FORMSTART;
  8.  
  9. echo $zmienna2;
  10. ?>


nie mam żadnego błędu.
damien90
a szkoda, że tylko ja mam taki problem. Chciałbym takie coś używać. Może jakoś przeżyję..tongue.gif
l0ud
Usuń krasnala i zainstaluj XAMPP'a - i tak Ci się opłaci. Nie widzę innego powodu niż serwer, no chyba, że otwierasz zły plik tongue.gif
damien90
próbowałem na xampie i na webserv i tak samo jest :/. Może mój Windows się pierdzieli.
l0ud
Co najmniej dziwne.

Po kolei:

- utwórz na serwerze test.php o tej treści:
  1. <?php
  2. echo "To będzie test";
  3.  
  4. $zmienna2 = <<<FORMSTART
  5. ssdasdsadasdasdasdasdasdas
  6. dasdasdasdadasdasdasdas
  7. FORMSTART;
  8.  
  9. echo $zmienna2;
  10. ?>

- uruchom go (wywołując w przeglądarce).
Jeżeli wynik nie będzie taki jak być powinien:
- sprawdź rozmiar pliku test.php. Powinien wynosić 145 bajtów. Jeżeli jest inny, otwórz go po prostu notatnikiem i zobacz czy nie ma czegoś niepotrzebnego.
- zamień zawartość pliku na:
  1. <?php
  2. echo "To będzie test";
  3. ?>

I zobacz czy działa.
Jeżeli działa zamień zawartość pliku na:
  1. <?php phpinfo(); ?>

I wklej, jaką wersję PHP to wyrzuci.
erix
Cytat
Albo jak utworzyłem nowy drugi dokument w php i napisałem z użyciem heredoc to działał. I na koniec utworzyłem trzeci też napisałem z heredoc i nie działał.

Może to dość trywialne, ale zawsze lepiej sprawdzić - słowo-klucz zamykające musi się zaczynać od samego początku linii; nie może być przed nim żadnego wcięcia/etc.
damien90
lOud wkleiłem ten kod sprawdziłem i działa. Nawet od nowa napisałem i zadziałał. Jakie to dziwne.. Spróbuje sam napisać coś innego i zobaczę czy zadziała.

Wpisałem coś takiego od nowa

Kod
<?php
echo "Sprawdzimy teraz czy zadziala coś teraz";

$form_zmien = <<<START
<form action="skrypt.php" method="post">
<br/>
<br/>
  <input type="text" name="pole"/>
</form>
START;

echo $form_zmien;

?>


i błąd zwraca taki:
Cytat
Parse error: parse error in c:\usr\krasnal\www\kursphp\form_herdoc.php on line 14
l0ud
Umieść na jakimś serwerze plików ten form_herdoc.php i podaj tutaj link smile.gif
damien90
Proszę tu masz: Link do skryptu
l0ud
Nic mi to nie daje. Jeżeli umieszczasz na swoim serwerze, spakuj to zipem.
erix
Ten kod działa u mnie bez problemu. Tak samo, jak powyższe. PHP 5.2.6
damien90
Proszę..
skrypt
l0ud
Porada kolegi erix wyżej była jak najbardziej trafna winksmiley.jpg Ty albo Twój edytor po <?php przed każdą linią dodaje spację, która powoduje problem smile.gif Ja osobiście polecam używać edytora notepad++, albo po prostu tego pilnować.
damien90
no ja używam notepada i notatnika i wszędzie mam taki błąd..
l0ud
Nie możesz nie widzieć tych spacji przed każdą linią. Po prostu ich nie stawiaj. Przecież w notepadzie++ nawet kolorowanie składni się papra, jak postawisz spację przed START;
damien90
ja spacji w ogóle nie stawiałem przed <?php i przed START napisałem po prostu tak <<<START
a na koniec napisałem tylko START; bez żadnych spacji i zamknąłem skrypt php znacznikiem ?>

już działa, bo spacja była przed START;, więc usunąłem spację i działa smile.gif. Dzięki za pomoc.
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.