Forum » Programiranje » univerzalni kontaktni obrazec
univerzalni kontaktni obrazec
cobrica ::
Izdelujem nek univerzalni kontaktni obrazec, katerega bo neko podjetje uporabljalo po svoji želji, in sicer da pokliče funkcijo form_input(...) in izdela en input itd. pojavi se problem pri preverjanju vnosa. Ker nevem kako bi lahko znotraj same funkcije kjer izdelam obrazec preverjal ali je obvezen ali ne sem ustvaril spremenljivko z polji $obvezno_polje, kjer definiram samo polja, ki so obvezna, katera kasneje ob postu samo obarva z rdečo barvo, da ne kompliciram še z tekstom ala izpolni naslov... itd. vendar nimam ideje kako bi ta polja preverjal, sicer pa če ve kdo kako preverit vnos v input znotraj funkcije kjer kličem tudi prav. Vglavnem koda je sledeča:
<style> .obarvaj { color: red; } </style> <?php // tu definiramo osnovne nastavitve forme $obvezna_polja = array('ime',''); // katera polja je potrebno izpolnit foreach( $obvezna_polja as $obvezno ){ $obvezno_polje = $obvezno ; } echo $obvezno_polje; $ime_podjetja = ''; $domena = ''; $email_naslov = ''; if(isset($_POST['Potrdi'])) { foreach($_POST as $k=>$val) { if($k == 'Potrdi') { continue; }// submit gumb preskoči, da ga ne bo izpisovalo if($_POST[$k] == ''){ // pridobim ime postanega inputa, kako sedaj preverit samo po določenih inputih če so prazni, ki so definirani v $obvezno_polje? $izpis .= 'Izpolni ' . $k . '<br>'; $poslji = FALSE; } else { $izpis .= $_POST[$k] .'<br>'; $poslji = TRUE; //$izpis = 'ok'; } } if(isset($poslji)) { echo $izpis; } } function form($ime,$akcija){ return '<form name="'.$ime.'" method="post" action="'.$akcija.'">'; } function form_input($ime ='',$tip ='',$obvezen = '',$value =''){ if($obvezen == 'obvezen'){ echo "*"; } if($tip == 'textarea'){ echo $ime.'<textarea name="'.$ime.'">'.$value.'</textarea><br/>'; } else { $ime_inputa = ($tip == 'submit') ? '' : $ime_inputa= $ime; // definiram prazno spremenljivko, da ne poimenujem submit gumba echo $ime_inputa . '<input type="'.$tip.'" value="'.$value.'" name="'.$ime.'"><br/>'; } } // tu si gradim formo po svoje echo form('forma',''); echo form_input('Ime','text','obvezen'); echo form_input('Podjetje','text','obvezen'); echo form_input('Email','text',''); echo form_input('Vsebina','textarea',''); echo form_input('Potrdi','submit','','Poslji'); echo "</form>"; ?>
cobrica ::
Malce sem popravil kodo, torej z obvezno_polje definiram v polju vse obvezne inpute katere je potrebno izpolniti:
Torej potrebujem primerjavo, če je obvezno polje enako imenu posta, če to ustreza preveri če je ime posta prazen in izpiše error, to je vse kar bi rad dosegel.
$obvezna_polja = array('Ime','Priimek','Vsebina'); foreach($_POST as $ime=>$vrednost) { if($ime == 'Potrdi') { continue; } $ime_post .= $ime; $vrednost_post .= $vrednost; } $prestej_obvezna_polja = count($obvezna_polja); for ($i = 0; $i < $prestej_obvezna_polja; $i++) { $polje .= $obvezna_polja[$i]; if($obvezna_polja[$i] == $ime_post){ // zakaj to primerjanje ne deluje? $ime_post dobim ImePriimekEmail, sepravi inpute, ki jih imam ustvarjene... if($_POST[$ime_post] == ''){ echo "obvezno polje"; } else { // ni obvezno nadaljuje naprej.. } } }
Torej potrebujem primerjavo, če je obvezno polje enako imenu posta, če to ustreza preveri če je ime posta prazen in izpiše error, to je vse kar bi rad dosegel.
MisterR ::
Zato, ker imaš v 4. vrstici $ime_post .= $ime; Naredi $ime_post = $ime;
Drugače pa HTML5 že sam po sebi nudi validacijo vnosnih podatkov.
Drugače pa HTML5 že sam po sebi nudi validacijo vnosnih podatkov.
cobrica ::
RockyS če bi tako naredil mi iz polja potem izpiše samo zadnji podatek, kar je neuporabno, sem rešil na drugačen način. Kar se pa tiče html5 validacije kaj koristi, če IE še vedno ne podpira tega?
MisterR ::
Koristi ti to, da že vnaprej razmišljaš. IE6,7,8 tega nebodo nikdar podpirali. In to pomeni, da boš ti zmeraj uporabljal zastarele metode.
In ne razumem čisto, kaj misliš z "izpiše samo zadnji podatek"? Vsako polje ime svoj name, in vsako polje preletiš. Če že uporabljaš polje za take podatke bi naredil polje $podatki = array("ime"=>$input_ime, "priimek"=>$input_priimek) ne pa da mučkaš s sestavljanjem stringov.
In ne razumem čisto, kaj misliš z "izpiše samo zadnji podatek"? Vsako polje ime svoj name, in vsako polje preletiš. Če že uporabljaš polje za take podatke bi naredil polje $podatki = array("ime"=>$input_ime, "priimek"=>$input_priimek) ne pa da mučkaš s sestavljanjem stringov.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | if(empty($_POST["vsa-polja"]))?Oddelek: Izdelava spletišč | 2621 (2236) | Housy |
» | Kako preveriti ali so vnosna polja izpolnjena?Oddelek: Izdelava spletišč | 2002 (1656) | bluefish |
» | PHP - nujno! - email formaOddelek: Izdelava spletišč | 2043 (1725) | DonMatejo |
» | HTML forma in datumOddelek: Izdelava spletišč | 1806 (1542) | Muzo |
» | obrazec za pošiljanje pošteOddelek: Izdelava spletišč | 1262 (1161) | tec |