Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql]Zapytanie Select z warunkami z tablicy
kaszanka
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


hi,

Mam w tablicy kilka imion w postaci:
  1. <?php
  2. Array ( [0] => michal [1] => tomasz [2] => marian [3] => mariusz )
  3. ?>

Następnie z bazy wyciągam wszystkie inne imiona które nie znajdują się w powyższej tablicy, czyli robię to w ten sposób:

  1. <?php
  2. $ilosc = count($tablica); //liczy ile jest imion w tablicy
  3.  
  4. for($iw=0; $iw<$ilosc; $iw++) {
  5. $result=mysql_query("panel",'SELECT imiona FROM dane WHERE imiona NOT LIKE '.$tablica[$ilosc].' ');
  6. while ($row=mysql_fetch_array($result)) { echo "$row[imiona]"; }
  7. }
  8. ?>

Jednak wywala błąd: Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in

Co takiego w tym zapytaniu jest złego? (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie wiem czy zauwazyles ale to co chezs wyszukas ujmuje sie w " " a w dodatku dodaje sie w srodek znaki %. WSZYSTKO jest w manualu.
Go to the top of the page
+Quote Post
webasek
post
Post #3





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Jedna mała uwaga w ten sposób zwrócisz wszystkie imiona najpierw różne od michal potem od tomasz

innymi słowy najpierw zwrócisz wszystkie poza michal potem wszystkie poza tomasz itd...

A myślę, że chodziło raczej o wyświetlenie wszystkich imion poza tymi, które są w tablicy przynajmniej tak napisałeś więc zainteresuj się not in
Go to the top of the page
+Quote Post
kaszanka
post
Post #4





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


@webasek właśnie o coś takiego mi chodzi, więc napisałem:

  1. <?php
  2.  
  3. $result=mysql_query("panel","SELECT imiona FROM dane WHERE imiona NOT IN ('$tablica')");
  4. while ($row=mysql_fetch_array($result)) { echo "$row[imiona]"; }
  5.  
  6. ?>
Jednak to też nie działa tak jak powinno tzn wyświetla wszystkie ale nie wyklucza imion z tablicy ;/

Ten post edytował kaszanka 16.10.2008, 09:22:13
Go to the top of the page
+Quote Post
webasek
post
Post #5





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Zrób tak

  1. <?php
  2. $tab = implode(',',$tablica);
  3.  
  4. $result=mysql_query("panel","SELECT imiona FROM dane WHERE imiona NOT IN ($tab)");
  5. while ($row=mysql_fetch_array($result)) { echo "$row[imiona]"; }
  6. ?>


lub

  1. <?php
  2. $tab="";
  3. for (i=0;i<count($tablica);i++)
  4. {
  5. $tab .="'".$tablica[$i]."',";
  6. }
  7. $result=mysql_query("panel","SELECT imiona FROM dane WHERE imiona NOT IN ($tab)");
  8. while ($row=mysql_fetch_array($result)) { echo "$row[imiona]"; }
  9. ?>
Go to the top of the page
+Quote Post
kaszanka
post
Post #6





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


@webasek nie wiem co jest grane lecz żaden z podanych przez Ciebie przykładów nie działa tak jak powinien, tak jakby zmienna $tab w ogóle nie była brana pod uwagę :|
jeżeli w zapytaniu wpiszę:
WHERE imiona NOT IN ($tab)
to w ogóle nie wyklucza imion z tablicy, natomiast
WHERE imiona IN ($tab)
nie wyświetla żadnego wpisu z bazy.
Go to the top of the page
+Quote Post
mike
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Wartości typu string umieszcza się w apostrofach lub cydzysłowach!

Idiotyczne zapisy typu:
  1. <?php
  2.  
  3. Array ( [0] => michal [1] => tomasz [2] => marian [3] => mariusz )
  4.  
  5. ?>
są błedne. Powinno być:
  1. <?php
  2.  
  3. Array ( [0] => 'michal' [1] => 'tomasz' [2] => 'marian' [3] => 'mariusz' )
  4.  
  5. ?>
Go to the top of the page
+Quote Post
kaszanka
post
Post #8





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


Chyba się przeliczyłem ostro z moimi umiejętnościami.

Skoro zawartość tablic ma być zwracana w apostrofach lub cudzysłowach to jak to zrobić?
Nawet pierwsze przykłady z php.net.pl przedstawiane są w taki sposób jak mój wyżej:

  1. <?php
  2. $pierwszy_kwartal  = array(1 => 'Styczeń', 'Luty', 'Marzec');
  3. print_r($pierwszy_kwartal); // co wyświetli na stronie:
  4. Array ( [1] => Styczeń [2] => Luty [3] => Marzec )  // i jakoś nie widzę by było 'Styczeń'
  5. ?>
Go to the top of the page
+Quote Post
mike
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ech, racja. Bo to wynik print_r. Przepraszam ale co druga osoba pomija te rzeczy.

Jeśli chodzi o zapytanie to sytuacja jest podobna. Imiona to stringi i w zapytaniu też muszą być w apostrofch.
Spróbuj tak:
  1. <?php
  2.  
  3. $tab = implode("','",$tablica);
  4.  
  5. $result=mysql_query("panel","SELECT imiona FROM dane WHERE imiona NOT IN ('$tab')");
  6.  
  7. ?>


A i zapomniałbym. Kompletnie źle korzystasz z mysql_query()
Zobacz sobie jakie ta funkcja przyjmuje parametry: http://pl.php.net/mysql_query
Go to the top of the page
+Quote Post
kaszanka
post
Post #10





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


Dziękuje @mike, teraz hula jak ta lala (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
A o mysql_query na pewno poczytam.
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 - 17:54