Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wczytanie nowej strony
Forum PHP.pl > Forum > Przedszkole
-Piotrek-
Witam, od wczoraj bawiłem się w sprawdzanie poprawności wypełnienia formularza. Stworzylem klasę kontruląją wszsytkie możliwe błędy
w tym kawałku jest użyta w tym miejscu:

  1. <?php
  2. $Kontroler->PustePole($_POST['firstname'],'Podaj Imie');
  3. ?>


I mam taki problem, bo w końcu jak ten formularz jest poprawnie wypełniony to chciałbym przejść do następnej strony , gdzie klient mógłby otrzymać informacje o wprowadzonych danych, ale przez ten kawałek kodu (który poprawnie spełnia swoje właściwosci) nie mogę nic zrobić.

  1. action="<?php echo $_SERVER['PHP_SELF'];?>?action=check"


Próbowałem wklejać różne warunku w ten mały kawałeczek, ale po pierwsze się nie sprawdziło a po drugie wyglądało to żałośnie.

  1. <form action="<?php echo $_SERVER['PHP_SELF'];?>?action=check" id="formularzyk" method="post">
  2. <h2>Dane Klienta</h2>
  3. <table class="danepodstawowe">
  4. <tr>
  5. <td class="label"><label for="firstname">Imie:</label></td>
  6. <td class="value"><input type="text" name="firstname" value="<?=$firstname?>" id="firstname"/></td>
  7. <td class="remarks">wymagane
  8. <span class="errors">
  9. <?php
  10. $Kontroler->PustePole($_POST['firstname'],'Podaj Imie');
  11. ?>
  12. </span>
  13. </tr>
  14. </table>
  15. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  16. </form>
wipo
A niby czemu przez ten kawalek
Kod
action="<?php echo $_SERVER['PHP_SELF'];?>?action=check"

nie mozesz wyswietlic tablicy $_POST, lub tez zrobić przekierowania
  1. <?php
  2. header("Location :strona");
  3. ?>

questionmark.gif?
-Piotrek-
Wstyd się przyznać ale nie rozumiem do końca. Wiem, że to można zrobić, wiem napewno że można przekierować ale narazie moja wiedza jest znikoma dlatego czy mogę dostać dokładniejsze wskazówki? Jeżeli chodzi o tablicę $_POST to nie mam problemu z jej wyświetlaniem , tak jak pisałem sprawdzanie błędów działa poprawnie, ale mam problem jak zrobić to przekierowanie na inna stronę po poprawnym zweryfikowaniu formularza.432189
wipo
poczytaj o poleceniu header na php.net
  1. <?php
  2. header("Location: index.php?costam=costam");
  3. ?>
-Piotrek-
Witam, w pewien sposób rozwiązuje to mój problem bo już wiem jak się odwołam do tego, dzięki. Ale dalej nie mogę sobie poradzić z tym.

To jest moja klasa Kontroler bledow. Tworze zmienna array(probowalem tez ze zwyklymi false oraz true), i nastepnie gdy jest blad zapisuje do tablicy.
Na koncu jest funkcja ktora sprawdza czy jest czy coś jest w tablicy czy nie . (Na początku robilem warunki true oraz false).
  1. <?php
  2. class KontrolerBledow{
  3. var $error=array();
  4. function PustePole($ciag,$komunikat){
  5. if(strlen($ciag) == 0 AND $_GET['action'] == 'check'){
  6. echo "<font color='red'>$komunikat</font>";
  7. [u]$this->error = 'blad';[/u]
  8. }
  9. }
  10.  
  11. }
  12. function JestError(){
  13. if(count($this->error) != 0){
  14. return true;
  15. }
  16. else {
  17. return false;
  18.  
  19. }
  20. }
  21. }
  22.  
  23. $Kontroler=new KontrolerBledow();
  24.  
  25. ?>


Nastpenie w moim glownym pliku : sprawdzam czy cos sie pojawilo w talicy czy nie. Jeżeli wszystkie by działało to móglbym użyć funkcji header, ale już dzisiaj cały dzień siedzę i nie mogę dojść.

  1. <form action="<?php echo $_SERVER['PHP_SELF'];?>?action=check" id="formularzyk" method="post">
  2. <h2>Dane Klienta</h2>
  3. <table class="danepodstawowe">
  4. <?php
  5. if(!$Kontroler->JestError() && $_GET['action'] == 'check'){
  6. echo "sa bledy w tablicy";
  7. }
  8. else 
  9. echo "nie ma bledow w tablicy";
  10. ?>
  11.  
  12. </table>
  13. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  14. </form>
wipo
header uzyj przed tym jak wysylasz cos na ekran.

w tej kolejnosci:

1. sprawdzanie błędów.
2. jezeli sa bledy to pokaz błędy
3. pokaz formularz
-Piotrek-
Trochę źle sformuowałem swojego posta bo tak:
1. Wiem jak użyć header
2. Wiem jak to teoretycznie ma wyglądać a mi chodzi o praktykę.
3. Chodzi o to że w tym momencie wpisuje do tablicy blad jak jest puste pole. ale to nei działa!!!, ponieważ co by nie było zawsze mi wywala "są blędy w tablicy" .
4. Problem polega na tym, że teoretycznie wiem jak zrobić przypisanie taki warunek( tj. jężeli nei ma blędów to przypisz coś tam , jeżeli przypisz coś tam jest równe true to uruchom nagłówek), ale w praktyce jak już pisałem to nie działa i prosiłbym o konkrętą odpowiedź, pomoc w implementacji. Nie jestem osobą która jak czegoś nie potrafi od razu pisze, ale najpierw walczy z tym parę godzin a dopiero potem pyta. Ale całego życia nie można spędzić na rozwiazywanie problemów które są rozwiązane.
-Piotrek-
Dodam jeszcze że czy pola będą puste czy nie będą zawsze jest są blędy w tablicy. Coś jest nie tak albo z logiką kodu albo z jej implementacją. Dzięki za pomoc.
wipo
z tego co widzę to bledow nie masz w tablicy a potem sprawdzasz dlugosc tablicy. Moze to to.

  1. <?php
  2. function JestError(){
  3. if($this->error!=''){
  4. return true;
  5. }
  6. else {
  7. return false;
  8.  
  9. }
  10. }
  11. ?>
-Piotrek-
Opisze dokładnie jak co robię, bo coś zauważyłem ale dalej nei wiem dlaczego tak jest:
1. Mam klase (która jest includowana do pliku zakładanie_konta.php). W tej klasie jest funkcja PustePole , która sprawdza czy jest puste pole czy nie.
  1. <?php
  2. function PustePole($ciag,$komunikat){
  3. if(strlen($ciag) == 0 AND $_GET['action'] == 'check'){
  4. echo "<font color='red'>$komunikat</font>";
  5. if($komunikat == 'Podaj Imie'){
  6. $this->error = 1;
  7. echo 'jest puste';
  8. }
  9. }
  10. else if(strlen($ciag) != 0 && $_GET['action'] == 'check') {
  11.  if($komunikat == 'Podaj Imie' ){
  12.  echo 'jest pelne ';
  13. $this->error = 2;
  14.  }
  15. }
  16. }
  17. ?>

I tak się składa żę jak jest puste pole to widzę na ekranie jest puste pole, wtedy przypisuję do zmiennej error 1, w przeciwnym wypadku wypisuje jest pelne i do zmiennej przypisuję 2. Teraz przechodzimy do pliku zakładanie_konta.

  1. <?php
  2. include "class.KontrolerBledow.php";
  3. ?>
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl">
  5.  
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"/>
  8. <link rel="stylesheet" type="text/css" media="all" href="arkusz.css"/>
  9. </head>
  10. <body>
  11.  
  12.  
  13. <div id="upbg"></div>
  14. <div id="outer">
  15.  
  16.  
  17.  
  18. <div id="header">
  19. <div id="headercontent">
  20. </div>
  21. </div>
  22. <div id="headerpic"></div>
  23. <div id="menu">
  24. <ul>
  25. <li><a href="#">Wydarzenia</a></li>
  26. <li><a href="#" class="active">Nowinki</a></li>
  27. <li><a href="#">Znajomi</a></li>
  28. <li><a href="#">Wiadomosci</a></li>
  29. </ul>
  30. </div>
  31.  
  32. <div id="menubottom"></div>
  33. <div id="left_menu">
  34. <div class="menuu">
  35. <h6>Nowosc:</h6>
  36. </div>
  37. <hr/>
  38. <div class="menuu">
  39. <h6>Ciekawostki</h6>
  40. </div>
  41. </div>
  42.  
  43. <div id="logowanie">
  44. <div class="menuu">
  45. <h6>Nowosc:</h6>
  46. </div>
  47. <hr/>
  48. <div class="menuu">
  49. <h6>Ciekawostki</h6>
  50. </div>
  51. </div>
  52.  
  53. <div id="formularze">
  54. <form action="<?php echo $_SERVER['PHP_SELF'];?>?action=check" id="formularzyk" method="post">
  55. <h2>Dane Klienta</h2>
  56. <table class="danepodstawowe">
  57. <?php
  58. if(!$Kontroler->JestError() && $_GET['action'] == 'check'){
  59.  
  60. echo "sa bledy w tablicy" , $Kontroler->JakaLiczba(),".";
  61. }
  62.  else if($_GET['action']== 'check' && $Kontroler->jestError()){ 
  63. echo "nie ma bledow w tablicy";
  64. }
  65. ?>
  66. <tr>
  67. <td class="label"><label for="firstname">Imie:</label></td>
  68. <td class="value"><input type="text" name="firstname" value="<?=$firstname?>" id="firstname"/></td>
  69. <td class="remarks">wymagane
  70. <span class="errors">
  71. <?php
  72. $Kontroler->PustePole($_POST['firstname'],'Podaj Imie');
  73. ?>
  74. </span>
  75. </tr>
  76.  
  77. </table>
  78. <input type="submit" name="Zaloz konto" value="Zaloz konto" id="nowekonto"/>
  79. </form>
  80.  
  81. </div>
  82.  
  83.  
  84.  
  85. </div>
  86. </body>
  87.  
  88. </html>


I tak , na ekranie widzę napisy że że pole jest puste albo jest pełne, w tej samej funkcji przypisuję 1 albo 2. A jak sprawdzam jaka wartośc jest to tam nic nie ma!!!!
  1. <?php
  2. if(!$Kontroler->JestError() && $_GET['action'] == 'check'){
  3.  
  4. echo "sa bledy w tablicy" , $Kontroler->JakaLiczba(),".";
  5. }
  6. ?>

W tym momencie widzę taki napis : "sa bledy w tablicy." , tak jakby tej zmiennej nie było. Zrobiłem w klasie funkcję
  1. <?php
  2. function UstawLiczba($liczba){
  3. $this->error =$liczba; 
  4. }
  5. ?>


następnie próbuję ustawić liczbę 5 to wszystko pięknie dziąła i pokazuje mi 5, a jak ma ustawić w samej funkcji 1 albo 2 to tak jakby nic się nei wyświetla.

  1. <?php
  2. if(!$Kontroler->JestError() && $_GET['action'] == 'check'){
  3. $Kontroler->UstawLiczba(5);
  4. echo "sa bledy w tablicy" , $Kontroler->JakaLiczba(),".";
  5. }
  6. ?>


Proszę o pomoc!
-Piotrek-
Dodam, żę z tą tablicą próbowałem ale dalej było tak samo.
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.