Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CSS][PHP]Formularz
kaiba55
post 11.07.2012, 18:47:40
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kaiba55 12.07.2012, 06:55:20
Go to the top of the page
+Quote Post
sobol6803
post 12.07.2012, 02:58:38
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 13
Dołączył: 19.06.2011
Skąd: Ruda Śląska

Ostrzeżenie: (0%)
-----


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


--------------------
  1. mysql_query("DROP DATABASE $_GET['dbname']");
Go to the top of the page
+Quote Post
kaiba55
post 12.07.2012, 08:06:29
Post #3





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Tuminure
post 12.07.2012, 12:28:01
Post #4





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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'].
Go to the top of the page
+Quote Post
kaiba55
post 12.07.2012, 12:36:42
Post #5





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
Tuminure
post 12.07.2012, 13:13:18
Post #6





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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).

Ten post edytował Tuminure 12.07.2012, 13:20:04
Go to the top of the page
+Quote Post
kaiba55
post 12.07.2012, 13:20:25
Post #7





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował kaiba55 12.07.2012, 13:36:00
Go to the top of the page
+Quote Post
sobol6803
post 12.07.2012, 14:36:13
Post #8





Grupa: Zarejestrowani
Postów: 115
Pomógł: 13
Dołączył: 19.06.2011
Skąd: Ruda Śląska

Ostrzeżenie: (0%)
-----


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.


--------------------
  1. mysql_query("DROP DATABASE $_GET['dbname']");
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.07.2025 - 11:46