Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][PHP]Formularz
Forum PHP.pl > Forum > Przedszkole
kaiba55
Witam.

Mój problem to data. Otóż jak odświerzam stronę, bez klikania wyslij w formularzu data i tak się pojawia. Próbowałem dać datę z ukrytym polem ale było podobnie.

Mój kod:

  1. <html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="styl.css" />
  4. <title>Shoutbox</title>
  5. </head>
  6.  
  7. <form action="index.php method="GET">
  8. <input type=text name="nick"/><br>
  9. <input type=text name="wpis"/><br>
  10. <input type=submit value="wyslij"/>
  11. </form>
  12. <?php
  13. $imie=$_GET['nick'].'<br>';
  14. $wpis=$_GET['wpis'].'<br>';
  15. $data=date("H:i:s").'<br>' ;
  16.  
  17. $imie3=fopen("imie.txt", "a");
  18. fputs($imie3,$imie);
  19. fclose($imie3);
  20.  
  21. $wpis3=fopen("wpis.txt","a");
  22. fputs($wpis3,$wpis);
  23. fclose($wpis3);
  24.  
  25. $data3=fopen("data.txt", "a");
  26. fputs($data3, $data);
  27. fclose($data3);
  28.  
  29. $imie2=fread(fopen("imie.txt", "r"), filesize("imie.txt"));
  30. $wpis2=fread(fopen("wpis.txt", "r"), filesize("wpis.txt"));
  31. $data2=fread(fopen("data.txt", "r"), filesize("data.txt"));
  32. ?>
  33.  
  34. <div id="nick">
  35. <?php
  36. echo "nick".'<br>';
  37. echo $imie2;
  38. ?>
  39.  
  40. </div>
  41.  
  42.  
  43. <div id="wpis">
  44. <?php
  45. echo "wpis".'<br>';
  46. echo $wpis2;
  47. ?>
  48. </div>
  49.  
  50.  
  51. <div id="data">
  52. <?php
  53. echo "data".'<br>';
  54. echo $data2;
  55. ?>


Zedytowałem bo poprawiałem kod z powodu pewnej bzdury.

Co do css to już nieaktualne
Z góry dzięki za pomoc.
Pozdrawiam.
sobol6803
A o if'ach zapomniało się? Gdzie masz sprawdzanie, czy formularz został wysłany? Teraz wykonuje cały kod za każdym razem, nawet jak nie wyślesz formularza. Za zmienne, do których przypisujesz GET'y nie wstawia nic, za to wstawia "<br>". Datę tworzysz w zmiennej w php, więc ona pojawia się zawsze.

Zapoznaj się z:
if isset

Oraz dodaj do buttona "name", żeby sprawdzać wysłanie formularza w issecie.

Myślę, że sobie poradzisz. smile.gif
kaiba55
dzięki wielkie, zamiast isset wykorzystałem empty i już sobie wszystko dzięki temu zrobiłem- datę także wink.gif

mam jeszcze jeden problem, otóż na początku zmienne zawsze są puste, więc jak sprawdzam przez empty to przy 1 otwarciu strony zawsze wyskakuje że formularz nie do końca jest uzupełniony, co z tym zrobić? czy niezbędne jest wykorzystanie isset?

mam też drugi problem, na samym początku pliki tekstowe są puste i jak mamy:
  1. $data2=fread(fopen("data.txt", "r"), filesize("data.txt"));


To zawsze na wstępie wyrzuca błąd, że plik jest pusty. Da się coś z tym zrobić, czy muszę zamiast tego wszystkiego po prostu zaincludować plik i będzie?

Pozdro.
Tuminure
Problem tkwi w tym, że chyba źle stosujesz empty wink.gif.

Zmienne $imie, $wpis nie są puste nigdy. Wpisujesz do nich <br> o czym wspomniał sobol6803.
Nie powinieneś wykorzystywać też empty do $_GET['nick'] lub $_GET['wpis'], ponieważ te indeksy mogą nie być zainicjowane.
Powinieneś zastosować isset do $_GET['nick'] i $_GET['wpis'].

Cytat
Oraz dodaj do buttona "name", żeby sprawdzać wysłanie formularza w issecie.

To akurat nic nie da. Wystarczy, że będzie sprawdzał $_GET['nick'] i $_GET['wpis'].
kaiba55
nie smile.gif przed dodaniem czegokolwiek pliki są na krótką chwile puste- nie ma tam nawet <br>- z prostego powodu bo formularz nie został ani razu wypełniony.
Wykorzystałem empty dlatego, że czytałem że isset tylko sprawdza czy zmienna jest czy jej nie ma, natomiast empty sprawdzi czy jest ona pusta. Obawiam się, że wykorzystując isset sprawdze zmienną czy jest- a ona zawsze istnieje tyle, że może być pusta.

Wrzucam kod i proszę o porady:

  1. <html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="styl.css" />
  4. <title>Shoutbox</title>
  5. </head>
  6.  
  7. <form action="index.php method="GET">
  8. <input type=text name="nick"/><br>
  9. <input type=text name="wpis"/><br>
  10. <input type=submit value="wyslij"/>
  11. </form>
  12. <?php
  13. $imie=$_GET['nick'].'<br>';
  14. $wpis=$_GET['wpis'].'<br>';
  15. $data=date("H:i:s").'<br>' ;
  16.  
  17.  
  18. if(empty($_GET['imie'])&&(empty($_GET['wpis'])))
  19. echo "uzupelnij caly formularz".'<br>';
  20. else
  21. {
  22. $imie3=fopen("imie.txt", "a");
  23. fputs($imie3,$imie);
  24. fclose($imie3);
  25.  
  26. $wpis3=fopen("wpis.txt","a");
  27. fputs($wpis3,$wpis);
  28. fclose($wpis3);
  29.  
  30. $data3=fopen("data.txt", "a");
  31. fputs($data3, $data);
  32. fclose($data3);
  33.  
  34. }
  35.  
  36. $plik1="imie.txt";
  37. $plik2="wpis.txt";
  38. $plik3="data.txt";
  39. if((file_exists($plik1)==true)&&(file_exists($plik2)==true)&&(file_exists($plik3)==true))
  40. {
  41. $imie2=fread(fopen("imie.txt", "r"), filesize("imie.txt"));
  42. $wpis2=fread(fopen("wpis.txt", "r"), filesize("wpis.txt"));
  43. $data2=fread(fopen("data.txt", "r"), filesize("data.txt"));
  44. }
  45. else
  46. echo "dokonaj instalacji skryptu, bo nie ma plikow tekstowych".'<br>';
  47. ?>
  48.  
  49. <div id="nick">
  50. <?php
  51. echo "nick".'<br>';
  52. echo $imie2;
  53. ?>
  54.  
  55. </div>
  56.  
  57.  
  58. <div id="wpis">
  59. <?php
  60. echo "wpis".'<br>';
  61. echo $wpis2;
  62. ?>
  63. </div>
  64.  
  65.  
  66. <div id="data">
  67. <?php
  68. echo "data".'<br>';
  69. echo $data2;
  70. ?>
  71.  
  72. </div>
Tuminure
Cytat
przed dodaniem czegokolwiek pliki są na krótką chwile puste

Pisałem o zmiennych (nie o plikach) $imie i $wpis, które nigdy nie są puste. Na początku kodu zmienne nie istnieją (czyli isset($imie) pokaże fałsz), potem zostają zainicjalizowane i zostaje do nich wpisane $_GET['nick'].'<br>'. Jeżeli $_GET['nick'] jest puste, to do $imie, zostaje przy inicjalizacji wpisane <br>. W skrócie $imie w żadnym momencie nie jest puste.

Te kawałki kodu powinny być dla Ciebie wystarczająco pomocne smile.gif
  1. if(isset($_GET['nick']) && isset($_GET['wpis']))
  2. {
  3. $wpisuj_do_pliku = TRUE;
  4. $imie=$_GET['nick'].'<br>';
  5. $wpis=$_GET['wpis'].'<br>';
  6. }
  7. else
  8. {
  9. $wpisuj_do_pliku = FALSE;
  10. }

oraz
  1. if($wpisuj_do_pliku)
  2. {
  3. $imie3=fopen("imie.txt", "a");
  4. fputs($imie3,$imie);
  5. fclose($imie3);
  6.  
  7. $wpis3=fopen("wpis.txt","a");
  8. fputs($wpis3,$wpis);
  9. fclose($wpis3);
  10.  
  11. $data3=fopen("data.txt", "a");
  12. fputs($data3, $data);
  13. fclose($data3);
  14. }


PS.
Warunek
  1. if(empty($_GET['imie'])&&(empty($_GET['wpis'])))
będzie spełniony tylko, gdy będziesz miał w pasku adresu coś przypominającego "?imie=&wpis=" lub "?wpis=&imie=" (czyli puste brak wartości dla imie i wpis).
kaiba55
edit: albo jednak nie rozumiem

Zrobiłem tak:
  1. <html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="styl.css" />
  4. <title>Shoutbox</title>
  5. </head>
  6.  
  7. <form action="index.php method="GET">
  8. <input type=text name="nick"/><br>
  9. <input type=text name="wpis"/><br>
  10. <input type=submit value="wyslij"/>
  11. </form>
  12. <?php
  13. $imie=$_GET['nick'].'<br>';
  14. $wpis=$_GET['wpis'].'<br>';
  15. $data=date("H:i:s").'<br>' ;
  16.  
  17.  
  18. if(isset($_GET['nick']) && isset($_GET['wpis']))
  19. {
  20. $imie3=fopen("imie.txt", "a");
  21. fputs($imie3,$imie);
  22. fclose($imie3);
  23.  
  24. $wpis3=fopen("wpis.txt","a");
  25. fputs($wpis3,$wpis);
  26. fclose($wpis3);
  27.  
  28. $data3=fopen("data.txt", "a");
  29. fputs($data3, $data);
  30. fclose($data3);
  31. }
  32. else
  33. {
  34. echo "wypelnij caly formularz";
  35. }
  36.  
  37.  
  38.  
  39.  
  40.  
  41. $plik1="imie.txt";
  42. $plik2="wpis.txt";
  43. $plik3="data.txt";
  44. if((file_exists($plik1)==true)&&(file_exists($plik2)==true)&&(file_exists($plik3)==true))
  45. {
  46. $imie2=fread(fopen("imie.txt", "r"), filesize("imie.txt"));
  47. $wpis2=fread(fopen("wpis.txt", "r"), filesize("wpis.txt"));
  48. $data2=fread(fopen("data.txt", "r"), filesize("data.txt"));
  49. }
  50. else
  51. echo "dokonaj instalacji skryptu, bo nie ma plikow tekstowych".'<br>';
  52. ?>
  53.  
  54. <div id="nick">
  55. <?php
  56. echo "nick".'<br>';
  57. echo $imie2;
  58. ?>
  59.  
  60. </div>
  61.  
  62.  
  63. <div id="wpis">
  64. <?php
  65. echo "wpis".'<br>';
  66. echo $wpis2;
  67. ?>
  68. </div>
  69.  
  70.  
  71. <div id="data">
  72. <?php
  73. echo "data".'<br>';
  74. echo $data2;
  75. ?>
  76.  
  77. </div>


Ale to chyba w ogóle nie tak ma wyglądać.
Otóż jak sprawdzałem empty to sprawdzało czy nie jest pusto, a isset wskazuje tylko czy zmienna jest- jeśli jest, choćby pusta to formularz zostanie wysłany, nawet bez 1 pola, sprawdzając empty nie było takiej szansy- chyba że ja coś źle robię smile.gif
sobol6803
A kto Ci każe wybierać pomiędzy empty a isset? Możesz to zrobić tak:
  1. if (isset($_GET['imie']) && isset($_GET['wpis']) && !empty($_GET['imie']) && !empty($_GET['wpis'])) {
  2. //formularz wysłany, pola nie są puste
  3. }
  4. else {
  5. //formularz niewysłany
  6. }


Dodatkowo GET ma limit znaków, więc jak chcesz przekazywać przez niego jakieś dłuższe stringi, to lepiej to zrobić POST'em.
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.