onmouseover nie dziala mi w php

0
$stronka="
<head>
<script src='js/file.js' type='text/javascript'></script>
</head>

<body>
<a href="#" onmouseover="alert('Ahhhhhhhhh')"><img src="s.jpg"/></a> 
</body>
"
echo $stronka

no i jest takie cos ze nie dziala mi to
nie pokazuje tego alerta
a jak by kod byl w html to wszystko hula jak krasna jastriela

wie ktos moze o co tu biega ?

0
$stronka="
<head>
<script src='js/file.js' type='text/javascript'></script>
</head>

<body>
<a href='#' onmouseover='alert('Ahhhhhhhhh')'><img src='s.jpg'/></a> 
</body>
";
echo $stronka

tylko mala poprawka

0

Masz przecież błąd PHP powodowany przez niewyeskejpowane ".

0

to nie to
w drugim poscie podalem kod bez "

chodzi o to ze wyswietla strone prawidlowo ale nie reaguje na onmouseover

0

Nie możesz w HTML-u zrobić czegoś takiego:

<a href='#' onmouseover='alert('Ahhhhhhhhh')'><img src='s.jpg'/></a> 

Konkretnie problemem jest ten fragment:

onmouseover='alert('Ahhhhhhhhh')'

Widać to przecież po samym kolorowaniu składni (koniecznie używaj edytora z kolorowaniem, a na forum używaj znacznika < code = NAZWA_JEZYKA >, czyli np. < code = php >). W HTML-u wartości atrybutów można zamknąć albo w dwóch znakach cudzysłowu ("), albo w dwóch znakach apostrofu ('). I to jest tak, że jeśli użyjesz apostrofu, to pierwszy apostrof otwiera wartość atrybutu, a drugi ją zamyka. Czyli u Ciebie atrybut onmouseover wygląda tak:

onmouseover='alert('

Parsera nie obchodzi (no dobrze: obchodzi i w tym wypadku co najwyżej denerwuje), że dalej masz jeszcze jakieś apostrofy i że "autor miał na myśli" co innego.

Ponieważ w JavaScripcie też masz dowolność i możesz używać zarówno apostrofów, jak i cudzysłowów do oznaczania stringów, możesz np. użyć cudzysłowów do oznaczenia granic atrybutu onmouseover, a apostrofów do oznaczenia parametru alert:

onmouseover="alert('Ahhhhhhhhh')"

Ale... co do cholery? Przecież w PHP używasz już cudzysłowów do oznaczenia stringu!

// uuups!
$stronka="...
onmouseover="alert('Ahhhhhhhhh')"
";

Więc tym razem schrzani się coś w PHP! Zauważ, że masz tam wymieszane... 3 języki: HTML, JavaScript i PHP. Sam sobie to tak utrudniłeś. Generalnie nie powinieneś mieszać JavaScriptu z HTML-em, cały ten onmouseover powinien się znaleźć w osobnym pliku .js i problem by Ci się rozwiązał.

Ale OK, możesz i takie coś zrobić. Musisz tylko unieszkodliwić te cudzysłowy oznaczające atrybut. Nie chcesz, by oznaczały one tam koniec stringu -- chcesz, żeby w tym stringu pojawił się po prostu cudzysłów. Musisz więc unieszkodliwić specjalne znaczenie cudzysłowu w PHP, które oznacza koniec stringu. Możesz to zrobić, dodając przed cudzysłów znak . W ten sposób:

$stronka="...
onmouseover=\"alert('Ahhhhhhhhh')\"
";

(zauważ znaki \ przed cudzysłowami przy onmouseover).

PHP udostępnia jeszcze jeden sposób zapisu stringów, wygodny w takich przypadkach, jak ten. Otóż stringi można zaznaczać tak (widzę w podglądzie, że kolorowanie składni forum na tym wysiada...):

$zmienna = <<<TYM_CIAGIEM_ZNAKOW_SKONCZE_STRING
to jest wnętrze stringu! mogę tu normalnie używać ", ' i czego tylko chcę! łiii!
mogę też pisać w wielu linijkach, jak zwykle!
TYM_CIAGIEM_ZNAKOW_SKONCZE_STRING;
wywolanie_jakiejs_funkcji(); // już poza stringiem!

Fajne, nie? Sam sobie wybierasz ciąg znaków, którym zakończysz string. Podajesz ten ciąg na początku stringu, po trzech znakach <. Potem piszesz, co tylko chcesz -- trafi to do środka stringu. Dopiero gdy parser PHP zobaczy linię, która zaczyna się (nie może być np. spacji na początku!) od Twojego ciągu znaków, a za tym ciągiem jest jeszcze ewentualnie średnik, to wtedy dopiero oznacza to koniec stringu.

W Twoim przypadku, skoro wypisujesz HTML, jest pewną konwencją, by ten za ten ciąg znaków kończący string wybrać po prostu "HTML" (dzięki temu niektóre edytory kolorują tam składnię tak, jak trzeba). Czyli tak:

$stronka=<<<HTML
onmouseover="alert('Ahhhhhhhhh')"
HTML;

Zauważ, że tu już znaki \ nie są potrzebne i możesz pisać swobodnie.

Jest jeszcze inna metoda. Po prostu... opuścić składnię PHP, zamykając na chwilę tag ?>. To Ci się będzie na początku wydawało bez sensu, ale polecam takie coś. Mógłbyś zamiast:

<?php
tu_jakies_obliczenia();
$zmienne_php = 'abc';
// i tak dalej

$stronka=<<<HTML
<a href="#" onmouseover="alert('Ahhhhhhhhh')">...
HTML;
echo $stronka;
?>

Napisać:

<?php
tu_jakies_obliczenia();
$zmienne_php = 'abc';
// i tak dalej

// po prostu zamykamy znacznik php
?><!-- tu już jesteśmy w HTML-u -->
<a href="#" onmouseover="alert('Ahhhhhhhhh')">...

<?php 
// znowu w php
oblicz_costam();
?>

Ogólnie Twoim problemem jest najwyraźniej nieznajomość składni języka PHP. Przecież zapis stringów to każdy powinien mieć opanowany. Kup se jakąś książkę, przeczytaj specyfikację, czy coś...


0

Najlepsze jest to że wszystko jest w topiku obok.
http://4programmers.net/Forum/viewtopic.php?id=150761

0

@lamer jak jasny gwint, z rosyjskim też masz małe kłopoty, powinno być krasnaja strieła (czerwona strzała), a nie krasna jastriela.

1 użytkowników online, w tym zalogowanych: 0, gości: 1