IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème de récupération de données mysql [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut Problème de récupération de données mysql
    Hi all,

    Je dois récupérer une liste d'objets selon une sélection (le tout dans une base Mysql) et l'afficher dans un tableau HTML jusqu'ici rien de compliqué et de problématique, mais voilà, la première valeur n'est apparemment pas prise

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    $query2="SELECT ID, name, loa, pers, chantier, basedepus FROM boat WHERE chantier LIKE '%".$shipyard."%' AND hull LIKE '%mono%'ORDER BY loa DESC";
    	$result= mysql_query($query2, $link);
    	$nb_lignes=mysql_num_rows($result);
    	$row1 = mysql_fetch_row($result);
    	$chantier1=$row1[4];
    	if(($nb_lignes != 0))
    	{
    	echo"
    		<span class='titleTabBareboat'><h3> ".$chantier1." </h3></span>
    	<br/>
    	<table width='700' border='0' cellspacing='0' cellpadding='0' class='textTab'>";
    	$tmp=0;
    	while ($row = mysql_fetch_row($result))
    	{
    		if(($tmp%2)==0)
    		{
    			$tmpcol='#ffffff';
    		}
    		else
    		{
    			$tmpcol='#dcdcdc';
    		}
    		$ID=$row[0];
    		$name=$row[1];
    		$loa=$row[2];
    		$pers=$row[3];
    		$chantier=$row[4];
    		$basedepus=$row[5];
     
    //Nettoyage des espaces en fin et début des noms de base de départ, puis remplacement des - par des espaces.
    		$basedepus=trim($basedepus);								        $basedepus=str_replace("-", " ", $basedepus);
     
    		$loa2=$loa*03.28084;
    		$format = "%01.0f";
    		$format2 = "%01.1f";
    		$loa3=intval($loa2);
     
    		echo"<tr bgcolor='".$tmpcol."' height='20'>
    			<td><a href='#' title='$name' class='blueLink' target='_blank'>".$name."</a></td>
    			<td>".$loa." /";
    		echo str_replace('.',"'" ,round($loa2,1) );
    		echo"	</td>";
    		echo"	<td>".$pers."</td>
    		<td>".$basedepus."</td>
    		</tr>";
    		$tmp=$tmp + 1;
    	}							echo"</table><br/><br/>";
    Je ne vois pas pourquoi la premiere entrée n'est pas prise en compte, j'ai testé les requêtes dans phpmyadmin et j'ai bien la première entrée

    Merci d'avance pour vos réponses

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vous commencez à lire le résultat avant le while via la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row1 = mysql_fetch_row($result);
    Donc c'est normal.

    Si vous n'en avez pas besoin supprimer le code correspondant sinon utilisez la fonction mysql_data_seek pour repositionner le curseur interne au début des résultats retournés (deuxième paramètre avec pour valeur 0), à appeler juste avant l'itération while. Vous pouvez aussi revoir votre "algorithme" pour vous en passer ...

  3. #3
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    Effectivement c'est bien là l'erreur, encore merci julp !!

    Décidémment vous avez solution à tout mes problèmes

    Pour mysql_data_seek, la deuxième valeurs est la même que la position du champs dans la requête ?

    c'est à dire si j'ai une variable de type :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row1 = mysql_fetch_row($result);
    $chantier1=$row1[4];

    je peux le remplacer par :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $chantier = mysql_data_seek($result, 4);

    non ?

    Je vais essayer

    Merci pour les futures réponses !

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Non : la position attendue par mysql_data_seek concerne celle de l'enregistrement (constitué d'un ensemble de champs/colonnes). $row1[4] indique la quatrième colonne d'un enregistrement (ici le premier).

    une_table :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > id | intitule
      1  | Un
      2  | Deux
      3  | Trois
      4  | Quatre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result= mysql_query('SELECT id,intitule FROM une_table ORDER BY id ASC');
    $row1 = mysql_fetch_row($result);
    $intitule1 = $row1[1];
    $row1 pointera sur l'enregistrement [1 | Un]
    $intitule1 vaudra [Un], valeur de la deuxième colonne (puisqu'elles sont indexées à partir de 0 d'où le 1) de l'enregistrement pointé par $row1.

    Admettons que nous ajouterions après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // On se repositionne sur le premier enregistrement (index 0)
    mysql_data_seek($result, 0);
    // On "lit" l'enregistrement à la position courante du curseur
    // On doit utiliser une des fonctions mysql_fetch_* pour rendre effectif le déplacement
    $row = mysql_fetch_row($result);
    $intitule = $row[1];
    Nous sommes donc revenu sur le tout premier enregistrement donc :
    $row pointera sur l'enregistrement [1 | Un]
    $intitule vaudra [Un]

    Déplaçons nous ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // On se repositionne sur le troisième enregistrement (index 2)
    mysql_data_seek($result, 2);
    // On "lit" l'enregistrement à la position courante du curseurdéplacement
    $row = mysql_fetch_row($result);
    $intitule = $row[1];
    $row pointera sur l'enregistrement [3 | Trois]
    $intitule vaudra [Trois]

    J'ai familiarisé au maximum.

  5. #5
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    En fait j'ai refait l'algorithme, je récupérais déja le champs voulu ...
    vous pouvez me et parce que je suis un , lol

    Sinon merci, ça me fera une connaissance en plus !! d'autant qu'elle m'a l'air plutôt pas mal cette fonction mysql.

    Encore merci Julp ! Bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 31
    Dernier message: 27/07/2006, 13h51
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [MySQL] problème de récupération de données incompréhensible
    Par yanice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/07/2006, 22h45
  4. [MySQL] Problème de récupération de données
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 05/04/2006, 15h13
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo