Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql], kwerenda z where in ()
monika777
post 25.10.2007, 15:07:31
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2007

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


mam zapytanie

  1. <?php
  2. $sql = "SELECT * FROM polisy_z WHERE nr_polisy in ('13,14,17,19') AND id_menager='$_SESSION[id_menager]'";
  3. ?>


wyswietlaja sie nr polis tylko tych zawartych w nawiasie oraz tylko dla zalogowanego menagera.. co zrobić jeśli chce by te numery nie byly na sztywno? Zalozmy ze uzytkownik ma formularz gdzie wpisuje sobie numery polis oddzielajac przecinkami a zmienna ta jest wysylana jakos $_POST[polisy]. Mam tak i nie dziala:

  1. <?php
  2. $sql = "SELECT * FROM polisy_z WHERE nr_polisy in ($_POST[polisy]) AND id_menager='$_SESSION[id_menager]'";
  3. ?>
Go to the top of the page
+Quote Post
kszychu
post 25.10.2007, 15:12:22
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A echo $sql co Ci pokazuje?


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
nevt
post 25.10.2007, 16:28:39
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Brakuje ci apostrofów, zamień na:
  1. <?php
  2. $sql = "SELECT * FROM polisy_z WHERE nr_polisy in ('".$_POST['polisy']."') AND id_menager='".$_SESSION['id_menager']."';";
  3.  
  4. // albo prościej...
  5.  
  6. $polisy = $_POST['polisy'];
  7. $manager = $_SESSION['id_menager'];
  8. $sql = "SELECT * FROM polisy_z WHERE nr_polisy in ('$polisy') AND id_menager='$manager';";
  9. ?>


Powinno działać. Jesli pole id_menager jest typu liczbowego, to wskazane jest wywalić apostrofy, bo następuje niepotrzebna konwersja typów, czyli samo id_menager=$manager ...

Na marginesie: manager = kierownik, dyrektor, menedżer, itp... a menagerie = menażeria - zmień, bo jeszcze ktoś z szefostwa się na ciebie obrazi smile.gif

Pozdrawiam, powodzenia.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
monika777
post 26.10.2007, 08:58:58
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2007

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


dzieki, działa juz... i tego mEnagera tez zmienie snitch.gif mam teraz nastepny problem zwiazany z wyswietlaniem okreslonych numerow polis. Jak wpisuje 12,13,14,18,19 to te polisy mi sie wyświetlaja wiec jest ok, ale zalozenie jest takie ze nr polis mam w pliku excel i jak je zaznacze i skopiuje do okienka to wszystko sie rozwala i nie ma przecinków a przeciez w in(..,..,..) sa przecinki.. jak to obejść? Przeciez nie zmusze osob, zeby recznie wpisywaly nr polis i wstawialy przecinki sad.gif
Go to the top of the page
+Quote Post
no_face
post 26.10.2007, 10:42:08
Post #5





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


W sumie nie trzeba recznie wpisywac przecinkow, jesli to nie sprawia problemu mozna z exela exportowac (zpisac) do pliku txt z dodanymi przecinkami miedzy danymi. Musisz uwazac na spacje i tabulatory, ktore trzeba byloby usunac w tym przypadku.

Jesli jednak ma to byc robione wlasnie w taki sposob o jakim wspominasz to mozesz obejsc to po przez zamiane spacji/tabulatorow wystepujacych pomiedzy nr na przecinki i taki ciag podstawisz do zapytania.
Go to the top of the page
+Quote Post
nevt
post 26.10.2007, 10:57:44
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Dodaj linijkę (przed $sql = ...)
  1. <?php
  2. $polisy= preg_replace('/s+?/', ',', $polisy);
  3. ?>

i powinno pomóc...

Ten post edytował nevt 26.10.2007, 15:49:46


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
monika777
post 26.10.2007, 14:13:42
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2007

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


z excela zapisuje jako csv rozdzielany przecinkami..rozdziela srednikami ale tego podobno nie da sie zmienic, wiec otwieram sobie notatnik i robie znajdz i zamien ';' na ','.. moze byc, ale mnie to nie zadowala...

zrobiłam tak:
  1. <?php
  2. $polisy = $_POST['polisy'];
  3. $polisy = preg_replace('/ss+/', ', ', $polisy);
  4. ?>


prawie dobrze dziala, tylko ze musza byc 2 spacje lub 2 tabulatory a ja chce zeby dawal przecinki od razu jak widzi jedna spacje lub tab.. gdzie mam zle?

to co kolega wyzej napisal niestety nie dziala.. blad w linii wyswietla dry.gif

rozwiazałam juz, taki szczegól ale dzieki chlopaki za pomoc snitch.gif

Ten post edytował monika777 26.10.2007, 14:46:19
Go to the top of the page
+Quote Post
nevt
post 26.10.2007, 15:48:50
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Działa - jednego przecinka brakowało - czy komunikaty o błędach w kodzie są dla ciebie zrozumiałe? Na formum nie ma parsera składni, często literówki się zdażają...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
monika777
post 27.10.2007, 13:23:19
Post #9





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.09.2007

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


tak, literowki to norma.. juz wszystko dziala
Go to the top of the page
+Quote Post

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: 14.08.2025 - 02:02