Will Barangi Will Barangi - 2 months ago 6
PHP Question

how to use an if statement inside echo php

Okay so I have a for loop that displays books and their associated sales info...I have it displaying correctly..I have a for loop that goes through an array and displays the information. What I would like to do is have the for loop only display information about a hardcover book or a softcover book, if their values are only more that 0;
I have tried putting a for loop in the echo statement but it's giving me an error..
I have a feeling it has to do with the way am concatinating the values..anyway here is my for loop

function displayData($array){

// create a form

echo ' <form action="order_summary.php" method="post">';

// for loop to go through data

for($row = 0; $row < sizeof($array);$row++){

echo '<div class="book-details"><img src="images/' .
$array[$row]['isbn'].'.jpg" alt="'.$array[$row]['title'] .'" >'.
'<br/>'.$array[$row]['title'].'<br/>by '.$array[$row]['author'].
'<br/><input type="radio" name="orders['.$array[$row]['title'].
']" value="hardcover" >Hardcover: $'.$array[$row]['hardcover'].
'<br/><input type="radio" name="orders['.$array[$row]['title'].
']" value="softcover" >Softcover: $'.$array[$row]['softcover'].
'<br/><input type="radio" name="orders['.$array[$row]['title'].
']" value="e-book" >E-Book: $'.$array[$row]['e-book']."</div>";

};

echo '<div class = "cart"><input type="submit" value="Add Selected Items to Cart"></div>';

echo '</form>';

}// end of function


I would like to include something like this

if (!$array[$row]['hc-quantity']== 0) {
// display hardcover price
}
else {
go to the next book and repeat check for softcover
};


can you please help me work this out...

Answer

You could improve your code by using the foreach syntax. The if condition you suggested is close, but the ! operator is actually acting on the array element, not on the equation.

I would also suggest closing the PHP tag to generate the HTML, instead of using echo. Then use <?= ... ?> for injecting PHP values inside your HTML. And for the if conditions you can insert some <?php ... ?> blocks.

Here is the adapted code (for loop only):

<?php
// ... other code ...

foreach ($array as $item){
?>
<div class="book-details">
    <img src="images/<?=$item['isbn']?>.jpg" alt="<?=$item['title']?>"><br>
    <?=$item['title']?><br>
    by <?=$item['author']?><br>
<?php
if ($item['hc-quantity'] > 0) { 
?>
    <input type="radio" name="orders[<?=$item['title']?>]" value="hardcover">
        Hardcover: $<?=$item['hardcover']?><br>
<?php
}
if ($item['sc-quantity'] > 0) {
?>
    <input type="radio" name="orders[<?=$item['title']?>]" value="softcover">
        Softcover: $<?=$item['softcover']?><br>
<?php
}
?>
    <input type="radio" name="orders[<?=$item['title']?>]" value="e-book">
        E-Book: $<?=$item['e-book']?>
</div>
<?php
}

// ... more code
//
?>