0

Hello I am developing an admin backend for an android app for a restaurant. I need to list all food items the restaurant offers based on their categories. The trouble is there can be some categories which doesn't have any item listed under it, and if such a category is encountered the php back end is supposed to return just an empty list but the category name should be there.

My current code so far

try
    {
        $query = "SELECT category FROM category";       
        $result= $DBH->query($query);
        while($row = $result->fetch(PDO::FETCH_ASSOC))
        {
            $cat    = $row['category'];
            $query1 = "SELECT * FROM item WHERE catagory='$cat'";       
            $value  = $DBH->query($query1);
            $row1   = $value->fetch(PDO::FETCH_OBJ);
            $main   = array('data'=>array($row1));
            echo json_encode($main);
        }

        $result->closeCursor();         //Close database connection free resources
        $DBH = null;
    }
    catch(PDOException $e){
        print $e->getMessage ();
        die();
    }

Gives an output like this

{"data":[{"id":"2","name":"Rice","price":"120","description":"Plain Rice","image":"6990_abstract-photo-2.jpg","time":"12 mins","catagory":"Lunch","subcat":""}]}
{"data":[{"id":"4","name":"Dal","price":"5","description":"dadadad","image":"","time":"20 mins","catagory":"Dinner","subcat":""}]}
{"data":[false]}

My problem is the last output where it shows {"data":[false]} should be like this {"data":["catagory":"Soup"]} To do that I would need to find out when the $main variable is empty and then manually add the category to it.

Any ideas or work around to this situation?

4
  • Can't you just check if $main is empty and then added that default value before calling json_eoncode()? Really seems straightforward to me. I'm not sure what the problem is. Commented Oct 19, 2014 at 19:52
  • I tried using if(empty($main)) it always returns false even though the 3rd time it is empty Commented Oct 19, 2014 at 19:52
  • You should do var_dump() of $main and see what it looks like. It's obviously not what you think. Commented Oct 19, 2014 at 19:54
  • var_dump() shows that the 3rd time the value is array(1) { ["data"]=> array(1) { [0]=> bool(false) } } Can you suggest how I can use this to code a logic to attend my needs? Commented Oct 19, 2014 at 19:57

2 Answers 2

1

you want this modification..........

if ($row1   = $value->fetch(PDO::FETCH_OBJ)){
  $main   = array('data'=>array($row1));
  echo json_encode($main);
}else{
  echo '{"data":["catagory":"' . $row['category'] . '"]}';
}
Sign up to request clarification or add additional context in comments.

Comments

0

You problem stems from the fact that you have a 'soup' category but you don't have any items belonging to the soup category. You should add a condition for empty result and change the echoing array accordingly.

  if (empty($row1))
  {
   $main   = array('data'=>array('category'=>$cat));
  }
   else 
  {
    $main   = array('data'=>array($row1));
  }

1 Comment

I am trying to actually do that but I am stumped as I can't detect when it is being empty. If you could give an example of condition to find out the empty result it would be great

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.