Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc z sessją
Forum PHP.pl > Forum > Przedszkole
GreenGo
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.
strife
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!
GreenGo
eh niestety nie mam pojęcia jak to uiścić w moim kodzie sad.gif
strife
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!
GreenGo
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
nrm
boze, czlowieku patrz co robisz...

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

...

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


a nie bezmyslnie kopiuj.
AxZx
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.
GreenGo
@normanos - to i tak nizmienia faktu, że i tak i tak niedziała sad.gif
strife
  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. ?>
GreenGo
Niestety ciągle się nic niewyświetla sad.gif
strife
  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.
GreenGo
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
strife
  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!
GreenGo
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
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.