Autor Zpráva
aladin
Profil *
zdravím,pořád doumám nad tím,jak udělat funkci pro databázi..ale tím způsobem,že bych udělal funkci, a jen měnil proměnnou
mám udělanej příklad:

class database{
  static public function db($dd){ 
   require_once 'cn.php';
    $sql = 'SELECT * FROM    sid ORDER BY id';
    $result = mysql_query($sql, $cn) or    die(mysql_error($cn));
    while ($row = mysql_fetch_assoc($result)) {    
      return $row[$dd];
    }
  }
}
vlastně proměnnou dd bych měnil daný sloupec..samozřejmě po zavolání tý funkce..
že bych to nemusel všude znova a znova psát,ale že bych měl prostě jen tu funkci
např,bych potřeboval tady sloupe ID tak bych udělal db("Id")
tamhle bych potřeboval sloupec name tak bych udělal db("name")
apod..jenže mě to nějak prostě nechce fakčit..nevíte kde dělám chybu?
ps: jde to takhle vůbec?..
pps: chci se zeptat,jak je možný že mě require_once když to dám na začátek stránky,tak v class/funkci mě to jakoby ignoruje a musím to dát přímo do tý funkce?
peta
Profil
SELECT * FROM sid ORDER BY id
VYBER (*) vsechny sloupce Z TABULKY sid A SERAD PODLE id.
Kdyz chces vybirat jeden sloupec, tak je zbytecne vybirat celou tabulku, ne?

db("Id"); // mas urcite id prvni pismenko velke?
$this->db("Id"); // se pise preci takhle nebo
$promenna_database->db("Id"); // se pise preci takhle nebo
Kdyz tam dopises
  static public function db($dd){ 
echo 123;
To echo se zobrazi?
"nechce fakčit" - Nerozumim, co si prave pod tim pojmem predstavujes. Pise ti to nejakou chybu? Mas povolene error_reporting? Nic se nestane? Nebo to vypise pokazde to same? Echo volani te funkce vypise co?
echo 'predek'.$this->db("Id").'zadek';
Bud se neco vypise nebo mezi predek a zadek nic neni (a to pak jsi kastrovany :) ). To muze pak znamenat, ze tam vybiras neexistujici sloupec nebo je hodnota prazdna a nebo selhal treba sql dotaz. 2 z tech 3 moznosti vypisi php chybu, pokud mas spravne nastavene error_reporting.

return $row[$dd];
Vrati prvni radek, hodnotu sloupce podle $dd. Ostatni radky se ignoruji, protoze to hned returnujes. Pak by bylo ale pro pamet uspornejsi, kdyby sql dotaz obsahoval hnedka LIMIT 1, kdyz o dalsi radky stejne nemas zajem.

require_once - neporadim, to bych musel zkusit. Ja to pouzivam vyhradne na zacatku souboru.
DJ Miky
Profil
aladin:
pps: chci se zeptat,jak je možný že mě require_once když to dám na začátek stránky,tak v class/funkci mě to jakoby ignoruje a musím to dát přímo do tý funkce?

Pravděpodobně tam máš globální proměnnou $cn, k ní se jde z metody db() dostat např. pomocí $GLOBALS['cn'] nebo dát na začátek metody global $cn;, nicméně čistší řešení by bylo třeba připojit se uvnitř třídy database, tzn. vytvořit si např. statickou metodu connect(), která se připojí do databáze a identifikátor připojení uloží do statického atributu uvnitř třídy - self::$cn, který pak můžeš stejným způsobem využívat i uvnitř dalších metod třídy.

Anebo ještě jednodušší řešení je vůbec $cn do funkcí mysql_query, mysql_error apod. nepředávat - není to potřeba, pokud používáš jenom jedno připojení k databázi, vezme se to naposledy vytvořené. Stačí tedy jen psát mysql_query($sql), mysql_error() apod.
aladin
Profil *
no,tohle jsem už vyřešil,tak tohle už neřešte:)
abych nezakládal nový téma,tak to napíšu sem..potřeboval bych pomoct
Viz Jak na cykly v šablonách

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0