Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie rekordu z tablicy według zmiennej z innej tabeli
grzesiek25
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


  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ć ?

Ten post edytował grzesiek25 20.05.2011, 16:16:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  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

Ten post edytował CuteOne 20.05.2011, 15:48:05
Go to the top of the page
+Quote Post
grzesiek25
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


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?
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 23:04