1 (edited by Donatas 2011-03-11 17:30:18)

Topic: array perdavimas per funkcija

sveiki.

$post = $tikrinimas->registracija($_POST['elps'], $_POST['vardas'], $_POST['gyvunas'], $_POST['veisle'], $_POST['klausimas'], $_POST['saugumas']);

//kitame faile

function registracija($kelp, $kvardas, $kgyvunas, $kveisle, $kklausimas, $ksaugumas) {

visame sitame reikale dalyvauja 6 kintamieji $_POST['elps'], $_POST['vardas'] ir t.t. jeigu bandau itraukti 7 gaunu klaida

Warning: Missing argument 7 for DuomenuTikrinimas::registracija(), called in /home/.../procesasdr.php on line 22 and defined in /home/.../tikrinimas.php on line 4

laksciau po google ir radau paaiskinima kad funkcios kintamuju kiekis seip yra neribojamas bet kazkokiu tai budu del atminties apribojimu jei teisingai supratau hostingo tiekejas gali apriboti...

ar taip gali buti mano situacijoje ir ka patartumete?

kaip perduoti classeje 7 kintamuosius kitokiu budu?

bandziau kisti per array

$post = $tikrinimas->registracija($_POST);

.....

function registracija($array)

bet veliau darant tikrinima funkcijoje

        if (!$array['elps']) {
            $klaida->KlaiduNustatymas($laukas, "* Neivestas El. pašto adresas");
        }
        else { 
            if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $array['elps'])) { 
            $klaida->KlaiduNustatymas($laukas, "* Neteisingai įvestas Elektroninis paštas");            
            }
        }

gaunu atsakyma '* Neteisingai įvestas Elektroninis paštas' nesvarbu ka ivesciau ar netgi palikciau neivesta.

Re: array perdavimas per funkcija

Na lengviau butu atsakyti matant $tikrinimas objekto classe ar bent jau visa registracija metodo koda. Siaip warningas tau kuo aiskiausiai pranesa, kad truksta 7 argumento (tavo pateiktame pvz. ir yra perduodami 6 kintamieji).
Dabar kas liecia perduodamus kintamuosius. Labai geras dalykas yra ismokti (o tiksliau iprasti) tikrinti kokia infa su kintamasiais yra perduodama, kai programa veikia ne taip kaip tikiesi. Tam reikalui galima panaudoti print_r arba var_dump (pvz. print_r($_POST) ). Nes kol nezinai kur pasimeta tavo infa, tol nezinai kur yra klaida.

3 (edited by md5 2011-03-11 17:56:52)

Re: array perdavimas per funkcija

Va tau ir sudėtingai gaunasi, kai nori plėsti kodą. Tai gi daryk paprasčiau.

<?php
$errors = array(); #klaidos
if (isset($_POST['submit'])) {
    if (empty($_POST['vardas'])) {
        $errors['vardas'] = 'neivestas vardas';
    }
    if (empty($_POST['elps'])) {
        $errors['vardas'] = 'neivestas el pastas';
    }elseif(!tikrinku_EMAIL($_POST['elps'])){
        $errors['vardas'] = 'neveisingas el pastas';
    }
}
#jei buvo klaidu
if(count($errors)){
    echo join('<>',$errors);
}
?>

pas tave norint plesti forma, turi ardyti f-ja pridedant po nauja argumenta.
tavo kodas pleciamas
darbar: a|b|c
bet reikia (masyvas):
a
b
c

Kiek maigyklių sudėvėjai ?

Re: array perdavimas per funkcija

klaidas ir deda i array seip

    function KlaiduNustatymas($laukas, $zinute) {
        $this->klaidos[$laukas] = $zinute;
        $this->yraklaida           = count($this->klaidos);
    }

tai as ir galvoju perduot array i tikrinima kad butu paprasciau.

Re: array perdavimas per funkcija

cia vis dar tas pats kodas is temos:

http://www.mysql.lt/forumas/viewtopic.php?id=1640

tik kita klaida :)

6 (edited by Donatas 2011-03-11 18:38:22)

Re: array perdavimas per funkcija

Neodan wrote:

Na lengviau butu atsakyti matant $tikrinimas objekto classe ar bent jau visa registracija metodo koda. Siaip warningas tau kuo aiskiausiai pranesa, kad truksta 7 argumento (tavo pateiktame pvz. ir yra perduodami 6 kintamieji).
Dabar kas liecia perduodamus kintamuosius. Labai geras dalykas yra ismokti (o tiksliau iprasti) tikrinti kokia infa su kintamasiais yra perduodama, kai programa veikia ne taip kaip tikiesi. Tam reikalui galima panaudoti print_r arba var_dump (pvz. print_r($_POST) ). Nes kol nezinai kur pasimeta tavo infa, tol nezinai kur yra klaida.

vat tame ir esme kad to 7 argumento kode netruksta. Bet klaida ismeta. Jeigu tik isimu paskutinio kintamojo perdavima ir isimu priemima is funkcijos kodas suveikia.

stai klase tikrinimas

<?php
include ('./mysql.php');
class DuomenuTikrinimas {
    function registracija($kelp, $kvardas, $kgyvunas, $kveisle, $kklausimas, $ksaugumas, $kantraste) {
        global $klaida, $MySql;
        $laukas = "elps";
        if (!$kelp) {
            $klaida->KlaiduNustatymas($laukas, "* Neivestas El. pašto adresas");
        }
        else { 
            if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $kelp)) { 
            $klaida->KlaiduNustatymas($laukas, "* Neteisingai įvestas Elektroninis paštas");            
            }
        }
    
        $laukas = "vardas";
        if (!$kvardas) {
            $klaida->KlaiduNustatymas($laukas, "* Neįvestas vardas");
        }
        else {
            if (!isValid("User",$kvardas)) { 
            $klaida->KlaiduNustatymas($laukas, "* Vardą gali sudaryti raidės nuo a-A iki z-Z ir/arba skaičiai nuo 0 iki 9");
            }
        }
    
        $laukas = "gyvunas";
        if (!$kgyvunas) {
            $klaida->KlaiduNustatymas($laukas, "* Būtina nurodyti koks gyvūnas. Pvz: katė, šuo, arklys");
        }
        else { 
            if (!isValid("User",$kgyvunas)) {
            $klaida->KlaiduNustatymas($laukas, "* Gyvūno pavadinimą gali sudaryti radės nuo a-A iki z-Z ir/arba skaičiai nuo 0 iki 9");
            }
        }
        
        $laukas = "veisle";
        if ($kveisle) {
            if (!isValid("User",$kveisle)) { 
            $klaida->KlaiduNustatymas($laukas, "* Gyvūno veislės pavadinimą gali sudaryti radės nuo a-A iki z-Z ir/arba skaičiai nuo 0 iki 9");
            }
        }
        
        $laukas = "antraste";
        if (!$_SESSION['antraste']) {
            $klaida->KlaiduNustatymas($laukas, "* Būtina įvesti klausimo antraštę.");
        }
        
        $laukas = "klausimas";
        if (!$kklausimas) {
            $klaida->KlaiduNustatymas($laukas, "* Būtina įvesti klausimą.");
        }
        $laukas = "saugumas";
        if (!$ksaugumas) {
            $klaida->KlaiduNustatymas($laukas, "* Neįvesta skaičių kombinacija.");
        }
        else {
            if ($ksaugumas !== $_SESSION['AntiSpamImage']) {
                $klaida->KlaiduNustatymas($laukas, "* įvesta neteisinga skaičių kombinacija.");
            }        
        }
        
        if ($klaida->yraklaida > 0) {
            return 1;
        }
        if ($klaida->yraklaida == 0) {
            $iid = $MySql->QuestionRegister($kelp, $kvardas, $kgyvunas, $kveisle, $kklausimas, $ksaugumas);
            if ($iid !== 3) {
                return $iid;
            } else {
                return 3;
            }
        }
    }

    function QuestionEditError($rklausimas, $getid) {
        global $klaida, $MySql;
        $laukas = 'rklausimas';
        if (!$rklausimas) {
            $klaida->KlaiduNustatymas($laukas, "* Neivestas klausimo papildymas.");
        }
        if ($klaida->yraklaida > 0) {
            return 1;
        }
        if ($klaida->yraklaida == 0) {
            $iid = $MySql->KlausimoPapildymas($rklausimas, $getid);
            return $iid;
        }
    }
};
$tikrinimas = new DuomenuTikrinimas;
?>

Re: array perdavimas per funkcija

Pirmi pastebejimai butu:
1. F-ju sukisimas i classe != programavimas OOP budu.
2. Jei jau bandai programuoti OOP budu, tai pasiskaityk kaip tai daroma su PHP5.
3. Reiktu pasiskaityti teorijos kaip reiktu projektuoti programas, nes dabar tu nors ir bandai naudoti OOP, taciau programa gaunasi monolitine (visiskai neisnaudoji OOP privalumu)

O papastink dar kaip atrodo tavo ta eilute su $tikrinimas->registracija... (ten tikrai pries 7 argumenta nestinga kablelio?) nes metodas registracija is pirmo zvilgsnio kaip ir tvarkingas.

8 (edited by Donatas 2011-03-11 21:13:12)

Re: array perdavimas per funkcija

<?php
session_start();
include ('./files/askdr2/apdorojimai/klaidos.php');
include ('./files/askdr2/apdorojimai/tikrinimas.php');
include("./files/login2/include/session.php");
include ('./files/function.php');

$_SESSION['antraste'] = $_POST['antraste'];


class Procesas {
    
    function Procesas() {
        if ($_POST['drirasas']) {
            $this->KlausimoIrasymas();
        }
        if ($_POST['drredag']) {
            $this->QuestionEdit();
        }

    }

    function KlausimoIrasymas () {
        global  $tikrinimas, $klaida;

        $post = $tikrinimas->registracija($_POST['elps'], $_POST['vardas'], $_POST['gyvunas'], $_POST['veisle'], $_POST['klausimas'], $_POST['saugumas'], $_POST['antraste']);
        if ($post == 1) {
            $_SESSION['klaidu_array'] = $klaida->KlaiduArray();
            $_SESSION['Post_Array']   = $_POST;
            header("Location:  /index.php?cntrl=askdr");    
        }
        if ($post !== 3 && $post !== 1) {
            header("Location:  /index.php?cntrl=askdrsend&".$post);
        }
    }
    
};
$procesas = new Procesas;
?>

9 (edited by Donatas 2011-03-11 22:00:06)

Re: array perdavimas per funkcija

Neodan wrote:

Pirmi pastebejimai butu:
1. F-ju sukisimas i classe != programavimas OOP budu.
2. Jei jau bandai programuoti OOP budu, tai pasiskaityk kaip tai daroma su PHP5.
3. Reiktu pasiskaityti teorijos kaip reiktu projektuoti programas, nes dabar tu nors ir bandai naudoti OOP, taciau programa gaunasi monolitine (visiskai neisnaudoji OOP privalumu)

Nesigincysiu nes tik pradejau mokintis programuot OOP.
Pirmi zingsniai lai buna taip o ateiti tobulesim :)

10 (edited by Donatas 2011-03-11 21:38:49)

Re: array perdavimas per funkcija

tiesiog mokausi is pavyzdziu jei kas neiseina imu ir skaitau manuala jei dar neiseina krutinu google paieskos varikliuka... o jei dar kazkas ne taip klausiu pas jus :)

tai pasigavau pavyzduka internete http://www.evolt.org/node/60384 ten kazkas panasaus aprasyta su klasem pradejau nagrinet ir stai kas gavos.

komentarai rasyti September 28, 2004 - 06:53 tai gal ir neatitinka php5 nuostatu :)

Re: array perdavimas per funkcija

Na pavizdys tikrai nelabai tikes :) Cia (http://pixel.lt/php-5-oop.html) senokas straipsnis bet pradziai tiks, zinoma nemazai galima paskaityti ir php dokumentacijoje (http://php.net/manual/en/language.oop5.php).

Siaip tavo kodas is pirmo zvilgsnio kaip ir +/- geras, siaip testavimams gali atsisiusti xampp (http://www.apachefriends.org/). Jei localkej viskas veiks, vadinasi serveris kazkaip keistai nukonfigurintas.
O negalejo buti toks bajeris, kad kokio failo i serveri nepauploadinai?  :)

Re: array perdavimas per funkcija

Neodan wrote:

Na pavizdys tikrai nelabai tikes :) Cia (http://pixel.lt/php-5-oop.html) senokas straipsnis bet pradziai tiks, zinoma nemazai galima paskaityti ir php dokumentacijoje (http://php.net/manual/en/language.oop5.php).

Siaip tavo kodas is pirmo zvilgsnio kaip ir +/- geras, siaip testavimams gali atsisiusti xampp (http://www.apachefriends.org/). Jei localkej viskas veiks, vadinasi serveris kazkaip keistai nukonfigurintas.
O negalejo buti toks bajeris, kad kokio failo i serveri nepauploadinai?  :)

Nea failus visus sukeliau i serveri nes rasiau perasiau dariau perdariau reiks bandyt wamp isidet.

Re: array perdavimas per funkcija

http://pixel.lt/php-5-oop.html na pavyzdys tikrai neblogas :) daug ka paaiskina iki galo kas anksciau dar nebuvo iki galo dasile...

14

Re: array perdavimas per funkcija

Donatas wrote:

http://pixel.lt/php-5-oop.html na pavyzdys tikrai neblogas :) daug ka paaiskina iki galo kas anksciau dar nebuvo iki galo dasile...

jeigu dašilo, tai reiškias tavo struktūra nedašilo. Kitaip sakant oop5 neatitinka tavo oop.

Kiek maigyklių sudėvėjai ?

Re: array perdavimas per funkcija

md5 wrote:
Donatas wrote:

http://pixel.lt/php-5-oop.html na pavyzdys tikrai neblogas :) daug ka paaiskina iki galo kas anksciau dar nebuvo iki galo dasile...

jeigu dašilo, tai reiškias tavo struktūra nedašilo. Kitaip sakant oop5 neatitinka tavo oop.

Na kam taip uzsipulti zmogu, jis nesenai suzinojo kaip pturi buti aprasomos classes ant PHP5 ir dar nespejo perasyti savo kodo. Beje juk niekas negyme mokedamas :) Aisku mokintis kodinti PHP as rekomenduociau nenaudojant oop.

16 (edited by Donatas 2011-03-13 20:28:39)

Re: array perdavimas per funkcija

md5 wrote:
Donatas wrote:

http://pixel.lt/php-5-oop.html na pavyzdys tikrai neblogas :) daug ka paaiskina iki galo kas anksciau dar nebuvo iki galo dasile...

jeigu dašilo, tai reiškias tavo struktūra nedašilo. Kitaip sakant oop5 neatitinka tavo oop.

nieko dasils gyveni ir mokaisi :)
Mano studijuota specelybe niekuom nesusijusi su programavimu viska pats ismokau vien del to kad patinka programuot. Ir tai vidurineje pries daugiau nei desimt metu paskutini kart buvau programaves ir dar vel prisedau...
O kad neatitinka standartu... zinot kaip sakoma pirmas blynas visada buna prideges :)
antras trecias ir t.t. bus geriau :)
tiesiog permazai laiko dar skiriau viskam o su laiku ateina zinios ir patirtis.

Re: array perdavimas per funkcija

Susidejau wamp severi ir isbandziau kaip siulet tai visgi wampe suveikia gerai. Be jokiu problemu.
Tai www.us.lt serveris keistai sukonfiguruotas...