Marco Abate
Marco Abate

Reputation: 21

Php and mysql, missing first row

I need a little help. This code miss the first row, I don't know the reason. I've searched a lot around the web but everyone talk about the mysql_fetch_array($results) but there's nothing similar in my code.

Do you find something wrong in this code?

<?php 

// create query 
$query = "SELECT * FROM products";

// execute query 
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 

$id = mysql_result($result,$i,"id");
$name = mysql_result($result,$i,"name");
$imageurl = mysql_result($result,$i,"imageurl");
$price = mysql_result($result,$i,"price");
$quantity = mysql_result($result,$i,"quantity");

// see if any rows were returned 
if (mysql_num_rows($result) > 0) { 
    // yes 
    // print them one after another 
    echo "<table class='table table-hover'>";
    echo "<thead>
                <tr>
                  <th>ID</th>
                  <th>Name</th>
                  <th>Image</th>
                  <th>Price</th>
                  <th>Quantity</th>
                </tr>
              </thead>";
    while($row = mysql_fetch_array($result)) { 
        echo "<tr>"; 
        echo "<td>".$id."</td><td>".$name."</td><td><a href='".$imageurl."' class='fancybox fancybox-effects-e' title='".$name."'><img src='".$imageurl."' alt='".$name."'></a></td><td>€ ".$price."</td><td>".$quantity."</td>";
        echo "</tr>";
    }
    echo "</thead>";
    echo "</table>"; 
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
} 

// free result set memory 
mysql_free_result($result); 

// close connection 
mysql_close($connection); 

?>

Upvotes: 0

Views: 1457

Answers (1)

Orangepill
Orangepill

Reputation: 24645

Note this message on the PHP page for mysql_result

Calls to mysql_result() should not be mixed with calls to other functions that deal with the result set.

This is going to advance your record pointer past the first result so your calls to mysql_fetch_array are going to be off by one.

Anyway I think what you are after is

<?php 

// create query 
$query = "SELECT * FROM products";

// execute query 
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 

// see if any rows were returned 
if (mysql_num_rows($result) > 0) { 
    // yes 
    // print them one after another 
    echo "<table class='table table-hover'>";
    echo "<thead>
                <tr>
                  <th>ID</th>
                  <th>Name</th>
                  <th>Image</th>
                  <th>Price</th>
                  <th>Quantity</th>
                </tr>
              </thead>";
    while($row = mysql_fetch_array($result)) { 
        echo "<tr>"; 
        echo "<td>".$row["id"]."</td><td>".$row["name"]."</td><td><a href='".$row["imageurl"]."' class='fancybox fancybox-effects-e' title='".$row["name"]."'><img src='".$row["imageurl"]."' alt='".$row["name"]."'></a></td><td>€ ".$row["price"]."</td><td>".$row["quantity"]."</td>";
        echo "</tr>";
    }
    echo "</thead>";
    echo "</table>"; 
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
} 

// free result set memory 
mysql_free_result($result); 

// close connection 
mysql_close($connection); 

?>

Upvotes: 3

Related Questions