Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Token poprzez głupie pytanie
Forum PHP.pl > Forum > Przedszkole
kuba_pilach
Witam, mam w bazie danych mysql tabelę "token" i tam mam kolumny: ID, PYTANIE, ODPOWIEDZ
O to mój kod:
  1.  
  2. <?php
  3. include "connection.php";
  4. if (!$_POST['submit']) {
  5. $zapytanie = mysql_query("select PYTANIE from token ORDER BY rand()")
  6. $wynik = mysql_fetch_assoc($zapytanie);
  7. $_SESSION['pytanie'] = $wynik['PYTANIE'];
  8. echo $wynik['PYTANIE'];
  9. ?>
  10. <form action="formularz.php" method="post">
  11. <input type="text" name="token" />
  12. <input type="submit" name="submit" value="Sprawdz">
  13. </form>
  14. <?php
  15. }
  16. if ($_POST['submit']) {
  17. $token = $_POST['token'];
  18. $zapytaniedrugie = mysql_query("select ODPOWIEDZ from token where PYTANIE='".$_SESSION['pytanie']."'")
  19. $wynikdrugi = mysql_fetch_assoc($zapytaniedrugie);
  20. echo $wynikdrugi['ODPOWIEDZ'];
  21. }
  22. ?>

Narazie chcę, by pokazało samą odpowiedź... ale nie pokazuje nic. Wie ktoś dlaczego? Dzięki z góry
sadistic_son
W zapytaniu z linijki 6 dodaj LIMIT 1.
kuba_pilach
Dzięki, ale bez zmian... nadal nic nie pokazuje

A i dodam jeszcze, że pokazuje samo pytanie, ale odpowiedzi już nie...
gorzat
zamiast where sprobuj like
kuba_pilach
Zamieniłem where na like i teraz wyskakuje mi następujący błąd:
Kod
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like PYTANIE='Jak ma na imi? Monika?' LIMIT 1' at line 1
gorzat
no tak, ale dostosuj zapytanie do LIKE, dodaj %
Fifi209
Cytat(gorzat @ 18.03.2011, 22:41:58 ) *
zamiast where sprobuj like

A nie przypadkiem
  1. WHERE pole LIKE 'wyrazenie'


?
sadistic_son
Cytat(gorzat @ 18.03.2011, 22:41:58 ) *
zamiast where sprobuj like
CO ?! WHERE stosuje się razem z LIKE:
  1. SELECT * FROM tabela WHERE costam LIKE '%kawalek_szukania%'
kuba_pilach
To zmieniłem na:
  1. $zapytaniedrugie = mysql_query("select ODPOWIEDZ from token where PYTANIE like '%".$_SESSION['pytanie']."%'")

Ale nadal nic...
Fifi209
Nadal nic? A czym się to nic objawia? Pokaż swój aktualny cały kod.
kuba_pilach
Dobra, daję:
  1. <?php
  2. include "connection.php";
  3. if (!$_POST['submit']) {
  4. $zapytanie = mysql_query("select PYTANIE from token ORDER BY rand() LIMIT 1")
  5. $wynik = mysql_fetch_assoc($zapytanie);
  6. $_SESSION['pytanie'] = $wynik['PYTANIE'];
  7. echo $wynik['PYTANIE'];
  8. ?>
  9. <form action="formularz.php" method="post">
  10. <input type="text" name="token" />
  11. <input type="submit" name="submit" value="Sprawdz">
  12. </form>
  13. <?php
  14. }
  15. if ($_POST['submit']) {
  16. $token = $_POST['token'];
  17. $zapytaniedrugie = mysql_query("select ODPOWIEDZ from token where PYTANIE like '%".$_SESSION['pytanie']."%'")
  18. $wynikdrugi = mysql_fetch_assoc($zapytaniedrugie);
  19. echo $wynikdrugi['ODPOWIEDZ'];
  20. }
  21. ?>


Wie ktoś może już, co jest źle??
everth
  1. //Przed linia 2
  2. // ...
  3. //Przed linia 8
  4. var_dump($wynik);
  5. // ...
  6. //zamiast linii 19
  7. $query = "select ODPOWIEDZ from token where PYTANIE like '%".$_SESSION['pytanie']."%'";
  8. var_dump($query);
  9. mysql_query($query);
  10. // ...
  11. //Przed linia 22
  12. var_dump($wynikdrugi);

Zobacz co ci wtedy wyrzuca.
SoSiker
Cytat(kuba_pilach @ 18.03.2011, 22:45:17 ) *
Zamieniłem where na like i teraz wyskakuje mi następujący błąd:
Kod
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like PYTANIE='Jak ma na imi? Monika?' LIMIT 1' at line 1


Może problem z kodowaniem? Pierwsze zapytanie coś zwraca?
kuba_pilach
Ok, piszę... ta strona co zwykle była dobrze wygląda:
Kod
Notice: Undefined index: submit in C:\serwer\apache\htdocs\nauka\formularz.php on line 5
array(1) { ["PYTANIE"]=> string(22) "Jak ma na imi? Monika?" } Jak ma na imi? Monika?
(<tu pole tekstowe jest <input>)
Notice: Undefined index: submit in C:\serwer\apache\htdocs\nauka\formularz.php on line 19


Na stronie, która zwykle była pusta pisze:
Kod
string(73) "select ODPOWIEDZ from token where PYTANIE like '%Jak ma na imi? Monika?%'"
Notice: Undefined variable: zapytaniedrugie in C:\serwer\apache\htdocs\nauka\formularz.php on line 24

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\serwer\apache\htdocs\nauka\formularz.php on line 24
bool(false)

everth
Wychodzi na to że kodowanie. Ustaw sobie kodowanie strony na utf8. W moich zmianach jest błąd. Powinno być:
  1. //Przed linia 2
  2. // ...
  3. //Przed linia 8
  4. var_dump($wynik);
  5. // ...
  6. //zamiast linii 19
  7. $query = "select ODPOWIEDZ from token where PYTANIE like '%".$_SESSION['pytanie']."%'";
  8. var_dump($query);
  9. $zapytaniedrugie = mysql_query($query);
  10. // ...
  11. //Przed linia 22
  12. var_dump($wynikdrugi);

Ale to szczegół. Twoim problemem jest to że dostajesz pytanie pozbawione polskich znaków więc nic nie znajdziesz w bazie.
kuba_pilach
Mam problem z tym kodowaniem ...
Niby wszystko dobrze, a jednak problem...
W bazie danych te dwie kolumny mam w utf-8-polish-ci, a w pliku ustawiłem utf-8 bez BOM i w html:
  1. <meta charset="UTF-8">

I nadal nie wyświetla mi ę... Wie ktoś o co może chodzić?
everth
Tutorial o kodowaniu (zobacz też na część dotyczącą wysyłanych nagłówków). Dodatkowo przy połączeniu z bazą ustaw sobie "set names utf8".
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.