Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Nauka PHP


Bartek

Rekomendowane odpowiedzi

  • Manager

Jeszcze w jednolinjkowych kodach jak ten nie trzeba kończyć linii średnikiem ;, ale jest to zalecane dla wyrobienia nawyku.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Mam przykład takiej pętli:

<?php

for( $x = 1; $x <= 10; $x++ )
echo $x."
";

?>

W ramach treningu postanowiłem ją zmodyfikować tak, aby wypisała liczby np. co drugą do 10. Czyli 2, 4, 6, 8, 10.

Zmieniłem $x na 2. I tyle mi się udało ^_^.

A dodawanie + do $x++ wyświetla errory.

Jeżeli jest to jakoś bardzo skomplikowane, to zostawię to i przejdę do następnego rozdziału, ale wolałbym najpierw poznać dogłębnie ten.

Edytowane przez Bartek

...

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz np zrobić tak:

<?

for( $x=1; $x<=10; $x++ ){
if($x%2==0)
echo $x;		
}

?>

Voila

Dzięki temu poznasz if, oraz modulo (%) - czyt. resztę z dzielenia :]

[+] klamry w tym przypadku nie są potrzebne, ale ja mam taki nawyk by zawsze dawać, bo przy sporych plikach idzie się pogubić ^_^

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Jeżeli jest to jakoś bardzo skomplikowane, to zostawię to i przejdę do następnego rozdziału, ale wolałbym najpierw poznać dogłębnie ten.

Dobra rada od wujka DawPiego - jeśli chcesz to możesz od razu przejść do klas, przeciążania metod, dziedziczenia, kontenerów, ale czy jest sens pisać eseje jeśli nie znasz alfabetu?

  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Unbreak, ucz kolegę optymalizacji a nie byle jak, byleby działało. Robienie pętli tylko po to żeby połowa jej obrotów szła na marne i jeszcze dodatkowy czas parsera poświęcony na warunek if z modulo to marnotrawstwo.

Gotowa pętla:

for($x = 2; $x <= 10; $x += 2){
 echo $x;               
}

Odnośnik do komentarza
Udostępnij na innych stronach

Kolega z optymalizacją powinien sobie sam radzić... Jak się ma nauczyć cokolwiek optymalizować jak się mu daje już zoptymalizowane rozwiązanie? To na czym ma się uczyć optymalizować? Huh!?

A dodatkowo mój przykład pokazuje mu jeszcze modulo.

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

Unbreak, przyznanie się do błędu to żadna hańba... Dałeś złą odpowiedź na zadany problem, według mnie nie ma dyskusji.

"Kolega prosił mnie o podpowiedzenie najkrótszej drogi z Łodzi do Warszawy. Kazałem jechać przez Gdańsk, dzięki mnie nabył nowych doświadczeń i poznał drogi."

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Również skorzystam z tego tematu :)

Jak niektórzy wiedzą, od kilku dni walczę z formularzami HTML. Chciałbym wprowadzić kolejną opcję - nie wiem, czy podchodzi ona pod PHP, czy może da się to jeszcze uzyskać w HTML.

Mianowicie, mam prosty formularz z jednym inputem w formie tekstu. Chciałbym teraz wyciągnąć jego zawartość i po kliknięciu w Submit przekierować użytkownika na wpisany w formularzu adres URL.

Przykład:

User wchodzi na MojaStrona.pl i wklepuje w formularzu invisionize.pl, klika Submit i wyświetla mu się forum ize. Taki substytut paska adresu.

Ciężko będzie coś takiego zrobić?

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Nie no, no bo co dokładnie byś chciał? Czego nie wiesz?

Wysłaną wartość z formularza masz zapisaną w globalnej tablicy GET lub POST. Załóżmy, że pole w formularzu (HTML) nazywa się 'adres_www', zatem wartość ta po wysłaniu metodą POST zostanie zapisana do:

$_POST['adres_www']

I teraz przekierowanie.. Pasowałoby sprawdzić poprawność wpisanego adresu -> czy wpisany z http:// czy nie, czy tylko z www. etc.

A przekierowanie normalnie, headerem:

header( 'Location: ' . $_POST['adres_www'] );

Ale wcześniej trzeba sprawdzić i sformatować adres do przekierowania..

Ogólnie to tak wygląda.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Amfidiusz: a co, jak użytkownik będzie świadomy tego, że trzeba wpisać adres i wpisze z http://? Wtedy przekierowanie nie zadziała. Najlepiej by było sprawdzić to w skrypcie i odpowiednio obrobić, jak już pisałem, lub choć dodaj w formularzu stała wartość 'http://', a w skrypcie usuń ten fragment. Mam nadzieję, że rozumiesz, co chcę powiedzieć.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Rozumiem o co Ci chodzi, ale nie muszę tego tak komplikować. Zadanie formularza będzie lekko inne od w/w opisanego. Poza tym na sztywno przed polem tekstowym będzie wrzucone http. Ergo, jestem na 100% przekonany, że user źle nie wpisze :)

Jak tylko uda mi się uruchomić projekt, to pochwalę się na forum i zobaczysz jak to wygląda :)

Odnośnik do komentarza
Udostępnij na innych stronach

Amfidiusz, zdziwiłbyś się co ludzie potrafią wpisać nawet gdy czarno na białym widać jak coś działa :thumbsup: Ale zrobisz jak będziesz chciał.

Natomiast piszę w innej sprawie. Oczywiście powyższe musi być oprogramowane w PHP ale pomyśl o takiej samej funkcjonalności w JS. Wtedy by ludzi przekierowywało bez męczenia Twojego serwera a jedynie te kilka procent dziwaków, którzy mają wyłączone JS byłoby przekierowane poprzez PHP. Szybko i wydajnie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 rok później...

<html> 
<head>
<title>Title</title>
</head>
<body> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
   Password: <input type="password" name="password">
   <input type="submit" name="submit" value="Submit"> 
   </form> 

<?php 

if (!isset($_POST['submit'])) { 

$password = $_POST['password'];
   } 
else { 

   if ($password == pass) { 
      $forward = 'OK';
   }
      else
      {
    $forward = 'Not!';  	
      }
   echo '$forward';
?> 

</body> 
</html>

Już nie wytrzymuję... Czemu mi wyskakuje:

Parse error: syntax error, unexpected $end in /index.php on line 31

??!!

Edytowane przez Bartek

...

Odnośnik do komentarza
Udostępnij na innych stronach

Brakuje jednej klamry.

<html> 
<head>
<title>Title</title>
</head>
<body> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
   Password: <input type="password" name="password">
   <input type="submit" name="submit" value="Submit"> 
   </form> 

<?php 

if (!isset($_POST['submit'])) { 

$password = $_POST['password'];
   } 
else { 

   if ($password == pass) { 
      $forward = 'OK';
   }
      else
      {
    $forward = 'Not!';         
      }
}
   echo $forward;
?>
</body> 
</html> 

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.