Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]Zapytanie Select z warunkami z tablicy
Forum PHP.pl > Forum > Przedszkole
kaszanka
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? wstydnis.gif
wookieb
Nie wiem czy zauwazyles ale to co chezs wyszukas ujmuje sie w " " a w dodatku dodaje sie w srodek znaki %. WSZYSTKO jest w manualu.
webasek
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
kaszanka
@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 ;/
webasek
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. ?>
kaszanka
@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.
mike
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. ?>
kaszanka
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. ?>
mike
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
kaszanka
Dziękuje @mike, teraz hula jak ta lala biggrin.gif
A o mysql_query na pewno poczytam.
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.