Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 6.707 pregleda

Najnovija ↓

problem sa flex-om 27.12.2013. u 22:52 · pre 156 meseci #1
pozdrav, pravim aplikaciju koja bi trebalo da simulira bibliotekarski informacioni sistem. naisao sam na problem da kada popunjavam tabelu sa knjigama i treba da popunim listu, koja je ubacena u celiju, koja sluzi za izlistavanje autora za odredjenu knjigu, ne mogu da prosledim knjigaId SQL upitu.
baza je pravljena u MySQL-u, servisni fajlovi u PHP-u.

molim nekoga ako moze u vezi sa ovim da mi pomogne

svi fajlovi vezani za projekat se nalaze na ovom linku: fajlovi za projekat
Re: problem sa flex-om 28.12.2013. u 18:34 · pre 156 meseci #2
zar niko ne zna flex?
Re: problem sa flex-om 28.12.2013. u 19:41 · pre 156 meseci #3
Da li misliš da će bilo ko da debaguje tvojih 6MB.

http://www.elitesecurity.org/o/pravilnik/korisnici/

Citat:
3. Pomozite da Vam pomognemo

Ukoliko tražite pomoć oko nekog problema, molimo Vas da učinite sve što je u Vašoj moći kako biste olakšali posao ljudima čiju pomoć očekujete. To ćete učiniti na sledeći način: iz poruke isključite sve što nema veze sa problemom, a detaljno objasnite sve što je direktno ili posredno povezano sa istim!
Re: problem sa flex-om 28.12.2013. u 20:03 · pre 156 meseci #4
Kao prvo, problem sam opisao, a ako je nekome lakse da value object fajlove pisem ovde, zajedno sa php fajlom, nisam siguran koliko bi se dugo zadrzao proucavajuci kod, a onda to isto sa strane fleksa, ako je to jedini problem, nema prblema, stavicu u code tagove sve to, meni b licno bilo lakse da mi neko da sve fajlove, pa da ja nadjem gde je greska ako znam, ali ok stavkcu ti ovde tri fajla, pa se nadam da ces mi onda odgovoriti gde je greska
Re: problem sa flex-om 28.12.2013. u 20:17 · pre 156 meseci #5
php fajlovi odgovorni za prikaz tabele sa knjigama i njihovim autorima:

Code:

knjiga.php

<?php
require_once('../vo/ep/includes/DbKonektor.php');    
require_once('../vo/ep/includes/VOGreska.php');
require_once('../vo/ep/VOKnjiga.php');
require_once('../vo/ep/VOKnjigaLista.php');

    class Knjiga{
        public function getListaKnjiga() {
        
        $greska = new VOGreska();
        $greska->uspesno = true;
        
        $ret = new VOKnjigaLista();
        $ret->greska = $greska;    
        
        try{
        
        
        $konektor = new DbKonektor();
                        
        
        $upit = "SELECT
                * FROM
                knjiga    
                ";
        $rezultat = $konektor->upit($upit);
        
        $ret->knjige = array();
        while ( $row = $konektor->fetchObject($rezultat) ) {
            $tmp = new VOKnjiga();
            
            $tmp->knjigaId = $row->knjigaId;
            $tmp->ISBN = $row->ISBN;
            $tmp->naziv= $row->naziv;
            $tmp->godIzdanja = $row->godIzdanja;
            $tmp->kolicina = $row->kolicina;
            $ret->knjige[] = $tmp;
        }
        
        $konektor->oslobodiResurse($rezultat);
        $konektor->zatvori();
        
        } catch(ConnectException $e) {
            $greska->uspesno = false;
            $greska->poruka = $e->getMessage();
            $ret->greska = $greska;
        } catch(SQLException $e) {
            $greska->uspesno = false;
            $greska->poruka = "GREŠKA PRILIKOM ČITANJA PODATAKA IZ BAZE:\n\n".$e->getMessage();
            $greska->stackTrace = $e->getTraceAsString();
            $ret->greska = $greska;
        }
        
        
        
        return $ret;
        }
//ova funkcija bi trebalo da vrati samo autore koji pripadaju odredjenoj knjizi
        public function getListaKnjigaautor( $knjigaId ) {
        
        $greska = new VOGreska();
        $greska->uspesno = true;
        
        $ret = new VOKnjigaLista();
        $ret->greska = $greska;    
        
        try{
        
        
        $konektor = new DbKonektor();
                        
        
        $upit = "SELECT autor.ime, autor.Prezime, autor.autorId, knjiga.knjigaId
                    FROM autor
                    INNER JOIN knjigaautor ON autor.autorId = knjigaautor.IdAutor
                    INNER JOIN knjiga ON knjiga.knjigaId = knjigaautor.IdKnjiga
                    where knjiga.knjigaId ='". $knjiga->knjigaId ."'
                    ";
        $rezultat = $konektor->upit($upit);
        
        $ret->knjigautori = array();
        while ( $row = $konektor->fetchObject($rezultat) ) {
            $tmp = new VOKnjiga();
            
            $tmp->ime = $row->ime;
            $tmp->Prezime = $row->Prezime;
            $tmp->knjigaId = $row->knjigaId;
            $tmp->autorId = $row->autorId;
            $ret->knjigautori[] = $tmp;
        }
        
        $konektor->oslobodiResurse($rezultat);
        $konektor->zatvori();
        
        } catch(ConnectException $e) {
            $greska->uspesno = false;
            $greska->poruka = $e->getMessage();
            $ret->greska = $greska;
        } catch(SQLException $e) {
            $greska->uspesno = false;
            $greska->poruka = "GREŠKA PRILIKOM ČITANJA PODATAKA IZ BAZE:\n\n".$e->getMessage();
            $greska->stackTrace = $e->getTraceAsString();
            $ret->greska = $greska;
        }
        
        
        return $ret;

}
}
?>

VOKnjiga.php

<?php
    class VOKnjiga{
        public $ime;
        public $Prezime;
        public $naziv;
        public $ISBN;
        public $knjigaId;
        public $godIzdanja;
        public $kolicina;
        public $autorId;
        
        var $_explicitType = "ep.VOKnjiga";
    }
?>

VOKnjigaLista.php

<?php
    class VOKnjigaLista {
    public $knjige;
    public $knjigautori;
    public $greska;
    
    //explicit actionscript klasa
    var $_explicitType = "ep.VOKnjigaLista";
}
?>



sa strane flex-a
Code:

stranica na kojoj se nalazi tabela:
//........
<s:RemoteObject id="knjige"
                        destination="ep.Knjiga" 
                        source="ep.Knjiga"
                        endpoint="amfphp/gateway.php"
                        showBusyCursor="true">
            <s:method name="getListaKnjiga" result="getListaKnjigaResult(event)" fault="faultHandler(event)"/>
            <!--<s:method name="deleteKorisnik" result="deleteKorisnikResult(event)" fault="faultHandler(event)"/>-->
        </s:RemoteObject>
        
        <s:RemoteObject id="knjigautori"
                        destination="ep.Knjiga" 
                        source="ep.Knjiga"
                        endpoint="amfphp/gateway.php"
                        showBusyCursor="true">
            <!--<s:method name="getListaKnjiga" result="getListaKnjigaResult(event)" fault="faultHandler(event)"/>-->
            <s:method name="getListaKnjigaautor" result="getListaKnjigaautorResult(event)" fault="faultHandler(event)"/>
            <!--<s:method name="deleteKorisnik" result="deleteKorisnikResult(event)" fault="faultHandler(event)"/>-->
        </s:RemoteObject>
//......................

[Bindable] private var tabela_Knjiga_Provider:ArrayCollection;
            [Bindable] public var lista_autora_provider:ArrayCollection;

private function initRequest():void {
                
                
                autori.getListaAutora.send( );
                izdavaci.getListaIzdavaca.send( );
                zanrovi.getListaZanrova.send( );
                tagovi.getListaTagova.send( );
                korisnici.getListaKorisnika.send( );
                knjige.getListaKnjiga.send( );
                knjigautori.getListaKnjigaautor.send( );
            }


private function getListaKnjigaResult(event:ResultEvent):void {
                
                if( !knjige.getListaKnjiga.lastResult.greska.uspesno )
                    Alert.show( knjige.getListaKnjiga.lastResult.greska.poruka, "GREŠKA" );
                
                else
                
                    tabela_Knjiga_Provider = new ArrayCollection(knjige.getListaKnjiga.lastResult.knjige);
                
            }
            
            private function getListaKnjigaautorResult(event:ResultEvent):void {
                
                if( !knjigautori.getListaKnjigaautor.lastResult.greska.uspesno )
                    Alert.show( knjigautori.getListaKnjigaautor.lastResult.greska.poruka, "GREŠKA" );
                
                else
                
                    lista_autora_provider = new ArrayCollection(knjigautori.getListaKnjigaautor.lastResult.knjigautori);
                
            }




<s:GridColumn headerText="Autori">
                                <s:itemRenderer>
                                    <fx:Component>
                                        <s:GridItemRenderer>
                                            <s:VGroup paddingTop="5" paddingLeft="5" 
                                                      paddingBottom="5" paddingRight="5"
                                                      verticalAlign="middle"
                                                      horizontalAlign="center">
                                        
                                                <s:List id="listaAutora" dataProvider="{outerDocument.lista_autora_provider}" labelField="ime"/>
                                            </s:VGroup>
                                        </s:GridItemRenderer>
                                    </fx:Component>
                                </s:itemRenderer> 
                            </s:GridColumn>


slika tabele:



grska pri ucitavanju flash fajla u chrome-u:
Code:
Missing argument 1 for Knjiga::getListaKnjigaautor()


nadam se da ce sada biti lakse
Re: problem sa flex-om 28.12.2013. u 20:27 · pre 156 meseci #6
Argument funkcije getListaKnjigaautor je $knjigaId, a ti praviš upit sa $knjiga->knjigaId.

Pomoglo bi kada debaguješ program da ispišeš SQL upit, onda bude mnogo jasnije...
Re: problem sa flex-om 28.12.2013. u 20:34 · pre 156 meseci #7
dobro, ali opet ostaje greska koju mi flex izbacuje:
Code:
Missing argument 1 for Knjiga::getListaKnjigaautor()
dok kada u service browser-u pokrenem funkciju, ja dobijem niz autora koji odgovara upitu. naravno kada ja upisem knjigaId


Re: problem sa flex-om 28.12.2013. u 21:11 · pre 156 meseci #8
Ne znam flex bas, ali koliko vidim, nemaš za method getListaKnjigaautor <arguments>. Još jednom, ne znam mnogo o flex-u, ali ne shvatam kako možeš da pozivaš metod bez argumenata...
Re: problem sa flex-om 28.12.2013. u 22:24 · pre 156 meseci #9
U sustini body je prazan, nista se ne prenosi, pa skoci u cech deo koda, u sustini sam cuo da treba php da se vrti u nekoj petlji, i na servisnom sloju se da treba da se sparuje, i onda da niz odlazi na fleks, ali to ne znam kako da napravim
Re: problem sa flex-om 29.12.2013. u 01:03 · pre 156 meseci #10
Kada pozivaš metod getListaKnjigaautor() moraš da proslediš argument $knjigaId, zbog čega ti i Flex prijaljuje grešku. Pored toga, rekao bih da problem leži u samom upitu:
Code:
$upit = "SELECT autor.ime, autor.Prezime, autor.autorId, knjiga.knjigaId
FROM autor
INNER JOIN knjigaautor ON autor.autorId = knjigaautor.IdAutor
INNER JOIN knjiga ON knjiga.knjigaId = knjigaautor.IdKnjiga
where knjiga.knjigaId ='". $knjiga->knjigaId ."'";

Ne vidim gde si uopšte definisao promenljivu $knjiga. S obzirom da želiš metodu getListaKnjigaautor() da proslediš argument $knjigaId onda bi poslednja linija upita u klauzuli WHERE trebala da izgleda ovako:
Code:
$upit = "SELECT autor.ime, autor.Prezime, autor.autorId, knjiga.knjigaId ";
$upit .= "FROM autor ";
$upit .= "INNER JOIN knjigaautor ON autor.autorId = knjigaautor.IdAutor ";
$upit .= "INNER JOIN knjiga ON knjiga.knjigaId = knjigaautor.IdKnjiga ";
$upit .= "WHERE knjiga.knjigaId = $knjigaId";

Malo sam izmenio upit kako bi bio čitljiviji, a s obzirom da je lokalna promenljiva $knjigaId tipa int ne moraš da je stavljaš pod apostrofe. Takođe bih ti preporučio da koristiš pripremljene naredbe (prepared statements) kako bi upiti bili bezbedniji i brže se izvršavali u situacijama kada imaš više upita kod kojih se samo vrednosti menjaju.
Potpis
Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
Re: problem sa flex-om 29.12.2013. u 12:44 · pre 156 meseci #11
e to, ne znam kako da prosledim parametar knjigaId iz flex-a. probao sam da ovde:
Code:
private function initRequest():void {
                
                autori.getListaAutora.send( );
                izdavaci.getListaIzdavaca.send( );
                zanrovi.getListaZanrova.send( );
                tagovi.getListaTagova.send( );
                korisnici.getListaKorisnika.send( );
                knjige.getListaKnjiga.send( );
                knjigautori.getListaKnjigaautor.send(knjigaId );
            }
da dodam u zagrade knjigaId, medjutim onda mi u kompajliranju daje gresku da promenljiva ne postoji, naravno, pa je ja onda napravim iznad svih funkcija napisem
Code:
public var knjigaId:VOKnjiga;
i sada nemam ni jednu gresku prilikom kompajliranja, ali i dalje nece da prosledi parametar koji sam mu dao, odnosno prenosi null.

sto se tice upita, da vec sam ispravljen oko toga, ta greska je nastala u raznim eksperimentisanjima sa upitom, a stavljam je pod navodnike jer sam cuo da flex radi samo sa JSON-om, pa ne znam kako prenosi int, pa da budem siguran.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme