Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Wyświetlanie zmiennej z rekordu jako tekst
Forum PHP.pl > Forum > Przedszkole
Dombas
Witajcie,
Jak w temacie, mam problem z wyświetlaniem treści rekordu, zmienne w nim zawarte wyświetla mi jako tekst. Np. w jednym z rekordów mam taką treść:
"$imie ma kota". Po połączeniu z bazą daję zapytanie:
  1. $imie = "Ala";
  2. $zapytanie = mysql_fetch_array(mysql_query("SELECT * FROM tabela WHERE id='1'"));
  3. echo $zapytanie["tresc"];

Chcę aby na stronie wyświetlił mi: "Ala ma kota", zamiast tego otrzymuję dokładną kopię tego co w rekordzie, czyli: "$imie ma kota".
Dodam, że tabela wygląda tak:
  1. CREATE TABLE tabela (
  2. id int UNSIGNED NOT NULL AUTO_INCREMENT,
  3. tytul varchar(8000) NOT NULL,
  4. tresc text NOT NULL,
  5. PRIMARY KEY (id)
  6. ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


Próbowałem z funkcją eval() i wystarczyłaby gdyby nie to że jeśli w treści pojawią się znaki "" to dostaje głupawki. Np. jeśli mój rekord wygląda tak:
  1. <p style="padding: 10px;">$imie ma kota</p>

to otrzymuję taki błąd:
"Parse error: syntax error, unexpected 'padding' (T_STRING) in C:\wamp\www\test\index.php(27) : eval()'d code on line 1"
Wystarczy pozbyć się stylowania i wszystko gra. Próbowałem zamieniać znak " na &quot; ale wtedy dalej nie mam stylowania, bo w podglądzie strony wychodzi:
  1. <p style=&quot;padding: 10px;&quot;>$imie ma kota</p>

Jakieś pomysły?
Z góry dzięki za zainteresowanie moim tematem.

OK. Udało mi się rozwiązać problem samemu.
Treść do zmiennej którą pakuję w eval() musi być wstawiana w taki sposób:
  1. ?> <!-- przejście do HTML -->
  2. <p style="padding: 10px;">
  3. <?php echo $imie; // powrót do PHP ?>
  4. ma kota</p><!-- ponowne przejście do HTML -->

i wszystko gra.
Helid
Wykonywanie takiego kodu może być naprawdę niebezpieczne. Upewnij się że otrzymane dane są dokładnie tym czym mają być.
Dombas
Cytat(Helid @ 30.09.2012, 21:18:39 ) *
Wykonywanie takiego kodu może być naprawdę niebezpieczne. Upewnij się że otrzymane dane są dokładnie tym czym mają być.

Masz jakiś bezpieczniejszy sposób?
Straciłem już wystarczająco dużo czasu na grzebanie w google ohno-smiley.gif Chciałbym zawartość strony (jej część) ładować z rekordów jednej z tabel w bazie danych. Jak to zrobić żeby oprócz czystego tekstu móc zawrzeć tam również zmienne, pętle, warunki, etc. pisane w PHP? Na podobnej zasadzie działa przecież zaplecze Joomla, ale mam za małą wiedzę żeby sobie to podpatrzeć tam wstydnis.gif
Thommee
  1. $imie = 'Ala';
  2.  
  3. $var = "$imie ma kota";
  4. echo $var;
  5. // Ala ma kota
  6.  
  7. $var = '$imie ma kota';
  8. echo $var;
  9. // $imie ma kota
  10.  


zwróć uwagę na apostrofy zamiaast cudzysłowów w drugim przypadku otaczające wartość $var.
Dombas
Cytat(Thommee @ 14.10.2012, 09:01:34 ) *
  1. $imie = 'Ala';
  2.  
  3. $var = "$imie ma kota";
  4. echo $var;
  5. // Ala ma kota
  6.  
  7. $var = '$imie ma kota';
  8. echo $var;
  9. // $imie ma kota
  10.  


zwróć uwagę na apostrofy zamiaast cudzysłowów w drugim przypadku otaczające wartość $var.


Nie bardzo rozumiem czego tyczy się Twój post. Wiem do czego służą apostrowy i cudzysłowy. Mój temat mówi o czymś zupełnie innym, ale dzięki za zainteresowanie.

Odświeżam temat, gdyż do tej pory nie znalazłem innej metody. Zależy mi bardzo na "podciąganiu" danych z zawartością zaplecza z bazy MySQL tak aby w łatwy sposób można było przeprowadzić aktualizację. Dlatego też chcę zrezygnować z plików, które trzeba będzie każdorazowo podmieniać, a tak po prostu wykona się kod który zaktualizuje zawartość bazy. Pisaliście, że nie jest to bezpieczne rozwiązanie... Zastanawiam się dlaczego, skoro żaden użytkownik "z zewnątrz" nie podsiada dostępu do bazy przez co wyciągnięcie czegokolwiek jest dla niego niemożliwe.
Bardzo dziękuję każdemu za zainteresowanie tym tematem. Jakieś wskazówki nawet będą mile widziane. Może w końcu uda mi się znaleźć jakieś sensowne rozwiązanie i ruszyć dalej wink.gif
nospor
Cytat
Zastanawiam się dlaczego, skoro żaden użytkownik "z zewnątrz" nie podsiada dostępu do bazy przez co wyciągnięcie czegokolwiek jest dla niego niemożliwe.
Bo wystarczy że będziesz miał lukę i haker będzie mógł wstawić niebezpieczny kod ci do bazy.

Alternatywą jest nie taka zawartość pola:
$imie to blabla

A np: taka:
#imie# to blabla

I wówczas nie EVAL a poprostu str_replace
bordovy
Witam.
Ja również w tym temacie, lecz trochę inaczej (nie chciałem zakładać nowego tematu, skoro już taki jest...)

W tabeli video mam m.in. pole video_kod - tutaj kopiuję kod embedu z YouTube. Wszystko działa, lecz chciałbym, by taki kod był również widoczny jako tekst. Gdy daję standardowe wyświetlanie rekordu, to pokazuje mi film.. a nie tekst

Da radę to jakośzrobić?

Przykład embedu z YT:
  1. <iframe width="560" height="315" src="https://www.youtube.com/embed/87oAjeeEDlI" frameborder="0" allowfullscreen></iframe>


Ewentualnie, zeby było widoczne samo:
  1. <a href="https://www.youtube.com/embed/87oAjeeEDlI" target="_blank">https://www.youtube.com/embed/87oAjeeEDlI</a>

Ale bardziej zalezy mi na wyświetleniu całej zawartości pola video_kod, jako tekst

Z góry bardzo dziękuję za odpowiedź.

Pozdrawiam.
com
http://ideone.com/SET6ID
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.