1

Topic: Keletas paprastų klausimų

Keli paprasti klausimai, turbūt neverti, kad kurti jiems atskiras temas:

1.Kaip PHP priskirti vieno kintamojo reikšmę kitam ne amžinai? Jei padarai pvz. $a=$b tai tada $a visada bus lygu $b, net jei keisi $b tai kis ir $a, o man to visai nereikia, $a turi būti atskiras kintamasis, tik jo pradinė reikšmė turi būti tokia pat kaip ir $b tuo metu, kai įvyksta priskyrimas.

2.Ar įmanoma padaryti taip, kad padaryti vieną funkciją iš dalies besiskiriančioms MySQL užklausoms? Pavyzdžiui, jei užklausos beveik vienodos, bet skiriasi tik WHERE sąlyga, tai ar įmanoma padaryti taip, kad iškviečiant funkciją tą WHERE sąlygą būtų galima perduoti kaip kintamąjį ir taip panaudoti tą pačią funkciją visoms panašioms užklausoms? Ar vistiek reiktų rašyti kelissyk pilną MySQL užklausą tik su skirtingom WHERE sąlygom?

3.Ar įmanoma HTML forma perduoti tik kintamojo egzistavimą be jokios reikšmės (t.y. index.php?kintamasis&kintamasis2&kintamasis3 vietoj indez.php?kintamasis=true&kintamasis2=true&kintamasis3=true) ir ar PHP automatiškai tokį dalyką suprastų kaip loginį kintamąjį, kurio reikšmė yra "true"?

4.Ar įmanoma kažkaip sutrumpinti GET, kad kai deda duomenis į tą patį masyvą nereikėtų kaskart (ties kiekvienu pridedamu elementu) rašyti masyvo pavadinimo? Pvz. vietoj index.php?masyvas[]=1&masyvas[]=2&masyvas[]=3 ar būtų įmanoma parašyti kažką trumpiau, pvz. index.php?masyvas[]=1,2,3 ar panašiai?

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Re: Keletas paprastų klausimų

1) $a = $b priskiria reikšmę tik tuo momentu, paskui pasikeitus $b kintamajam $a reikšmė pati nepasikeičia. T.y. nėra jokio "amžino pririšimo" apie kurį tu kalbi;
2) įmanoma. Reikia pasirašyti funkciją, kuri kaip parametrą paima reikalingus duomenis, o kaip rezultatą grąžina užklausos rezultatą arba klaidos kodą;
3) įmanoma Bus perduotas kintamasis, kurio reikšmė bus tuščia; Juk nesunku pasitikrinti kaip tai veikia ;)
4) neįmanoma; Masyvams perduoti geriau naudok sesijos funkcionalumus;

3

Re: Keletas paprastų klausimų

1)Man būtent reikia patikrinti, ar kaip objektas iš duomenų bazės paimti duomenys egzistuoja, t.y. ar tam tikra užklausa kažką grąžino, ar ją atitikusių duomenų nebuvo. Tam aš noriu išlukštenti (fetch) tą objektą ir patikrinti, ar egzistuoja pirmasis elementas. Kadangi išlukštenus objektą vėliau jo vėl nepanaudosi norint su "while ($uzrasas=mysql_fetch_object($rezultatas))" konstrukcija sudaryti lentelę, noriu prieš tai pasidaryti objekto kopiją. Bet kopijos pakeitimas sugadina ir pagrindinį objektą. Vienintelis būdas atlikti šį veiksmą - pasidaryti du objektus du kartus pateikiant tą pačią užklausą, bet tai ne visada įmanoma ar patogu (pvz. funkcijų naudojimo atveju).

2)Ką turi omenyje "reikalingus duomenis"? Tai, kas kinta užklausose? Pvz. jei kai kada reikia WHERE sąlygos "WHERE Pavadinimas=$kintamasis", kai kada "WHERE Pavadinimas LIKE '%$kintamasis%'", o kai kada "WHERE Pavadinimas=$kintamasis AND Numeris=$kintamasis2", tai reikia kaip funkcijos parametrą perduoti visą šitą WHERE sąlygą? O kaip tada padaryti, kad ta funkcija šitą parametrą tinkamai panaudotų? Jei sakykim parametras bus perduotas kaip $salyga, tai reikės vietoje, kur turi būti WHERE sąlyga, įrašyti {eval($salyga)}?

3)Patikrinti nesunku, bet pirma klausimo dalis buvo "Ar įmanoma HTML forma perduoti(...)". Nes jei aš HTML formoje padarau, kad tam tikras laukas (pvz. langelis (checkbox)) turėtų tik name, bet ne value, tai perduodama "pavadinimas=on" vietoj tiesiog "pavadinimas".

4)Aišku, dėkui.

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Re: Keletas paprastų klausimų

1) Visi balti žmonės po užklausos patikrina ar nebuvo klaidos, poto patikrina kiek eilučių gražino užklausa (http://www.php.net/manual/en/function.m … m-rows.php) ;)
2) Užklausose kinta daug kas; Aš asmeniškai tokios funkcijos kaip tu, kad nori parašyti, nerekomenduoju, nes dar susidursi su kitais dalykais, kurie viską apsunkins, geriau mokytis naudotis kažką panašaus: http://pear.php.net/manual/en/package.database.db.php
3) Toje vietoje aš turėjau omenyje submitinamus objektus, kurie neturi reikšmės; Konkrečiu atveju veikimas gali skirtis ir tiesiog reikia dokumentacijoje žiūrėti kaip tas objektas veikia ir kokias reikšmes perduoda;

5

Re: Keletas paprastų klausimų

1)Aišku. Gerai taip veikia :) .

2)Na, dabar supratau, kad vieną dalyką klaidingai galvojau - kažkodėl visada man atrode, kad užklausa apibrėžta kaip $uzklausa="SELECT Kazkas FROM Kazkur" ir pan. yra suvokiama kaip atskiras kintamojo tipas (užklausa), o dabar suvokiau, kad čia ta pati eilutė, tad ir visas operacijas galima tas pačias atlikti :) . Turbūt bus geriausia tose vietose, kur gali reikėti įrašyti kažkokius žodžius, o gali ir nereikėti, tiesiog įrašyti kažkokius kitur nenaudojamus kintamuosus iš GLOBALS masyvo ir jei tąsyk iškviečiant funkciją ten reikės ką nors įrašyti, bus galima prieš iškviečiant funkciją to kintamojo prasmę nustatyti, o jei ten reikės palikti tuščią vietą tai kaip suprantu nenustatytos prasmės kintamasis ir bus traktuojamas kaip tuščia vieta. Taip bus paprasta jei, pavyzdžiui, atsiras papildoma vieta, kur reikės tos funkcijos dar ir su sakysim ORDER BY, tai bus paprasta tiesiog įrašyti į funkciją po WHERE sakinio dar vieną papildomą globalų kintamąjį, o kur reiks ORDER BY jį apibrėžti prieš iškviečiant funkciją kaip "ORDER BY kriterijai".

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Re: Keletas paprastų klausimų

2) Na lanai greitai suprasi, kad "SELECT kazkas FROM kazkur WHERE .." naudojamas pakankamai retai. Kaip jau minėjai yra ORDER BY, HAVING, JOINai ir daug daug kitų dalykų, kurie arba vesr tave tą "funkciją" padaryti vos nes SQL konstruktoriumi arba tu jos paslaugų atsisakysi. Tokią funkciją kaip pats minėjai galima turėti tik tada, kai dauguma užklausų yra tikrai paprastos, kas gali būti tik labai paprastuose sistemose.

7

Re: Keletas paprastų klausimų

Tai aš jau supratau :) . čia buvo tik pavyzdys, o šiaip, aišku, tos užklausos yra įvairios, ten būna ir su WHERE sakiniu tipiniame variante, ir su ORDER BY, priklausomai nuo to, ko reikia, o jei prireikia pvz. papildomą WHERE sąlygą įdėti, tada įrašai kur reikia globalų kintamąjį ir apibrėži jį prieš iškviesdamas funkciją kaip "AND papildomasalyga". Aišku, tokie dalykai kaip kintama lentelė (FROM ?) irgi apibrėžiama kaip kintamasis, tuo atveju jau funkcijos parametras. Vis tiek svetainėje egzistuoja tam tikros užklausos, kurių, ar į jas panašių, prireikia dažniau - tam tikri pasirenkami įvairių kriterijų sąrašai ir pan, tad, manau, ir tokias funkcijas galima sudaryti. Dalis užklausų funkcijų mano projekte dažniau naudojamos, dalis - vos po kelis kartus, bet vis tiek manau taip labiau apsimoka, nei rašyti panašias užklausas kas kartą iš naujo. Be to ir bus patogiau jei reikėtų kur nors naują panašią funkciją prirašyti.

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.