Page 1 sur 1

extraction d'un n°

Posté : 15 déc. 2006, 12:27
par cmoi
<?php
	   $table = "formateurs"; 
    $sql = "SELECT * FROM " . $table; 
    $res = mysql_query($sql); 
    $nb = mysql_num_rows($res);
    $i = 0; 
    while ($i < $nb){ 
	echo '<font face="Arial, Helvetica, sans-serif" size="2" color="#666666">'.'<b>'.mysql_result($res, $i, "id").'</b>'.'</font>';
	 $i++; 
    } 
   	?>
Ce script m'affiche la suite des identifiants : 1 2 3 4 5 ...

Je souhaiterais qu'il n'affiche que le dernier. Merci pour votre aide.

Posté : 15 déc. 2006, 12:29
par zeus
Comme pour le précédent message, "Bounjour" et "s'il vous plait", c'est pas cher et ça fait plaisir. :-k

Regarde du coté du SQL et plus particulièrement LIMIT et ORDER BY

Posté : 15 déc. 2006, 12:35
par cmoi
Limit ça sonne bien. Mais comme je suis totalement néophyte, c'est la syntaxe qui me manque.

Posté : 15 déc. 2006, 12:47
par charabia
Un peu de doc pour les néophytes ;)

:arrow: http://www.phpdebutant.org/article84.php

Posté : 15 déc. 2006, 23:24
par cmoi
Merci pour la doc mais je ne m'en sors pas.
<?php
	   $table = "formateurs"; 
    $sql = "SELECT * FROM " . $table; 
    $res = mysql_query($sql); 
    $nb = mysql_num_rows($res);
    $i = 0; 
    while ($i < $nb){ 
	echo '<font face="Arial, Helvetica, sans-serif" size="2" color="#666666"><b>'.mysql_result($res, $i, "id").'</b></font>';
	 $i++; 
    } 
   	?>
Je dois trouver la dernière valeur du champ id.
Il faut utiliser peut-être Limit, peut-être Count. Mais comment ?
Merci d'avance pour votre aide précieuse.

Posté : 15 déc. 2006, 23:46
par Ajoloca
Bonjour,
Avec ça
Comme pour le précédent message, "Bounjour" et "s'il vous plait", c'est pas cher et ça fait plaisir. :-k

Regarde du coté du SQL et plus particulièrement LIMIT et ORDER BY
plus le lein que t'a donnée charabia tu devrais arriver facilement.

Tu dois modifier ta requête pour quelle ne te donne que un rang "LIMIT 0,1" mais ce rang doit être celui du "id" le plus grand il te faut don trier le résultat du plus grand au plus petit "ORDER BY id DESC".

Comme là tu n'as qu'un résultat, dans ton PHP tu n'as plus besoin de ta boucle while().

Essaie de le le faire avec ses infos.

Posté : 16 déc. 2006, 00:34
par cmoi
voici où j'en suis et qui ne fonctionne évidemment toujours pas !
      <?php
	   $table = "formateurs"; 
    $sql = "SELECT * FROM " . $table."LIMIT 0,1"."ORDER BY id DESC"; 
    $res = mysql_query($sql); 
    $nb = mysql_num_rows($res);
    $i = 0; 
    echo '<font face="Arial, Helvetica, sans-serif" size="2" color="#666666"><b>'.mysql_result($res, $i, "id").'</b></font>';
	 $i++; 
   	?>

Posté : 16 déc. 2006, 00:47
par Ajoloca
Re,

Pourtant tu n'est pas bien loin.

Tu as des soucis de syntaxe, tu colles toutes tes concaténtions (il n'y a pas d'espace).

Il faut toujours tester le retour de MySQL.
Si tu l'avais fat tu te serais rendu compte que la requête n'est pas correctement construite.

De plus $i il ne te sert plus à rien (plus de rangs à chercher, tu n'en a qu'un)
Essaie ceci mais en essayant de comprendre
<?php
    $table = "formateurs"; 
    $sql = "SELECT * FROM " . $table . " ORDER BY id DESC LIMIT 0,1"; 
    $res = mysql_query($sql) or die('ERR_SQL :<br />' . $sql . '<br />' . mysql_error()); 
    echo '<font face="Arial, Helvetica, sans-serif" size="2" color="#666666"><b>'. mysql_result($res, 0, "id").'</b></font>';
?>

Posté : 16 déc. 2006, 11:06
par cmoi
super ça marche. même si je l'avoue je ne comprends pas tout à la syntaxe.

Posté : 16 déc. 2006, 11:18
par Cyrano
super ça marche. même si je l'avoue je ne comprends pas tout à la syntaxe.
Alors n'hésite pas à poser des question, sinon dans un mois, dans six mois ou dans deux ans, tu sera toujours à la recherche de solutions. Bien comprendre une syntaxe peut te faire avancer beaucoup plus facilement ;)