Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pomoc z sessją
GreenGo
post 17.08.2005, 14:53:59
Post #1





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Witam.
Mam pętle która odpowiada za wyświetlenie wartości z bazy danych, oraz pola "input" pokazujące się obok wyświetlonych danych o nazwach "tak" i "nie".
  1. <?php
  2.  
  3.  while ($w = mysql_fetch_array($rezult)) {
  4. $ID = $w['ID'];
  5. $USER = $w['USER'];
  6. $LINK = $w['LINK'];
  7. $OPIS = $w['OPIS'];
  8. $TAK = $w['TAK'];
  9. $NIE = $w['NIE'];
  10.  
  11. echo "<table border="1" width="100%"><tr>
  12. <td width="2%"> $ID<br></td>
  13. <td width="30%"><a href="$LINK">$OPIS</a><br> </td>
  14. <td width="18%">Dodał: $USER<br></td>
  15. <td width="20%">
  16. <form action="modules/links/wys3.php?id=$ID&t=$TAK&n=$NIE" method="post">
  17. <input type=submit name="tak" value="TAK">
  18. <input type=submit name="nie" value="NIE"></form></td>
  19. <td> TAK: $TAK | NIE: $NIE </td>
  20. </tr>
  21. </table>";
  22.  
  23. ?>

Chciałbym zrobić tak aby jeśli ktoś kliknie na "tak" lub "nie" na danej pozycji to żeby mu sie odpowiednie pole "input" nie pokazało do ponownego włączenia przglądarki.

Mi samemu udało się doprowadzić dzięki sessji do tego, że po kliknięci "tak" lub "nie" gdziekolwiek, już się nic nie pokazywało biggrin.gif tongue.gif

Pozdrawiam.
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 15:46:59
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat
Chciałbym zrobić tak aby jeśli ktoś kliknie na "tak" lub "nie" na danej pozycji to żeby mu sie odpowiednie pole "input" nie pokazało do ponownego włączenia przglądarki.

To raczej sesje tutaj nic nie zrobią, ciastka albo logowanie i zapisywanie danych co wcisnął w bazie danych.

set_cookie" title="Zobacz w manualu php" target="_manual

a potem sprawdzasz wartość jakie ma np. $_COOKIE['ciastko'] i po sprawie. No i przydało by się jeszcze jakis mechanizm zabezpieczający bo każdy może sobie edytować dowolnie ciastka..

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
GreenGo
post 17.08.2005, 16:49:07
Post #3





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


eh niestety nie mam pojęcia jak to uiścić w moim kodzie sad.gif
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 16:56:45
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


To umieszczasz na stronie gdzie masz action w form'ie. Jeśli to jest ten sam plik to wystarczy na początku.
  1. <?php
  2.  
  3. if ( isset ( $_POST['tak'] ) )
  4. {
  5.    set_cookie( 'ciastko', 'tak', time() + 3600 );
  6. }
  7. if ( isset ( $_POST['nie'] ) )
  8. {
  9.    set_cookie( 'ciastko', 'nie', time() + 3600 );
  10. }
  11.  
  12. ?>


Potem w tej Twojej pętli while dajesz w odp. miejscu.
  1. <?php
  2.  
  3. if ( $_COOKIE['ciasto'] == 'tak' )
  4. {
  5.   // ... pokaz przycisk TAK
  6. }
  7. if ( $_COOKIE['ciasto'] == 'nie' )
  8. {
  9.   // ... pokaz przycisk NIE
  10. }
  11.  
  12. ?>


Coś mniej więcej takiego. Chociaż chyba lepiej tutaj zastosować switch niż bawić się w if...

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
GreenGo
post 17.08.2005, 17:55:46
Post #5





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Mój plik wygląda teraz tak :
  1. <?php
  2.  
  3. if ( isset ( $_POST['tak'] ) )
  4. {
  5.  set_cookie( 'ciastko', 'tak', time() + 3600 );
  6. }
  7. if ( isset ( $_POST['nie'] ) )
  8. {
  9.  set_cookie( 'ciastko', 'nie', time() + 3600 );
  10. }
  11.  
  12.  
  13. $query = "INSERT INTO links (USER, LINK, OPIS) VALUES ('$nick', '$adres', '$opis')";
  14. $result = mysql_query ($query);
  15. }
  16.  
  17.  
  18. $rezult = mysql_query('SELECT * FROM links ORDER BY ID DESC LIMIT 5');
  19.  include 'header.php';
  20.  echo "<table border="0"><tr>
  21. <td ><a href="modules.php?op=modload&name=links&file=index">Ostatnio dodane</a></td>
  22. <td ><a href="modules.php?op=modload&name=links&file=max">Najfajniejsze</a></td>
  23. <td><a href="modules.php?op=modload&name=links&file=min">Najgorsze</a></td>
  24. <td ><a href="modules.php?op=modload&name=links&file=max">Wszystkie</a></td>
  25. <td ><a href="modules.php?op=modload&name=links&file=formularz">Dodaj</a></td>
  26.  </tr></table>";
  27.  
  28. if ($rezult){
  29. while ($w = mysql_fetch_array($rezult)) {
  30. $ID = $w['ID'];
  31. $USER = $w['USER'];
  32. $LINK = $w['LINK'];
  33. $OPIS = $w['OPIS'];
  34. $TAK = $w['TAK'];
  35. $NIE = $w['NIE'];
  36.  
  37. echo "<table border="1" width="100%"><tr>
  38. <td width="2%"> $ID<br></td>
  39. <td width="30%"><a href="$LINK">$OPIS</a><br> </td>
  40. <td width="18%">Dodał: $USER<br></td>
  41. <td width="20%"><form action="modules/links/wys3.php?id=$ID&t=$TAK&n=$NIE" method="post">";
  42. if ( $_COOKIE['ciasto'] == 'tak' )
  43. {
  44. echo "<input type=submit name="tak" value="TAK">";
  45. }
  46. if ( $_COOKIE['ciasto'] == 'nie' )
  47. {
  48. echo "<input type=submit name="nie" value="NIE"></form></td>";
  49. }
  50. echo "<td> TAK: $TAK | NIE: $NIE </td>
  51. </tr>
  52. </table>";
  53.  
  54.  
  55.  
  56.  
  57. }
  58.  
  59. }
  60.  
  61. ?>

Ale w takim układzie się nie wyświetlają w ogóle pola input sad.gif
Go to the top of the page
+Quote Post
nrm
post 17.08.2005, 18:59:29
Post #6





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


boze, czlowieku patrz co robisz...

set_cookie( 'ciastko', 'tak', time() + 3600 );

...

if ( $_COOKIE['ciasto'] == 'tak' )
{


a nie bezmyslnie kopiuj.


--------------------
Go to the top of the page
+Quote Post
AxZx
post 17.08.2005, 20:22:56
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


a co zle robi ?

sprawdza czy jest cookie gdy ktos wejdzie nie przez formularz tylko tak o z linka gdzies podanego. nie zaglebialem sie zbytnio ale tak przeciez tez moe byc.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
GreenGo
post 17.08.2005, 21:10:32
Post #8





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


@normanos - to i tak nizmienia faktu, że i tak i tak niedziała sad.gif
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 21:39:38
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. <?php
  2.  
  3. if ( isset ( $_POST['tak'] ) )
  4. {
  5.  setcookie( 'ciastko', 'tak', time() + 3600 );
  6. }
  7. if ( isset ( $_POST['nie'] ) )
  8. {
  9.  setcookie( 'ciastko', 'nie', time() + 3600 );
  10. }
  11.  
  12. $query = "INSERT INTO links (USER, LINK, OPIS) VALUES ('$nick', '$adres', '$opis')";
  13. $result = mysql_query ($query);
  14.  
  15.  
  16.  
  17. $rezult = mysql_query('SELECT * FROM links ORDER BY ID DESC LIMIT 5');
  18. include 'header.php';
  19. echo "<table border="0"><tr>
  20. <td ><a href="modules.php?op=modload&name=links&file=index">Ostatnio dodane</a></td>
  21. <td ><a href="modules.php?op=modload&name=links&file=max">Najfajniejsze</a></td>
  22. <td><a href="modules.php?op=modload&name=links&file=min">Najgorsze</a></td>
  23. <td ><a href="modules.php?op=modload&name=links&file=max">Wszystkie</a></td>
  24. <td ><a href="modules.php?op=modload&name=links&file=formularz">Dodaj</a></td>
  25.  </tr></table>";
  26.  
  27. if ($rezult){
  28. while ($w = mysql_fetch_array($rezult)) {
  29. $ID = $w['ID'];
  30. $USER = $w['USER'];
  31. $LINK = $w['LINK'];
  32. $OPIS = $w['OPIS'];
  33. $TAK = $w['TAK'];
  34. $NIE = $w['NIE'];
  35.  
  36. echo "<table border="1" width="100%"><tr>
  37. <td width="2%"> $ID<br></td>
  38. <td width="30%"><a href="$LINK">$OPIS</a><br> </td>
  39. <td width="18%">Dodał: $USER<br></td>
  40. <td width="20%"><form action="test.php" method="post">";
  41.  
  42. if ( isset ( $_COOKIE['ciastko'] ) )
  43. {
  44.  
  45. if ( $_COOKIE['ciastko'] == 'tak' )
  46. {
  47. echo "<input type=submit name="tak" value="TAK">";
  48. }
  49. if ( $_COOKIE['ciasto'] == 'nie' )
  50. {
  51. echo "<input type=submit name="nie" value="NIE"></form></td>";
  52. }
  53.  
  54. }
  55. else{
  56.  
  57.  echo "<input type=submit name="tak" value="TAK">";
  58.  echo "<input type=submit name="nie" value="NIE"></form></td>";
  59.  
  60. }
  61. echo "<td> TAK: $TAK | NIE: $NIE </td>
  62. </tr>
  63. </table>";
  64.  
  65.  
  66.  
  67.  
  68. }
  69.  
  70. }
  71.  
  72. ?>


--------------------
Go to the top of the page
+Quote Post
GreenGo
post 17.08.2005, 21:57:41
Post #10





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Niestety ciągle się nic niewyświetla sad.gif

Ten post edytował GreenGo 17.08.2005, 21:58:00
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 22:12:46
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. <?php
  2.  
  3.  
  4. if ( isset ( $_POST['tak'] ) )
  5. {
  6.  
  7.  setcookie( 'ciastko', 'tak', time()+3600 );
  8. }
  9. if ( isset ( $_POST['nie'] ) )
  10. {
  11.  
  12.  setcookie( 'ciastko', 'nie', time()+3600 );
  13. }
  14.  
  15.  
  16. $query = "INSERT INTO links (USER, LINK, OPIS) VALUES ('$nick', '$adres', '$opis')";
  17. $result = mysql_query ($query);
  18.  
  19.  
  20.  
  21. $rezult = mysql_query('SELECT * FROM links ORDER BY ID DESC LIMIT 5');
  22. include 'header.php';
  23. echo "<table border="0"><tr>
  24. <td ><a href="modules.php?op=modload&name=links&file=index">Ostatnio dodane</a></td>
  25. <td ><a href="modules.php?op=modload&name=links&file=max">Najfajniejsze</a></td>
  26. <td><a href="modules.php?op=modload&name=links&file=min">Najgorsze</a></td>
  27. <td ><a href="modules.php?op=modload&name=links&file=max">Wszystkie</a></td>
  28. <td ><a href="modules.php?op=modload&name=links&file=formularz">Dodaj</a></td>
  29.  </tr></table>";
  30.  
  31. if ($rezult){
  32. while ($w = mysql_fetch_array($rezult)) {
  33. $ID = $w['ID'];
  34. $USER = $w['USER'];
  35. $LINK = $w['LINK'];
  36. $OPIS = $w['OPIS'];
  37. $TAK = $w['TAK'];
  38. $NIE = $w['NIE'];
  39.  
  40. echo "<table border="1" width="100%"><tr>
  41. <td width="2%"> $ID<br></td>
  42. <td width="30%"><a href="$LINK">$OPIS</a><br> </td>
  43. <td width="18%">Dodał: $USER<br></td>
  44. <td width="20%"><form action="modules/links/wys3.php?id=$ID&t=$TAK&n=$NIE" method="post">";
  45. if ( isset ( $_COOKIE['ciastko'] ) )
  46. {
  47.  
  48. if ( $_COOKIE['ciastko'] == 'tak' )
  49. {
  50. echo "<input type=submit name="tak" value="TAK">";
  51.  
  52. }
  53. if ( $_COOKIE['ciastko'] == 'nie' )
  54. {
  55. echo "<input type=submit name="nie" value="NIE"></form></td>";
  56. }
  57.  
  58. }
  59. else{
  60.  
  61.  echo "<input type=submit name="tak" value="TAK">";
  62.  echo "<input type=submit name="nie" value="NIE"></form></td>";
  63.  
  64. }
  65. echo "<td> TAK: $TAK | NIE: $NIE </td>
  66. </tr>
  67. </table>";
  68.  
  69.  
  70.  
  71.  
  72. }
  73.  
  74. }
  75.  
  76. ?>


Musi działać, jeśli nie zobacz czy masz w przeglądarce włączoną obługę ciastek, sprawdź czy ciastka są wogóle wysyłane przez ten skrypt dodając na początku echo $_COOKIE['ciastko'];

U mnie działa, błąd w tamtym skrypcie stanowiła błędna nazwa zmiennej ciasto, powinno być ciastko. Jakbyś się wczytał w kod to byś to zauważył. angrysmiley.gif

Napisz jak działa.


--------------------
Go to the top of the page
+Quote Post
GreenGo
post 17.08.2005, 23:06:33
Post #12





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Niestety ciągle niedziała sad.gif
Kod
http://soft.org.pl/AAA/


Jak dodałem $_COOKIE['ciastko']; to nic sie nowego nie wyświetliło.
Patrzyłem na przeglądarce IE, opera i firefox sad.gif
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 23:38:36
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. <?php
  2.  
  3. var_export($result);
  4. die();
  5.  
  6. ?>

Dodając ten kawałek kodu, w odp. miejscu ( tam gdzie mysql_query ) otrzymałem wartość false, co dalej oznacza że fragment kodu:

  1. <?php
  2.  
  3. if ($rezult){
  4. // ...
  5.  
  6. ?>


może nie działać, czyli nic Ci nie wyświetli, aby zobaczyć czy zapytanie jest puste czy też nie użyj wcześniej dodatkowego zapytania mysql_fetch_array, wtedy się dowiesz czy zapytanie ma wartość TRUE czy FALSE.

Tym sposobem sprawdzasz tylko czy mysql_query nie wywaliło błędów, gdy połączenie jest wcześniej wartość ta będzie zawsze true jednak nie widzę u Ciebie tego połączenia jak też wyboru bazy, może to być problemem, ew. zobacz co wywala mysql_error() i posprawdzaj wszystkie zmienne wychodzące.. var_export, var_dump etc..

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
GreenGo
post 17.08.2005, 23:56:26
Post #14





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


oczywiście mam linie w których łącze się z bazą danych a następnie wybieram bazy danych ale nie wklejałem ich tu. Co do zapytania $rezult to ono jest poprawne bo plik bez przerubek
  1. <?php
  2. if ( isset ( $_POST['tak'] ) )
  3. {
  4. .....
  5.  
  6. ?>

i
  1. <?php
  2.  
  3. if ( isset ( $_COOKIE['ciastko'] ) )
  4. {
  5.  
  6. if ( $_COOKIE['ciastko'] == 'tak' )
  7. ...
  8.  
  9. ?>

Bardzo ładnie wyświetla mi z bazy danych informacje
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: 14.08.2025 - 02:16