Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa do mysql
Forum PHP.pl > Forum > Przedszkole
piwoszeq
  1. <?php
  2. /* Do obsługi mysql :) */
  3. class DbManager
  4. {
  5. /* Zmienne */
  6. private $connectDb;
  7. private $disconnectDb;
  8. public $sql;
  9. public $countQuery = 0;
  10.  
  11. /* Konstruktor całej klasy */
  12. public function __construct()
  13. {
  14. $this->isConnectDb();
  15. }
  16. /* Łączenie z bazą */
  17. private function isConnectDb()
  18. {
  19. $this->connectDb = @mysql_connect(DB_SERWER, DB_USERNAME, DB_PASSWORD);
  20. @mysql_select_db(DB_DATABASE);
  21. return $this->connectDb;
  22. }
  23. /* Do zadawania pytań :) (liczy ile ich jest :)) */
  24. public function query($strQuery)
  25. {
  26. $this->sql = mysql_query($strQuery);
  27. $this->countQuery++;
  28. return $this->sql;
  29. }
  30. /* Wyciąga z bazy Wiersze */
  31. public function getRows($arrRows)
  32. {
  33. $this->getRows = explode (",", $arrRows);
  34. for ($i = 0; $i <= count($this->getRows); $i++)
  35. {
  36. while ($row = mysql_fetch_array($this->sql))
  37. {
  38. echo "$row[$i], $row[$i]<br>";
  39. }
  40. }
  41. }
  42. /* Kończy połączenie z baza */
  43. public function CloseDb()
  44. {
  45. $this->disconnectDb = mysql_close($this->connectDb);
  46. }
  47. }
  48. ?>


Chcialbym aby funkcja getRows odbierała wszystkie wyniki z zapytania do bazy, ale jakos nigdy mi to poprawnie nie wychodzilo sad.gif
Moze jakies sugestie ?smile.gif

go up!
piwoszeq
  1. <?php
  2. /* Wyciąga z bazy Wiersze */
  3. public function getRows($arrRows)
  4. {
  5. $this->getRows = explode (",", $arrRows);
  6. for ($i = 0; $i <= count($this->getRows); $i++)
  7. {
  8. while ($row = mysql_fetch_array($this->sql))
  9. {
  10. echo "$row[$i], $row[$i]<br>"; // tutaj nie mam pojecia co dalej zrobic :(
  11. }
  12. }
  13. }
  14. ?>


uzywam tego
  1. <?php
  2. $baza->query('SELECT name, category_id FROM category ORDER BY name ASC');
  3. $baza->getRows("name, category_id");
  4. ?>


czyli takie tabele jakie mam w selekcie
i mam problem aby przekazac te info do smary sad.gif
erix
Cytat
  1. <?php
  2. echo "$row[$i], $row[$i]<br>"; // tutaj nie mam pojecia co dalej zrobic :(
  3. ?>

Zamiast echo daj instrukcje do przypisywania zmiennych w Smartach.

edit: @mike_mech

Sorry, ale zmyliła mnie ta linijka z echo.

Napiszę jednak to, co miałem wcześniej biggrin.gif

  1. <?php
  2. public function getRows($arrRows)
  3. ?>

  1. <?php
  2. $baza->getRows("name, category_id");
  3. ?>

Nie przypisujesz wyniku do zmiennej, a tak nawiasem, to funkcja niczego nie zwraca.
mike
Cytat(erix @ 19.10.2006, 17:03:23 ) *
Zamiast echo daj instrukcje do przypisywania zmiennych w Smartach.

A po co?
Piszesz jakbyś nie miał pojęcia o czym dyskusja, co dziwne bo już się udzielales wyżej w wątku.
piwoszeq
napisze co ta funkcja ma robic smile.gif
odbierac wyniki z zapytania i przekazywac go do smarty tongue.gif
nie mam pojecia zbytnio jak to zrobic sad.gif
erix
Cytat
  1. <?php
  2. $baza->getRows("name, category_id");
  3. ?>

  1. <?php
  2. $this->getRows = explode (",", $arrRows);
  3. ?>

Nie wstawiaj spacji w parametrze getRows, bo eksplodujesz przez sam przecinek.

Ja bym proponował zrobić coś takiego (ostrzegam, przy większych danych będą działy się jaja):

  1. <?php
  2. public function getRows($arrRows){
  3. if(!$this->sql){
  4. return false;
  5. }
  6.  
  7. $arr = array();
  8.  
  9. while ($row = mysql_fetch_assoc($this->sql)){
  10. $arr[] = $row;
  11. }
  12.  
  13. mysql_free_result($this->sql);
  14.  
  15. return $arr;
  16. }
  17. ?>


Wywołaj to np. tak:
  1. <?php
  2. $baza->query('SELECT name, category_id FROM category ORDER BY name ASC');
  3. $dane = $baza->getRows();
  4.  
  5. if($dane!=false){
  6. $smarty->assign(/*...*/); //zaleznie od struktury szablonu
  7. }
  8. ?>
piwoszeq
twoj tok rozumowania jest inny od mojego smile.gif
mam 2 tabele id oraz id2

i jak zrobie jak ty mi powiedziales to niezly bajzel sie robi i nie wiadomo jak to odczytac

chce aby robil tablice z nazwa tabeli bylo by prosciej ?
czyli moj sposob jest dobry ;DDDD

edit: oczywiscie nie wiem ile bedzie tabeli, nie wiem jak to inaczej wyrazic
erix
Cytat
mam 2 tabele id oraz id2

W zapytaniu widzę tylko jedną.

Cytat
i jak zrobie jak ty mi powiedziales to niezly bajzel sie robi i nie wiadomo jak to odczytac

Przecież wszystko w tablicy $dane siedzi :/
/przynajmniej powinno
piwoszeq
hmmm
nie tabele lecz kolumny smile.gif

teraz jest bajzel wsio z tabel jest w jednej tablicy a chce aby bylo w tylu tablicach ile jest kolumn i kazda tablica nazwyala sie jak kolumna oraz zawierala tam dane z tej kolumny.

inaczej chyba nie umiem wytlumaczyc.
erix
Cytat
nie tabele lecz kolumny

Cytat
kazda tablica nazwyala sie jak kolumna oraz zawierala tam dane z tej kolumny.

Tak ciężko było to z siebie wydukać?

  1. <?php
  2. if($dane!=false){
  3. $c = count($dane);
  4.  
  5. for($a=0;$a<$c;$a++){
  6. foreach($dane[$a] as $k=>$v){
  7. ${$k}[] = $v;
  8. }
  9. }
  10. }
  11. ?>

Powstaną wówczas dwie tablice o nazwach kolumn.
Pisane z palca.
piwoszeq
  1. <?php
  2. public function getRows($arrRows)
  3. {
  4. $this->getRows = explode (",", $arrRows);
  5. $dane = $this->getRows;
  6. $c = count($dane);
  7. while ($row = mysql_fetch_array($this->sql))
  8. {
  9. for($a=0;$a<$c;$a++)
  10. {
  11. echo $row[$a];
  12. }
  13. }
  14. }
  15. ?>


stanelo na czyms takim, dziala prawidlowo, ale smile.gif

jak przekazac to wsio do smarty ?
bo jak biore
  1. <?php
  2. $smarty->assign('title', $baza->row['1']);
  3. ?>

to niestety nie dziala sad.gif

go up!
pomoze ktos ?smile.gif

moze ktos juz cos wie ?snitch.gif
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-2024 Invision Power Services, Inc.