dziwna sprawa, deklaracja zmiennej

dziwna sprawa, deklaracja zmiennej
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
 
<?
				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?

DZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 66
0

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

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
3

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

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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 '?' ?

Kopiuj
echo "<form method= post action=index.php?action=wypisz>
  • Rejestracja: dni
  • Ostatnio: dni
0

a i czemu to jest nie poprawny html?

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
<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...

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
echo "<form method= "post" action="index.php?action=wypisz">"

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

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
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:

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

Poprawny XML a więc XHTML:

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

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

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
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 ;-)

  • Rejestracja: dni
  • Ostatnio: dni
0

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

Quirinnos
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.