pitanje

pitanje

offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Pozdrav, imam jedan problem, nisam se susretao sa njim do sada. Dakle, problem je sledeci. Treba da napravim html formu sa jednim imputom u koji cu da upisem jednacinu i da zadam skripti operaciju koju treba da izvrsi. Prvo da objasnim sta mi tacno treba. Tablica je napravljena tako sto sam log fajl koji je napravljen prilikom praznjenja baterije stavio u file(); a values preko petlje sam ispisao u html tablu ovom metodom:

list($Time,$wPercent,$wTemp,$wVolt,$wCurrent,$rID,$rTemp,$rVolt,$rCharge,$rDischarge,$rVref,$rHalfVref) = explode(" ", $fajl[$i]);
E sad. Posto treba da napravim drive chart na osnovu vrednosti iz tablice, i posto treba da racunam posebne delove "primer ($rVolt * 34 / $rDischarge) / $rCharge", kako da napravim funkciju koja ce da odradjuje na osnovu formule i na osnovu rubrike koju joj zadam iz tablice? Primer rubrika volt, rubrika temp i rubrika id. Znaci preko imputa metodom post da joj kazem preskoci prvu,drugu,trecu,uzmi cetvrtu rubriku, podeli sa 475,pomnozi sa 2,podeli sa rubrikom 6, imali kakvo resenje? Odmah da kazem, jednacine nisu fiksne, menjam ih zbog nekih testova, zato i pokusavam napraviti da mogu da ih menjam preko imput forme! I jos nesto. Dali postoji nacin da operatera stavim u string pa da ga uzmem kasnije na primer ovako:
if ($op == "addition") $operation = "+";
echo 4 . $operation . 5;
po mojoj zamisli treba da bude 9 ali posto to jos nisam pokusavao ispadne 4+5 Very Happy



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

To se resava preko eval() funkcije
http://php.net/manual/en/function.eval.php
Evo ti jedan kod sto sam ja pravio za testiranje logike nadam se da ce ti pomoci.
<?php if(isset($_POST['func'])){    $a=array();    foreach ($_POST as $k => $v){       if($k!='func')$a[$k]=$v;    }    $func=$_POST['func']; }else{    $a['Ai']=true;    $a['Bi']=true;    $a['Ci']=true;    $a['Di']=true;    $func=''; } $eval_str=$func; $bole_str=$func; foreach($a as $k=>$v){    $eval_str=str_replace($k, '$a["'.$k.'"]', $eval_str); } $eval_str=str_replace('AND', '&&', $eval_str); $eval_str=str_replace('OR', '||', $eval_str); foreach($a as $k=>$v){    $bole_str=str_replace($k, $v, $bole_str); } $bole_str=str_replace('AND', '&&', $bole_str); $bole_str=str_replace('OR', '||', $bole_str); ?> <html> <head> <title>Logic Generator</title> <style type="text/css">  input[type=radio] {margin:5px 0;} </style> </head> <body> <script type="text/javascript"> <?php if(strlen($func)>0){    $ar_atr=str_replace(' ', '","', $func);    echo'var func = new Array("'.$ar_atr.' ");func.pop();'; }else{    echo'var func = new Array();'; } ?> function apnd(a){    document.getElementById('func').value += a+' ';    func.push(a); } function undo(){    func.pop();    document.getElementById('func').value=func.join(' ')+' '; } function m_rst(){    func.splice(0);    document.getElementById('func').value=''; } </script> <form action="logic_builder.php" method="post"> <?php foreach($a as $k=>$v){    if($v){       $s1='checked="checked"';       $s2='';    }else{       $s1='';       $s2='checked="checked"';    }    printf("<input type='radio' name='%s' value='1' %s/> On <input type='radio' name='%s' value='0' %s/> Off <input type='button' value='%s' onclick=\"apnd('%s')\"><br/>",$k,$s1,$k,$s2,$k,$k); } ?> <br/> <input type='button' value='(' onclick="apnd('(')"> <input type='button' value=')' onclick="apnd(')')"> <input type='button' value='AND' onclick="apnd('AND')"> <input type='button' value='OR' onclick="apnd('OR')"> <br/><br/> <input type='button' value='UNDO' onclick="undo()"> <input type='button' value='RESET' onclick="m_rst()"> <br/><br/> <input id="func" type="text" size="50" value="<?php echo $func;?>" name="func" readonly="readonly"> <input type="submit" value="Evaluate" /> </form> <?php echo'<pre>'; print_r($_POST); print_r($eval_str); echo "\n"; print_r($bole_str); $result=eval('return '.$eval_str.';'); echo '</pre>';    var_dump($result); ?> </body></html>



offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Hvala, mada logika nije problem, nego problem je ovo
Citat:if ($op == "addition") $operation = "+";
echo 4 . $operation . 5;
po mojoj zamisli treba da bude 9 ali posto to jos nisam pokusavao ispadne 4+5

Dakle kako da stavim + u string a da ga kasnije upotrebim kao operatera a ne kao string? Nisam nikad!

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

kao sto rekoh treba da iskoristis eval()
ukratko
$eval_str='4'. $operation . '5'; $result=eval('return '.$eval_str.';'); echo $result;

offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Hvala ti puno, kontam sad

Ko je trenutno na forumu
 

Ukupno su 932 korisnika na forumu :: 59 registrovanih, 9 sakrivenih i 864 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, Apok, BlekMen, Boris90, chester_perry, Cobi026, comi991, crnitrn, danilopu, dankisha, Despot1, djboj, djukapfc, Doca, dragon986, Dukelander, Helket, ikan, Insan, ivica976, Koca Popovic, komkom, kovinacc, krlebgd77, laki_bb, Logic005, madza, MB120mm, mercedesamg, Mercury, Mihajlo, MikeHammer, Mirage 2000N, Mixelotti, mnn2, mushroom, nenad81, Neutral-M, nuke92, ostoja, Pohovani_00, Profica, raskoljnikov, Recce, rovac, ruso, sakota79, Simon simonović, Snorks, sombrero, ssekir75, Username1000, V.P., vlvl, voja64, willie, x9, xJeremijAx