Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Sprawdzanie czy rekord istnieje
youngen
post 5.07.2012, 12:54:07
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Uporałem się z poprzednim problemem, zaczął się drugi niestety :/

Jak zrobić, aby sprawdzało mi jakoś czy dany rekord istnieje? Chodzi mi o to, że użytkownik wpisuje jakieś dane i jeśli byłyby w bazie to pojawia się jakiś napis (z napisem sobie poradzę biggrin.gif). Czy da się coś takiego zrobić? Nie mam zupełnie pomysłu co i jak.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
SmokAnalog
post 5.07.2012, 12:55:52
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


  1. SELECT count(1) FROM tabela WHERE warunek
Go to the top of the page
+Quote Post
Shido
post 5.07.2012, 12:56:57
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Ja sprawdzam czy wykona się zapytanie.
  1. public function onbase($baza, $wyk)
  2. {
  3. global $dbprefix;
  4. $baza = $dbprefix.''.$baza;
  5. $jest = false;
  6. $sql = "SELECT * FROM `$baza` WHERE $wyk LIMIT 1";
  7. $wykonaj0 = mysql_query ($sql);
  8. while($wiersz0=mysql_fetch_array ($wykonaj0))
  9. {
  10. $jest = true;
  11. }
  12. if($jest)
  13. {
  14. return true;
  15. }
  16. else
  17. {
  18. return false;
  19. }
  20. }


Ten post edytował Shido 5.07.2012, 12:57:43


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
youngen
post 5.07.2012, 13:49:44
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Udało mi się samemu wykombinować:
  1. <?php
  2. if(!empty($_POST['costaml']) && !empty($_POST['costam1'])){
  3.  
  4.  
  5. $jest = mysql_fetch_array(mysql_query("select * from tabela where (costam) ='".($_POST['costam'])."' and costam1 ='".($_POST['costam1'])."' limit 1"));
  6. if(empty($jest)){
  7. $error[1] = "Podales bledny";
  8. } else {
  9. echo ("podałeś poprawny");
  10. }
  11.  
  12.  
  13. }
  14.  
  15. ?>


Tylko tutaj problem, bo w else chciałbym zrobić tak, aby użytkownikowi dodało np. ID + 1. Tylko w jaki sposób sprawić, aby moja strona wiedziała któremu użytkownikowi dodać +1?


Próbowałem tak, ale nie działa
  1. <?php
  2. if(!empty($_POST['costaml']) && !empty($_POST['costam1'])){
  3.  
  4.  
  5. $jest = mysql_fetch_array(mysql_query("select * from tabela where (costam) ='".($_POST['costam'])."' and costam1 ='".($_POST['costam1'])."' limit 1"));
  6. if(empty($jest)){
  7. $error[1] = "Podales bledny";
  8. } else {
  9. mysql_query("UPDATE users SET costam=‘costam+1’ WHERE users=‘$user`");
  10. }
  11.  
  12.  
  13. }
  14.  
  15. ?>

Go to the top of the page
+Quote Post
SmokAnalog
post 5.07.2012, 13:56:58
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Wywoływanie zapytania tylko po to, żeby sprawdzić czy rekord istnieje to bardzo zły pomysł. Poczytaj o tym count(1).
Go to the top of the page
+Quote Post
youngen
post 5.07.2012, 15:07:33
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Możliwe, że zły. Jednak narazie wystarczy mi takie, żeby było. Później gdy będe miał czas na poprawki to pozmieniam, żeby było lepiej. Narazie szczerze mówiąc umiem tylko w ten sposób, który ja napisałem. Czy da się moim sposobem zrobić tak, żeby to działało?

if(!empty($_POST['email']) && !empty($_POST['nick'])){


$jest = mysql_fetch_array(mysql_query("select * from tabela where (nick) ='".($_POST['nick'])."' and email ='".($_POST['email'])."' limit 1"));
if(empty($jest)){
$error[1] = "Podales bledny kod";
} else {
mysql_query("UPDATE users SET user=‘ziemniaki’ WHERE id<2");
}


}


Gdy dodam or die to wywala błąd unexpected ';'.
Co jest źle w tym?

Ten post edytował youngen 5.07.2012, 14:01:04
Go to the top of the page
+Quote Post
Rysh
post 5.07.2012, 18:23:51
Post #7





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Twój sposób jest tragiczny.

  1. $sql = mysql_query("SELECT count(id) AS istnieje FROM tabela WHERE kolumna = 'częstochowa'") or die(mysql_error());
  2. $ile = mysql_fetch_assoc($sql);
  3. if($ile['istnieje'] > 0) {
  4. //istnieje
  5. } else {
  6. //nie istnieje
  7. }


--------------------
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 08:23:55
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Rysh, dzięki że chcesz mi pomóc, ale zauważ że akurat to co ty podałeś to mi działa. Na innym sposobie, ale działa. Nie działa mi tylko ta linijka:
  1. mysql_fetch_array(mysql_query("UPDATE users SET points=`points+1` WHERE user=`$User`")or die(mysql_error));

cały kod wygląda tak:
  1. <?php
  2. require('laczeniebazy.php');
  3.  
  4. $User = fgracz($_SESSION['user']);
  5.  
  6.  
  7. if(!empty($_POST['email']) && !empty($_POST['nick'])){
  8.  
  9.  
  10. $jest = mysql_fetch_array(mysql_query("select * from tabelakodow where (nick) ='".($_POST['nick'])."' and email ='".($_POST['email'])."' limit 1"));
  11. if(empty($jest)){
  12. $error[1] = "Podales bledny kod";
  13. } else {
  14. mysql_fetch_array(mysql_query("UPDATE users SET points=`points+1` WHERE user=`$User`")or die(mysql_error));
  15. }
  16.  
  17.  
  18. }
  19.  
  20. ?>


Ten post edytował youngen 6.07.2012, 08:24:10
Go to the top of the page
+Quote Post
IProSoft
post 6.07.2012, 08:59:42
Post #9





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Sprawdź:
Kod
`points`=`points`+1

lub
Kod
points=points+1


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 09:05:05
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


No, udało mi się już biggrin.gif

Dałem:
  1. mysql_query("UPDATE users SET points=251 WHERE user=1")or die(mysql_error());
i śmiga smile.gif

Edit: za wcześnie się ucieszyłem. Niby jest wszystko ok, ale ja muszę w user= mieć zmienną $User. Niestety wtedy wywala błąd: Parse error: syntax error, unexpected T_STRING on line 7

Ten post edytował youngen 6.07.2012, 09:19:26
Go to the top of the page
+Quote Post
djgarsi
post 6.07.2012, 09:48:37
Post #11





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Podaj 7 linie.


--------------------
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 09:50:41
Post #12





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


7 linia:
  1. $User = $User['user']
Go to the top of the page
+Quote Post
emkej
post 6.07.2012, 09:53:30
Post #13





Grupa: Zarejestrowani
Postów: 48
Pomógł: 5
Dołączył: 18.06.2012

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


Podstawy! Brakuje ";"
  1. $User = $User['user'];


--------------------
http://tropmy.net - narzędzie do badania usability stron WWW.
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 10:33:48
Post #14





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Ech... No tak.

Teraz nie wywala żadnego błędu, ale co z tego gdy pointsów nie dodaje :/ Wcześniej gdy nie miałem zmiennej to działało, ze zmienną która jest mi bardzo potrzebna nie działa :/

  1. <?php
  2. require('laczeniebazy.php');
  3.  
  4.  
  5. $User = $User['user'];
  6.  
  7. if(!empty($_POST['email']) && !empty($_POST['nick'])){
  8.  
  9.  
  10. $jest = mysql_fetch_array(mysql_query("select * from tabelakodow where (nick) ='".($_POST['nick'])."' and email ='".($_POST['email'])."' limit 1"));
  11. if(empty($jest)){
  12. $error[1] = "Podales bledny kod";
  13. } else {
  14. mysql_query("UPDATE users SET points=points+1 WHERE nick='{$User}'")or die(mysql_error());
  15. }
  16.  
  17.  
  18. }
  19.  
  20. ?>
Go to the top of the page
+Quote Post
redeemer
post 6.07.2012, 10:36:24
Post #15





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Wyświetl sobie jakie zapytanie przesyłasz do bazy danych:
  1. echo("UPDATE users SET points=points+1 WHERE nick='{$User}'");//or die(mysql_error());


--------------------
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 10:40:10
Post #16





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Czyli mam złą zmienną, bo wyskakuje UPDATE users SET points=points+1 WHERE nick=``

Bardzo ciekawy sposób mi podałeś biggrin.gif Tylko dlaczego ta zmienna nie działa?
Go to the top of the page
+Quote Post
redeemer
post 6.07.2012, 10:54:05
Post #17





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


W linii 6 przypisujesz do zmiennej $User wartość z tablicy asocjacyjnej $User (klucz 'user'). Co to właściwie jest ta tablica $User? Gdzie definiujesz tą zmienną? W laczeniebazy.php?


--------------------
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 11:06:44
Post #18





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


W łączeniu bazy mam:
  1. $User = fgracz($_SESSION['user']);

Zresztą kombinowałem też tak, żeby dać to w pliku, a nie w łaczeniebazy.php, ale też nie działa. na wszystkie sposoby próbowałem i nic :/
Gdy $User = fgracz($_SESSION['user']); mam w pliku, w ktorym teraz "pracuję" to zamiast pustego '' mam 'array'

Gdy dam echo to normalnie wyświetla mi się nick, więc myślę że to jest dobre.

Ten post edytował youngen 6.07.2012, 11:09:50
Go to the top of the page
+Quote Post
redeemer
post 6.07.2012, 11:13:06
Post #19





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


W pliku laczeniebazy.php odwołujesz się do sesji. Masz tam session_start()? Masz w pliku w którym wkleiłeś, jednak jest to już po fakcie odwołania się. Po require('laczeniebazy.php') wstaw var_dump($User);exit; i zobacz co tak naprawdę zmienna $User zawiera. Poza tym, nie wiemy co zwraca funkcja fgracz().


--------------------
Go to the top of the page
+Quote Post
youngen
post 6.07.2012, 11:25:09
Post #20





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2012

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


Hah... Jest null. O co biega z tym mysqlem to ja nie wiem...

Dałem teraz: if(empty($User['nick'])) header('location: wyloguj.php'); żeby sprawdzić czy jestem zalogowany i okazało się, że nie...

No dobra, to zrobiłem to na innej podstronie, tzn. przekopiowałem to co teraz napisałem i wrzuciłem na tamtą podstronkę. I co się okazało? Gdy kliknę, aby dodało pointsa to mnie wylogowywuje. To jest dziwne...
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 19.07.2025 - 10:47