dziwna sprawa, deklaracja zmiennej

0

cześć, uczę się php i napotkałem pewien problem, korzystam z książki Ćwiczenia PHP i MySQL i jest tam jeden przykład, który mnie intryguje, mianowicie:

 
<?
				if($action =="")
				echo "<form method= post action=index.php?action=wypisz>
					<table>
						<tr><td>Imie: </td> <td><input type= text size= 20 name= imie /></td></tr>
						<tr><td>Adres: </td> <td><input type= text size= 20 name= adres /></td></tr>
						<tr><td><input type= submit /></td></tr>
					</table>
				</form>";
				
				else if ($action == "wypisz") echo "CO JA PACZE?";
		?>

I pojawia się zmienna $action już na samym początku, ale czemu ona nie została nigdzie wcześniej zadeklarowana?

0

Bo nie zadeklarowałeś...na pewno jej NIE MA w książce? Przykład działa?

3

Bo czytasz książkę pisaną przez pedała, który używa register_globals i nie potrafi czytelnego HTMLa poskładać.

0

Tłumacząc kolegę powyżej z sarkastycznego na polski:
Książka jest prehistoryczna i wymaga użycia mechanizmu register_globals, którego używanie woła o pomstę do nieba. Aby dostać się do danych w querystringu użyj tablicy superglobalnej $_GET, u ciebie zmień $action na $_GET['action'].

A potem trzeba jeszcze poprawić kod HTML, bo wartości atrybutów powinny być w cudzysłowach lub apostrofach.
A potem trzeba wyrzucić tę książkę i poszukać jakiejś aktualnej.

0

aha ;D
a polecacie jakoś książkę php + mysql?

0

i jeszcze jedno pytanie "$_GET['action']" to te action jest zależne od które action, od tego ze składnie html czy tego po '?' ?

echo "<form method= post action=index.php?action=wypisz>
0

a i czemu to jest nie poprawny html?

1
<form method="post" action="index.php?action=wypisz">

Nie wiem co na to standard, ale mnie uczyli że się zawartości parametrów bierze w cudzysłowy...

0
echo "<form method= "post" action="index.php?action=wypisz">"

ale w tedy gryzą sie te cudzysłowy z echa z tymi od html

0

no dobra, a co możecie polecić do php i mysql, bo widze, ze przez ta ksiazke to tylko zle nawyki sobie porobilem

0

Nawet w SGML atrybuty, które zawierają znaki inne niż alfanumeryczne muszą być zawarte w " ". W XML każde.

Poprawny SGML a więc HTML:

<form method=post action="index.php?action=wypisz">

Poprawny XML a więc XHTML:

<form method="post" action="index.php?action=wypisz">

Ogólnie tak jak napisał Demonical Monk, najlepiej zawsze używać " ".

0

i jeszcze jedno pytanie "$_GET['action']" to te action jest zależne od które action, od tego ze składnie html czy tego po '?' ?

Kiedy masz index.php?action=cośtam&cośtaminnego=jeszczecoś to $_GET['action'] oznacza cośtam, a $_GET['cośtaminnego'] zawiera jeszczecoś. Z kolei dane, które wysyłasz z formularza, który ma ustawiony atrybut "action" na post idą do drugiej tablicy superglobalnej, $_POST. Atrybut action formularza służy tylko do ustawienia czy dane z niego będą szły do $_GET czy do $_POST - czyli albo pójdą w formie dodatków do linka, albo pójdą w treści żądania HTTP.

W twoim kodzie są zmieszane dwie metody, pewnie aby było trudniej dla początkującego ;-)

0

a możesz polecić jakoś dobrą książkę/kurs?

0

PHP i MySQL - Tworzenie stron WWW. Vademecum profesjonalisty wyd. IV - L.Welling L.Thomson
Dobra książka do nauki.

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