user342391
user342391

Reputation: 7837

PHP echo xyz if rows in loop contain no data

I am trying to echo some text if my loop returns with no data but can't get it do work. I have tried a few things but no luck.

my code:

$result = mysql_send("SELECT * FROM datatable WHERE id='".
    $_SESSION['id']."'ORDER BY id ASC LIMIT 2");

while($row=mysql_fetch_array($result)) {
    $a = 1;
    extract($row);

    echo 'Trans ID: ';
    echo $row['trans_id'];
    echo '<br>';
    echo 'Amount: ';
    echo $row['amount'];
    echo '&nbsp;';
    echo $row['euros'];
    echo '<br>';
    echo '<br>';
}


if ($a = 1) {
    echo 'No History';
} else {
    echo '<a href="#">View history</a>';
};

Can Anyone help me with how to do if statements on a loop`?

Upvotes: 3

Views: 285

Answers (4)

Brandon Frohbieter
Brandon Frohbieter

Reputation: 18139

if($a == 1) ....

Upvotes: 1

Artelius
Artelius

Reputation: 49099

== is a comparison, = is an assignment.

Change to

if ($a == 1) {

Upvotes: 0

Lizard
Lizard

Reputation: 45022

use mysql_num_rows(); it will tell you if you have any results from query

$result = mysql_send("SELECT * FROM datatable WHERE id='".
$_SESSION['id']."'ORDER BY id ASC LIMIT 2");

$count = mysql_fetch_array($result);

if($count > 0) {
    while($row=mysql_fetch_array($result)) {
        # your code
    }
}

# NOTE THE == not =
if ($a == 1) {
    echo 'No History';
} else {
    echo '<a href="#">View history</a>';
};

You will also have issue with your if statement as youu are using assigment rather than comparison: $a = 1 will set $a = 1 and $a == 1 will check of it equals 1

Upvotes: 2

Artefacto
Artefacto

Reputation: 97835

You have an assignment, which returns the result of the assignment (i.e. 1)

if ($a = 1) {

instead of a comparison, which is what you probably want:

if ($a == 1) {

Therefore, "No history" will always be echoed.

Upvotes: 2

Related Questions