Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jezeli id nie istnieje to error
Forum PHP.pl > Forum > Przedszkole
Rafał 40x
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 smile.gif

Prosze o pomoc.
Cysiaczek
  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,
Rafał 40x
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 smile.gif

Pozdrawiam.
skowron-line
to sobie najpierw policz rekordy w bazie i porownaj z liczba z $_GET-a i jak sie nie bedzie zgadac to wywal blad
Rafał 40x
cos w tym stylu?

  1. <?php
  2. $num = mysql_num_rows ($result);
  3. if ( $num != $_GET['id'] ) {
  4. // user nie istnieje
  5. }
  6. ?>
Cysiaczek
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. ?>
Rafał 40x
Nie działa 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. ?>
My4tic
@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.
Rafał 40x
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 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?
phpion
  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.
Rafał 40x
Ok. Zacznijmy od nowa.

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

Otóż dlaczego? Zaraz wyjaśnię 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ł 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? tongue.gif

Pozdrawiam i dziękuję.
phpion
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...
Rafał 40x
Ok. Zwacam honor. Mój błąd. Wykorzystałem Twój kod i działa cacy winksmiley.jpg
phpion
No.
smile.gif pozdrawiam smile.gif
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.