tkdasearls Posted April 28, 2015 Share Posted April 28, 2015 Is there a way to evaluate a php variable as code instead of a string? $sql1 = mysql_query("SELECT * FROM form WHERE id='".$id."'"); while($row1 = mysql_fetch_array($sql1)){ $id1 =$row1["id"]; $name1 =$row1["name"]; $name1 = str_replace(' ', '', $name1); $name1 = str_replace('-', '', $name1); $errorline .= "".$_POST[$name1]."=='' || "; } $errors = "if(".$errorline."){"; $errors .= '$error=1}'; eval($errors); echo $error; I am able to make $errors look the way I want it to.: if(=='' || =='' || =='' || =='' || =='' || =='' || =='' || =='' || =='' || =='' || =='' || =='' || ){$error=1} Where before the "==" is a post variable, thats why its not showing. I need to know how I can change this to code instead of a variable. As you can see, I tried the "eval" function, but it gives a T_IS_EQUAL error. Can anyone help? If I have to change my logic I will, but I think you probably get the point as to what I am trying to achieve. This is for error checking of a dynamically created form. Link to comment https://forums.phpfreaks.com/topic/295918-evaluate-variable-as-code/ Share on other sites More sharing options...
tkdasearls Posted April 28, 2015 Author Share Posted April 28, 2015 I realized where my error is at. it is returning a blank for "$_POST[$name1] when I actually need it to return $_POST[$name1]. How do I make it do this? I tried putting this part inside of quotes, but it is still returning blank and not the actual term "$_POST[$name1]". How do I make it do this? Link to comment https://forums.phpfreaks.com/topic/295918-evaluate-variable-as-code/#findComment-1510188 Share on other sites More sharing options...
tkdasearls Posted April 28, 2015 Author Share Posted April 28, 2015 got it. didn't realize there was a difference between ' and " Link to comment https://forums.phpfreaks.com/topic/295918-evaluate-variable-as-code/#findComment-1510189 Share on other sites More sharing options...
gizmola Posted April 28, 2015 Share Posted April 28, 2015 This is what functions are for. Trying to make a giant if statement and then eval it is a really bad idea. Heck using eval at all is something to be avoided. Just to get an idea of something that has actually been thought out, take a look at the symfony2 validation component: http://symfony.com/doc/current/book/validation.html With that said you could also just write something simple like: <?php function checkForNull($rows) { // return array of errors $errors = array(); foreach($rows as $row) { $name1 =$row["name"]; $name1 = str_replace(' ', '', $name1); $name1 = str_replace('-', '', $name1); if ($_POST[$name1] == '') { $errors[] = $name; } } return $errors; } $sql1 = mysql_query("SELECT * FROM form WHERE id='".$id."'"); $rows = array(); while ($rows[] = mysql_fetch_assoc($sql1)) { // Fetch all rows } $errors = checkForNulls($rows); if (count($errors) > 0) { // You can cycle through this to figure out all the null POST fields and display an error or annotate the form } Link to comment https://forums.phpfreaks.com/topic/295918-evaluate-variable-as-code/#findComment-1510192 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.