Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] sprawdź czy element istnieje jeżeli nie to dodaj
gregi
post 5.02.2015, 17:50:47
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


Potrzebuje wsparcia, ponieważ nie mogę rozwiązać zagadki jak to ugryźć

  1. class porównaj
  2. {
  3. function __construct($tabela1,$tabela2,tabela3)
  4.  
  5. $result = mysql_query("SELECT id_film FROM $tabela1 WHERE id_film ");
  6. $result2 = mysql_query("SELECT id_film FROM $tabela2 WHERE id_film ");
  7. $result3 = mysql_query("SELECT id_film FROM $tabela2 WHERE id_film ");
  8.  
  9. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  10.  
  11. while (!empty($row[id_film]) )
  12. {
  13. sprawdź czy każdy element z tabeli1 jest w tabeli 2, jeżeli jest to dodaj do tabeli 3 pod warunkiem że tam go nie ma( w tabeli 3):)
  14.  
  15. }
  16. }


Ten post edytował gregi 5.02.2015, 17:53:11
Go to the top of the page
+Quote Post
patry6123
post 5.02.2015, 18:05:58
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


$query = mysql_num_rows(mysql_query("SELECT * FROM ..."));
if($query>0){
//jak jest
}
elseif($query == 0){
//jak nie ma
}
Go to the top of the page
+Quote Post
gregi
post 5.02.2015, 19:15:14
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


już z tą funkcją walczyłem i mam błąd:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

  1. $result = mysql_query("SELECT id_film FROM $kategoria WHERE id_film ");
  2.  
  3. $query = mysql_num_rows($result);
  4.  
  5. if($query>0){
Go to the top of the page
+Quote Post
patry6123
post 5.02.2015, 19:45:01
Post #4





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


pokaż co Ci pokazuje var_dump($result) i var_dump($query) i w obu przypadkach czy nie ma mysql_errno();

Ten post edytował patry6123 5.02.2015, 19:50:11
Go to the top of the page
+Quote Post
gregi
post 5.02.2015, 19:47:13
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


  1. $result = mysql_query("SELECT id_slowka_film FROM Film")


przy powyższej skróconej wersji też ten sam błąd
Go to the top of the page
+Quote Post
patry6123
post 5.02.2015, 19:49:04
Post #6





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


O dziwo to nie błąd, pma zwraca mi wszystko ok

Ten post edytował patry6123 5.02.2015, 19:51:50
Go to the top of the page
+Quote Post
gregi
post 5.02.2015, 20:17:35
Post #7





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


Cytat(patry6123 @ 5.02.2015, 20:45:01 ) *
pokaż co Ci pokazuje var_dump($result) i var_dump($query) i w obu przypadkach czy nie ma mysql_errno();


bool(false)
bool(false)

Dzięki )
Teraz rozumiem że mam złe dane wejściowe


Ale nadal nie mam pomysłu jak to algorytmicznie ogarnąć,
Problemem dla mnie wskaźnik na bazie danych który nieumiejętnie przekładam

cały czas mam problem z: sprawdź czy każdy element id_film z tabeli1 jest w tabeli 2 w polu id_film , jeżeli jest to dodaj do tabeli 3 pod warunkiem że tam go nie ma( w tabeli 3)


  1. class porównaj
  2. {
  3. function __construct($tabela1,$tabela2,tabela3)
  4.  
  5. $result = mysql_query("SELECT id_film FROM $tabela1 WHERE id_film ");
  6. $result2 = mysql_query("SELECT id_film FROM $tabela2 WHERE id_film ");
  7. $result3 = mysql_query("SELECT id_film FROM $tabela2 WHERE id_film ");
  8. $query = mysql_num_rows($result);
  9. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  10.  
  11. $i=0;
  12. while ($query>$i) //
  13. {
  14. $i++


Ten post edytował gregi 5.02.2015, 23:30:04
Go to the top of the page
+Quote Post
patry6123
post 5.02.2015, 23:47:14
Post #8





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


A powiedz mi po co Ci to? Ile będzie tam rekordów? (100-200 czy może 100000000)? Jeśli nie będzie ich dużo, to można by to zrobić na zasadzie, pobierasz z tabeli1 potem robisz
while($r = mysql_fetch_assoc($tabela1)){
//tutaj selekt z tabeli 2 gdzie stan = 0 i jeśli zwraca on rekord to coś a jak nie to coś innego. I potem zmienić stan rekordu w tabeli 1 i 2 na 1
}
Go to the top of the page
+Quote Post
gregi
post 6.02.2015, 16:38:08
Post #9





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


nie potrafię tego złożyć do kupy według twoich wskazówek
cały czas mam problem z wektorem na baze danych
Go to the top of the page
+Quote Post
patry6123
post 6.02.2015, 16:49:50
Post #10





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


Podaj swój kod
Go to the top of the page
+Quote Post
gregi
post 6.02.2015, 17:29:00
Post #11





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


  1. class Todo
  2. {
  3. function __construct($kategoria,$todo_user)
  4.  
  5. while($row = mysql_fetch_assoc($result))
  6. {
  7. $tmp=$row[id_slowka_ang];
  8. $result2 = mysql_query("SELECT id_slowka_ang FROM $todo_user WHERE id_slowka=$tmp");
  9. $row2=mysql_fetch_assoc($result2);
  10. if ($row2[id_slowka_ang] )
  11. {
  12. $result2=mysql_query("INSERT INTO $todo_user SET id_slowka= $row2[id_slowka_ang], czas= DATE_ADD( NOW( ) , INTERVAL 1 MINUTE ) ");
  13.  
  14. }
  15.  
  16.  
  17. }}}



Go to the top of the page
+Quote Post
patry6123
post 6.02.2015, 17:55:59
Post #12





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


Jezu co to jest? Siedzę i próbuję skumać jak to działa i nie rozumiem.

  1. while($row = mysql_fetch_assoc($result)) {
  2. $tmp=$row[id_slowka_ang];
  3. $result2 = mysql_query("SELECT id_slowka_ang FROM $todo_user WHERE id_slowka=$tmp");
  4. if(mysql_num_rows($result2)==1){
  5. $resutl_fetch = mysql_fetch_assoc($result2);
  6. mysql_query("INSERT INTO...");
  7. }
  8. else echo "Nie ma takiego rekordu w bazie";
  9. }
  10.  
  11.  


Ten post edytował patry6123 6.02.2015, 17:56:53
Go to the top of the page
+Quote Post
gregi
post 6.02.2015, 20:05:24
Post #13





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


if(mysql_num_rows($result2)==1){
nie jest jasny dla mnie ten warunek ==1

var_dump ($result2) zwraca warość np. resource(19) of type (mysql result)
Go to the top of the page
+Quote Post
patry6123
post 6.02.2015, 23:01:08
Post #14





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


Ta funkcja zwraca ilość rekordów jakie pobrano z bazy danych. Równie dobrze można by napisać !=0 i też będzie działać. Jeśli dobrze rozumiem o co Ci chodzi.
Go to the top of the page
+Quote Post
gregi
post 7.02.2015, 09:59:37
Post #15





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

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


Ok, dzięki
Wyjaśnię jeszcze raz jaki jest pomysł:
1) Sprawdź czy wszystkie wartości pola id_slowka_ang z tabeli1
2) Czy znajdują się w tabeli2 w polu id_slowka .
Punkt pierwszy jest realizowany funkcja while – podaje po kolei wszystkie id_slowka_ang
Punkt drugi ma być realizowany poprzez IF – ma sprawdzać czy z tablei 1 pole id_slowka_ang == id_slowka z tabeli 2

i powyższy kod chyba nie realizuje punktu drugiego

Ten post edytował gregi 7.02.2015, 10:26:02
Go to the top of the page
+Quote Post
rad11
post 7.02.2015, 10:27:01
Post #16





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


a czy warunek nie powinien wygladac tak przypadkiem ?
  1. mysql_num_rows($result2) > 0
Go to the top of the page
+Quote Post
patry6123
post 7.02.2015, 11:20:04
Post #17





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 4.12.2014

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


Jaka jest różnica między warunkiem x!=0 a x>0 przy założeniu że x € N
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: 28.04.2024 - 16:52