Skocz do zawartości


- - - - -

ROZWIĄZANY: Zapytanie jak to wyglada w ipb


16 odpowiedzi w tym temacie

#1 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 25 luty 2010 - 14:56

Cześć, mam pytanie odnośnie tworzenia zapytań do bazy w IPB. Otóż przykładowo teraz stworzyłem sobie takie zapytanie:

SELECT COUNT(id) as 'Ilość akcji' from ibf_moderator_logs where member_name LIKE '%Ausir%'

Przykładowe zapytania z plików IPB wyglądają następująco:

				$this->ipsclass->DB->simple_construct( array(
												 	'select' => 'COUNT(*) as pcount',
													'from' => 'posts',
												 'where' => "topic_id=".$this->topic['tid']." and queued !=1"
											 ) 	);
							 
		 $this->ipsclass->DB->simple_exec();

Próbowałem różnych sposobów, lecz wywala mi błąd. Może ktoś nakreśli jak to będzie wyglądało, na tym konkretnym przykładzie? :)

Użytkownik Dr R.I.P edytował ten post 25 luty 2010 - 14:58


#2 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 25 luty 2010 - 15:03

        $this->ipsclass->DB->simple_construct( array(
                                      'select' 	=> 'COUNT(id) as ilosc_akcji',
                                      'from' 	=> 'moderator_logs',
                                      'where' 	=> "member_name LIKE '%Ausir%'"
                                            )	);
              
        $this->ipsclass->DB->simple_exec();

intermedia - profesjonalne rozwiązania Invision Power Board

#3 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 25 luty 2010 - 15:27

Więc może wskażesz mi błąd w tym zapytaniu?

 	$this->ipsclass->DB->simple_construct( array (
											 	'update' => 'topics',
											 	'SET'	=> "title = REPLACE('title', 'RS', '')" 
											 	'where' => "title LIKE '%RS%'"
								 	) 	);
								
			$this->ipsclass->DB->simple_exec();

Męczę się z tym od wczoraj. :)

#4 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 25 luty 2010 - 15:34

No tak to tego na pewno no zrobisz. :)

Musisz użyć jednej z dwóch metod:
$this->ipsclass->DB->build_query( array() );
$this->ipsclass->DB->do_update( 'table', $array_z_warunkami, 'where' );

Odsyłam do plików IP.Board w celu dokładniejszego poznania ich, gdyż to, co podałem można nazwać co najwyżej szablonem.
intermedia - profesjonalne rozwiązania Invision Power Board

#5 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 25 luty 2010 - 15:37

Ok pogrzebię, w razie czego będę pisał w temacie z taskiem z dawien dawna. :) Dzięki za pomoc. Staram się wreszcie czegoś nauczyć ah te video tutki php+mysql :a: niby podstawy pokazują ale później człowiek się w tym gubi. :)

#6 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 25 luty 2010 - 15:42

PHP swoją drogą, ale znajomość frameworka IP.Board swoją. :)

Dasz radę, a jak nie to ... POMOŻEMY! :)
intermedia - profesjonalne rozwiązania Invision Power Board

#7 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 27 luty 2010 - 18:55

Cześć, piszę po wielu próbach i szukaniach w pliku, niestety nie udaje mi się poprawnie napisać tego zapytanie w IPB. Szukanie w google też nie pomogło, chyba mnie to przerosło. :)

#8 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 27 luty 2010 - 18:58

Ale czego Ty szukałeś w guglu? Dlaczego chcesz je dodać, jako kod IP.Board?

Wykonaj po prostu takie zapytanie:
$query = $this->ipsclass->DB->query("ZAPYTANIE");

Pamiętaj o prefixie, np. tak:
$query = $this->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."members");

intermedia - profesjonalne rozwiązania Invision Power Board

#9 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 27 luty 2010 - 19:01

Szukałem jak to ma wyglądać w IPB, chce to zrobić jako kod, by dodać jako task. :)

#10 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 27 luty 2010 - 19:04

Podałem. :)
intermedia - profesjonalne rozwiązania Invision Power Board

#11 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 27 luty 2010 - 19:06

Przez "podałem" masz na myśli te linijki z przed dwóch dni? Jeśli tak to próbowałem to napisać jednak nie wyszło, wywalało błąd (próbowałem różniście to wpisać), a jeśli chodziło Ci o to sprzed 6 minut to zaraz sprawdzę.

#12 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 27 luty 2010 - 19:42

Nie mogę się już edytować więc zapytam, czemu gdy mam takie zapytanie, po wykonaniu zamiast zmienić to na puste pole '' zmienia całą nazwę na "title"?

$query = $this->ipsclass->DB->query("UPDATE " .SQL_PREFIX."topics ". "SET title = REPLACE('title', 'RS', '')". "where => title LIKE '%RS%'");

Użytkownik Dr R.I.P edytował ten post 27 luty 2010 - 19:44


#13 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 27 luty 2010 - 19:44

Po pierwsze to tak dla czystości kodu:
$query = $this->ipsclass->DB->query("UPDATE " . SQL_PREFIX . "topics SET title = REPLACE('title', '[UP]', '') WHERE title LIKE '%[UP]%'");

Po drugie - każdy temat zmienia cały czy tylko te z [UP]?
intermedia - profesjonalne rozwiązania Invision Power Board

#14 Dr R.I.P

    Death comes quickly

  • Użytkownik
  • 1100 postów
  • Wersja:n/c

Napisano 27 luty 2010 - 19:45

Tylko te z UP, na "title", zamiast to wymazać wstawia nazwę "title". Zaraz przetestuję

//Edit załączyłem screena

Tak wygląda zapytanie:

$query = $this->ipsclass->DB->query("UPDATE " . SQL_PREFIX . "topics SET title = REPLACE('title', '[testuje task]', '') WHERE title LIKE '%[testuje task]%'");

Załączone pliki


Użytkownik Dr R.I.P edytował ten post 27 luty 2010 - 19:51


#15 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49360 postów
  • Wersja:IP.Board 3.2.3

Napisano 27 luty 2010 - 19:58

'title' bez '. Więcej info :) http://forum.invisio...ndpost__p__7665
intermedia - profesjonalne rozwiązania Invision Power Board





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych