Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie rekordu z tablicy według zmiennej z innej tabeli
Forum PHP.pl > Forum > PHP
grzesiek25
  1. $sql = "SELECT id, pole, pole2, pole3, pole4 from tabela";
  2. $res = mysql_query($sql) or die('Błąd wykonania zapytania: '.mysql_error());
  3. while($cos = mysql_fetch_array($res))
  4. {
  5. $cos['id'] = $cos['id'];
  6. $cos['pole'] = $cos['pole'];
  7. $cos['pole2'] = $cos['pole2'];
  8. $cos['pole3'] = $cos['pole3'];
  9. $cos['pole4'] = $cos['pole4'];
  10.  
  11. $zmienna = 'jakis ciag znakow';
  12.  
  13. $liczenie = mysql_query("SELECT id FROM tabela2 WHERE pole5='{$cos['id']}' AND pole6 = '$zmienna'") or die('Błąd wykonania zapytania: '.mysql_error());
  14. $wykonaj = mysql_num_rows($liczenie);
  15.  
  16. $data[]=$cos;
  17. }


dane po tym wylistowuje przez foreach
Problem polega na tym że chcę w tej tablicy "data" wywalić rekordy które nie spełnią wymogów "$wykonaj"
Powiedzmy że $wykonaj zwróci liczbę 0 i wtedy ten rekord nie może zostanie dołączony do tablicy "data" jednak gdy zwróci np. 1 lub więcej wtedy już taki rekord powinien zostać dołączony do tablicy "data"
Wie ktoś jak to zrobić ?
CuteOne
  1.  
  2. while($cos = mysql_fetch_array($res)) {
  3.  
  4. $liczenie = mysql_query("SELECT id FROM tabela2 WHERE pole5='{$cos['id']}' AND pole6 = '$zmienna'") or die(mysql_error());
  5. $wykonaj = mysql_num_rows($liczenie);
  6.  
  7. if(mysql_num_rows($wykonaj)) {
  8.  
  9. $cos['id'] = $cos['id'];
  10. $cos['pole'] = $cos['pole'];
  11. $cos['pole2'] = $cos['pole2'];
  12. $cos['pole3'] = $cos['pole3'];
  13. $cos['pole4'] = $cos['pole4'];
  14.  
  15. $data[] = $cos;
  16. }
  17. }


Można też kombinować z łączeniem tabel - google -> mysql LEFT JOIN
grzesiek25
Cytat(CuteOne @ 20.05.2011, 16:47:32 ) *
  1.  
  2. while($cos = mysql_fetch_array($res)) {
  3.  
  4. $liczenie = mysql_query("SELECT id FROM tabela2 WHERE pole5='{$cos['id']}' AND pole6 = '$zmienna'") or die(mysql_error());
  5. $wykonaj = mysql_num_rows($liczenie);
  6.  
  7. if(mysql_num_rows($wykonaj)) {
  8.  
  9. $cos['id'] = $cos['id'];
  10. $cos['pole'] = $cos['pole'];
  11. $cos['pole2'] = $cos['pole2'];
  12. $cos['pole3'] = $cos['pole3'];
  13. $cos['pole4'] = $cos['pole4'];
  14.  
  15. $data[] = $cos;
  16. }
  17. }


Można też kombinować z łączeniem tabel - google -> mysql LEFT JOIN


To działa tylko połowicznie bo pokazuje faktycznie tylko rekordy gdzie liczba jest większa niż 1 dla przykładu if(mysql_num_rows($wykonaj) >= 1) { tylko że pager nospora mi wtedy szaleje, ma ustawienie 25 rekordów na stronie a na 1 pokazuje 13 rekordów na drugiej 16, na 6 23 itd. natomiast bez tego kodu wywalającego niepotrzebne rekordy pager działa bez zarzutu tzn na każdej stronie jest po tyle samo wyników poza ostatnią naturalnie ;-)
Więc ta metoda (mysql_num_rows) raczej odpada.
Możesz mi podać przykład użycia LEFT JOIN w tym zapytaniu?
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.