Comparer les résultats d'une requete

Répondre
fausto
le 20/03/2013 à 12:08
fausto
Bonjour à toutes et à tous,

je souhaiterais comparer les résultats d'une requête, et ne retenir que le plus grand chiffre obtenu dans la boucle (variable $hauteur_text2 dans mon exemple ci-dessous)

Je bloque !

Merci d'avance

F

// Préparation de la requête avec le LIMIT
$sql = 'SELECT * FROM table ORDER BY id ASC';
mysql_query("SET NAMES 'utf8'");

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

//met les données dans un tableau
while($data = mysql_fetch_assoc($req))
{
$tablo[]=$data;
}

$nbcol=2;

$nb=count($tablo);
for($i=0;$i<$nb;$i++){

//les valeurs à afficher
$id=$tablo[$i]['id'];

$text2=$tablo[$i]['text2'];

$hauteur_text2 = strlen($text2);

}
Erwin
le 23/03/2013 à 11:54
Erwin
Bonjour,

Je ne suis pas sûr d'avoir exactement compris la question, mais voici une idée de réponse :

// Préparation de la requête avec le LIMIT
$sql = 'SELECT * FROM table ORDER BY id ASC';
mysql_query("SET NAMES 'utf8'");

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

//met les données dans un tableau
while($data = mysql_fetch_assoc($req, MYSQL_ASSOC)) { // Ici je rajoute le MYSQL_ASSOC puisqu'on n'a besoin que d'un tableau associatif
$tablo[]=$data;
}

$nbcol = 2;
$nb = count($tablo);

// On initialise une variable "memoire"
$max_length = 0;
// On initialise aussi $hauteur_text2
$hauteur_text2 = 0;

for($i=0;$i<$nb;$i++)
{
//les valeurs à afficher
$id = $tablo[$i]['id'];
$text2 = $tablo[$i]['text2'];

// On calcule la longueur du texte actuel
$length = strlen( $text2 );

/**
* On compare la longueur en memoire avec l'actuelle.
* Si elle est plus grande on la remplace en memoire.
*/
if( $length > $max_length ) {
$max_length = $length;
}
}

// A la fin, il ne doit nous rester que la plus grande valeur
$hauteur_text2 = $max_length;


J'ai rajouté quelques commentaires pour expliquer les modifications.

Juste un conseil cependant, dans la clause 'or die' de mysql_query(), afficher la requête exécutée est utile durant le développement, mais ne doit surtout jamais se faire en production, pour des raisons de sécurité (risque de dévoiler le schéma de la table à n'importe qui) ;)

Si jamais j'ai mal compris ou que tu as un problème, n'hésite pas :)
PHP Amateur
Erwin
le 23/03/2013 à 14:16
Erwin
Petit erratum : le MYSQL_ASSOC n'est effectivement pas utile, je n'avais pas fait attention au fait que la fonction utilisée était bien mysql_fetch_assoc() et non mysql_fetch_array() :)
PHP Amateur
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours