Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL skipping first row

I have seen other people with that problem but the solutions I've seen aren't helping me, or I don't know how to use them :P

<?php
$ordre = "nom";
$croissance = "ASC";

if(isset($_GET["ordre"])){
    $ordre = $_GET["ordre"];
};  

if(isset($_GET["croissance"])){
    $croissance = $_GET["croissance"];
};

$con = mysql_connect('localhost','root','');
mysql_select_db('sdj_jeux', $con);
$sql = "SELECT * FROM jeux ORDER BY $ordre $croissance";
$result = mysql_query($sql, $con);
$row = mysql_fetch_array($result);  

$couleurcompteur = 0;
while ($row = mysql_fetch_array($result)){
    $couleurcompteur += 1;
if($couleurcompteur % 2){
    $classe = "pale";   
} else {
    $classe = "fonce";  
    };
?>

My code is skipping the first row of my database and I don't understand why.

like image 342
Cedricle Avatar asked Mar 19 '13 17:03

Cedricle


People also ask

How do I skip the first 10 rows in SQL?

The OFFSET FETCH clause allows you to skip N first rows in a result set before starting to return any rows. In this syntax: The ROW and ROWS , FIRST and NEXT are the synonyms. Therefore, you can use them interchangeably.

What is limit and skip in SQL?

Introduction to SQL LIMIT clauseThe LIMIT row_count determines the number of rows ( row_count ) returned by the query. The OFFSET offset clause skips the offset rows before beginning to return the rows.

What is limit and offset in MySQL?

MySQL Offset is used to specify from which row we want the data to retrieve. To be precise, specify which row to start retrieving from. Offset is used along with the LIMIT. Here, LIMIT is nothing but to restrict the number of rows from the output.


2 Answers

Remove the line:

$row = mysql_fetch_array($result);

The while loop will grab the first row on the first iteration.

Resulting code:

<?php
$ordre = "nom";
$croissance = "ASC";

if(isset($_GET["ordre"])){
    $ordre = $_GET["ordre"];
};  

if(isset($_GET["croissance"])){
    $croissance = $_GET["croissance"];
};

$con = mysql_connect('localhost','root','');
mysql_select_db('sdj_jeux', $con);
$sql = "SELECT * FROM jeux ORDER BY $ordre $croissance";
$result = mysql_query($sql, $con);

$couleurcompteur = 0;
while ($row = mysql_fetch_array($result)){
    $couleurcompteur += 1;
if($couleurcompteur % 2){
    $classe = "pale";   
} else {
    $classe = "fonce";  
    };
?>
like image 60
Connor McArthur Avatar answered Oct 04 '22 19:10

Connor McArthur


Right here is your problem:

$row = mysql_fetch_array($result);  

$couleurcompteur = 0;
while ($row = mysql_fetch_array($result)){

You call mysql_fetch_array() once before the while. This throws out the first row since you don't use it. Remove that un-needed call.

NOTICE: Do not use MySQL_* for it has been deprecated as of PHP 5.5. Use MySQLi_* or PDO instead

like image 35
UnholyRanger Avatar answered Oct 04 '22 20:10

UnholyRanger