Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] sprawdź czy element istnieje jeżeli nie to dodaj
Forum PHP.pl > Forum > Przedszkole
gregi
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. }
patry6123
$query = mysql_num_rows(mysql_query("SELECT * FROM ..."));
if($query>0){
//jak jest
}
elseif($query == 0){
//jak nie ma
}
gregi
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){
patry6123
pokaż co Ci pokazuje var_dump($result) i var_dump($query) i w obu przypadkach czy nie ma mysql_errno();
gregi
  1. $result = mysql_query("SELECT id_slowka_film FROM Film")


przy powyższej skróconej wersji też ten sam błąd
patry6123
O dziwo to nie błąd, pma zwraca mi wszystko ok
gregi
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++
patry6123
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
}
gregi
nie potrafię tego złożyć do kupy według twoich wskazówek
cały czas mam problem z wektorem na baze danych
patry6123
Podaj swój kod
gregi
  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. }}}



patry6123
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.  
gregi
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)
patry6123
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.
gregi
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
rad11
a czy warunek nie powinien wygladac tak przypadkiem ?
  1. mysql_num_rows($result2) > 0
patry6123
Jaka jest różnica między warunkiem x!=0 a x>0 przy założeniu że x € N
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.