Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jezeli id nie istnieje to error
Rafał 40x
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Korzystam z takiego zapytania:

  1. <?php
  2. $result = mysql_query (" Select * From `users` Where `active` = 1 and `id` = '".$_GET['id']."' ");
  3. ?>


Link mam taki: users.php?id_user=1

Np. w bazie mam 200 userow... Jak zrobic jezeli ktos wpisze np. users.php?id_user=243 albo users.php?id_user=1422... czyli jak wpisze id usera ktory nie istnieje to wyskoczy blad?

Dostalem chyba jakiejs niewiedzy poniewaz nie moge wykombinowac jak to zrobic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Prosze o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




  1. <?php
  2. $result = mysql_query (" Select * From `users` Where `active` = 1 and `id` = '".$_GET['id']."' ") or die ("Błąd - nie ma takiego użytkownika . Tyle");
  3. ?>


Pozdrawiam,
Go to the top of the page
+Quote Post
Rafał 40x
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Nie dziala to :/ Nic nie wyswietla.

A po drugie to ja mam cos takiego (przepraszam ze dopiero teraz to pisze):

  1. <?php
  2. if ( isset ( $_GET['id'] ) && is_numeric ( $_GET['id'] ) ) {
  3. // wszystko jest ok
  4. } else {
  5. // nie jest ok
  6. }
  7. ?>


i chcialbym do warunku if dodaj to jezeli id istnieje to jest ok a jezeli nie to nie jest ok

Rozumiesz teraz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


to sobie najpierw policz rekordy w bazie i porownaj z liczba z $_GET-a i jak sie nie bedzie zgadac to wywal blad
Go to the top of the page
+Quote Post
Rafał 40x
post
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


cos w tym stylu?

  1. <?php
  2. $num = mysql_num_rows ($result);
  3. if ( $num != $_GET['id'] ) {
  4. // user nie istnieje
  5. }
  6. ?>
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




To, że sprawdzasz, czy jest ustawiona $id, to nie znaczy, ze jest ona w bazie. musiasz wykonać zapytanie do bazy, alby się o tym przekonać. Jednak, skoro chcesz po prostu sprawdzić, czy uzytkownik o danym id jest zarejestrowany, to sprawdź za pomoca funcji mysql_num_rows(), czy sa jakiekolwiek wyniki zapytania, które podajesz.
  1. <?php
  2. if (mysql_num_rows($result)!==1){
  3. print "Błąd - nie ma użytkownika";
  4. }
  5. ?>
Go to the top of the page
+Quote Post
Rafał 40x
post
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Mam tak:

  1. <?php
  2. $res = mysql_query (" Select * From `users` Where `active` = '1' ");
  3.  
  4. if ( isset ( $_GET['id'] ) && is_numeric ( $_GET['id'] ) && mysql_num_rows ( $res )!== 1 ) {
  5. $result = mysql_query (" Select * From `users` Where `active` = '1' and `id` = '".$_GET['id']."' ");
  6.  
  7. $data = mysql_fetch_array ( $result );
  8.  
  9. // tutaj dane usera
  10.  
  11. } else {
  12.  
  13. $content .= 'Taki user nie istnieje.';
  14.  
  15. }
  16.  
  17. ?>
Go to the top of the page
+Quote Post
My4tic
post
Post #8





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

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


@Rafał 40x - Twoje rozwiązanie jest bardzo niebezpieczne. Pobierasz parametr przez URL i wstawiasz go bezpośrednio do zapytania. Powiedzmy, ze bede userem o id = 1, wystarczy ze wpisze w url id = 20 i dostane dane dostępne dla usera o id = 20. Najlepiej pobierz sobie id usera podczas jego logowania, ustaw to w sesji i w zapytaniu uzywaj danych z SESSION a nie GET. Chyba ze akurat w Twoim przypadku nie jest to istotne.
Go to the top of the page
+Quote Post
Rafał 40x
post
Post #9





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Cytat
@Rafał 40x - Twoje rozwiązanie jest bardzo niebezpieczne. Pobierasz parametr przez URL i wstawiasz go bezpośrednio do zapytania. Powiedzmy, ze bede userem o id = 1, wystarczy ze wpisze w url id = 20 i dostane dane dostępne dla usera o id = 20. Najlepiej pobierz sobie id usera podczas jego logowania, ustaw to w sesji i w zapytaniu uzywaj danych z SESSION a nie GET. Chyba ze akurat w Twoim przypadku nie jest to istotne.


Nie mam rejestracji i logowania userow (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

A moge zrobic tak:

  1. <?php
  2. $id = $_GET['id'];
  3.  
  4. // i w zapytaniu dac
  5.  
  6. $id
  7. ?>


I czy ktos wie jak rozwiazac moj problem?
Go to the top of the page
+Quote Post
phpion
post
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <?php
  2. $res = mysql_query (" Select * From `users` Where `active` = '1' "); // po co to zapytanie?? nie wywalam bo moze ma byc...
  3.  
  4. if (isset ($_GET['id']) && is_numeric ($_GET['id']))
  5. {
  6. $q = "SELECT * FROM users WHERE active='1' AND id='".$_GET['id']."'";
  7. $q = mysql_query($q);
  8.  
  9. if (mysql_num_rows($q) > 0)
  10. {
  11. // user jest w bazie
  12. $data = mysql_fetch_array ($q);
  13. // tutaj dane usera
  14. }
  15. else
  16. $content .= 'Taki user nie istnieje.';
  17. }
  18. ?>

Powinno dzialac.
Go to the top of the page
+Quote Post
Rafał 40x
post
Post #11





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Ok. Zacznijmy od nowa.

- korzystam ze Smarty;
- żaden z powyższych skryptów nie zadziałał;

Otóż dlaczego? Zaraz wyjaśnię (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Wypróbowałem jeszcze raz mój kod, który napisałem tak od ręki (można nawet powiedzieć, że nie wiedziałem co piszę. Oto on:

  1. <?php
  2. $_GET['id'] = ( int ) $id;
  3.  
  4. if ( mysql_num_rows ( $result ) != $id ) {
  5. $content .= "Taka user nie istnieje.";
  6. } else {
  7. // dane usera
  8. $smarty -> assign ("content", $content);
  9.  
  10. }
  11. ?>


Pewnie domyślacie się już w czym sęk. Assign`owałem wartość zmiennej $content jeżeli użytkownik istnieje. Jeżeli nie istniał tylko definiowałem zmienną, i skrypt jej nie parsował (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) To był błąd z mojej strony!

Teraz tylko zastanawiam się, który z w.w skryptów wybrać :] A może swój? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Pozdrawiam i dziękuję.
Go to the top of the page
+Quote Post
phpion
post
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Moj kod powinien dzialac, a w twoim jest byk jak nic:
  1. <?php
  2. if ( mysql_num_rows ( $result ) != $id )
  3. ?>

juz pomijam fakt ze nie widze tu zapytanie SQL ale sprawdzasz, czy ILOSC rekordow wybranych z bazy (przy pomyslnym wykonaniu zapytania powinna wynosic w tym wypadku 1) jest rowna przekazywanemu $id. Zadziala to tylko dla usera o id=1.
Jesli nie potrafisz wykorzystac mojego kodu, a bierzesz sie za smarty - to sorry...
Go to the top of the page
+Quote Post
Rafał 40x
post
Post #13





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 2.05.2006

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


Ok. Zwacam honor. Mój błąd. Wykorzystałem Twój kod i działa cacy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
phpion
post
Post #14





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No.
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:49