Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] jak porównać zmienną do kolumny wyników z sql
Forum PHP.pl > Forum > Przedszkole
Taifun
Witam.
Jak porównać czy istnieje już taki wpis czyli porównać zmienną przesłaną z formularza zapisaną pod np $1 do wyników z całej kolumny mysql o nazwie np. tresc ?
Dalej już sobie poradze ale jak porównać snitch.gif
Cienki1980
Sprawdzasz czy w tabeli istnieje taki wpis gdzie
  1. SELECT * FROM tabela WHERE nazwa_kolumny=$wartosc_z_formularza

wywołujesz takie zapytanie po czym sprawdzasz czy zostały zwrócone jakieś wiersze ( np za pomocą mysql_num_rows" title="Zobacz w manualu PHP" target="_manual )
Taifun
dlaczego jak wklepuje do php admina:
Cytat
select * from sb(poprawnatabele wpisałem) where wiadomosc(istnieje)=wartosc z formularza, ktora jest w phpmyadminie


to wyskakuje to wyskakuje:

Cytat
zapytanie SQL: Dokumentacja

SELECT *
FROM sb
WHERE wiadomosc = edfsdfd
LIMIT 0 , 30

MySQL zwrócił komunikat: Dokumentacja
#1054 - Nieznana kolumna 'edfsdfd' w where clause
nospor
No ale nie kopiuj bezmyslnie....
Skoro to wartosc tekstowa to ma byc w ciapkach:
  1. SELECT * FROM tabela WHERE nazwa_kolumny='$wartosc_z_formularza'
Taifun
o jest! O ciapkach zapomniałem bom nowy :Pmam taki kod i zamiast ochrony przed wysylaniem podwojnego postu mam spam na maxa ;/
  1. <?php
  2. $query = "select * from sb where wiadomosc='$wiadomosc'";
  3. $wyk = mysql_query($query);
  4. $row = mysql_num_rows($wyk);
  5. if (!$wiadomosc) 
  6.  $puste++;
  7. if ($$row>=) 
  8.  echo "nie powtarzaj sie!";
  9. if ($puste>0) 
  10.  echo "pusto tu";
  11. ?>

co źle robię?


-------------------------
do PHP są odpowiednie znaczniki BBCode
tym razem poprawiłem ale pamiętaj
i stosuj sie do tego na przyszłość
~Cienki1980
Cienki1980
W tym kodzie co podałeś nie ma żadnego zabezpieczenia przed wielokrotnym wysłaniem posta .. tylko tworzysz komunikaty co ktoś zrobił

Pomijam fakt podwójnego znaku $ przy row w if'ie .. bo to chyba literówka.

Schemat sprawdzania powinien wyglądać jakoś tak:
- odbierasz dane z formularza
- sprawdzasz czy dane są poprawne
* nie - wyrzucasz stosowne komunikaty - koniec przetwarzania danych
* są poprawne - idziesz dalej
- sprawdzasz czy takich danych nie ma już w bazie
* są - wyrzucasz stosowne komunikaty - koniec przetwarzania danych
* nie ma - zapisujesz do bazy

Wystarczy kilka if - elseif - else i najprostszy system antyspamowy powinien zadziałać
Taifun
koleś na pewnym forum mi polecił ciasteczka ale rozwiązałem to inaczej:
  1. <?php
  2. $query = "select * from sb where wiadomosc='$wiadomosc'";
  3. $wyk = mysql_query($query);
  4. $row = mysql_num_rows($wyk);
  5.  
  6.  
  7.  
  8.  
  9. if (!$imie) $puste++;
  10. if (!$gg) $puste++;
  11. if (!$wiadomosc) $puste++;
  12. if ($puste>0 OR $row>0) echo "";
  13.  
  14. else
  15. {
  16.  
  17. $query = "INSERT INTO sb VALUES ('','$imie','$gg','$wiadomosc')";
  18. $wyk = mysql_query($query);
  19. echo "wpis dodany!";
  20.  
  21. }
  22. ?>
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.