Erreur requête pour MIN [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006
-
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006
-
Bonjour

Voici mon problème : j'ai crée un formulaire où lorsqu'un
utilisateur entre
un artiste et/ou un titre, le requête affiche dans un
tableau la date,
l'artiste, le titre et une position (de 1 à 100).

Je
voudrais afficher la position minimale (il peut y en avoir plusieurs pour
un
artiste ayant le même titre - seul la date change). Seulement je n'arrive

pas :(

Qu'est-ce qui n'irait pas ? Il y aurait un problème au niveau
de la ligne :
while($result =
mysql_fetch_array($results))

Voici la requête :

if
( $allcriteres == "oui")
$operateur="AND";
else

$operateur="OR";
if ($artiste != "")
$finrequete .= " artiste LIKE
'%$artiste%'";
if ($titre != "")
if ($finrequete !=
"")
$finrequete .= " $operateur (titre LIKE '%$titre%')";

else
$finrequete .= " (titre LIKE '%$titre%')";
if
($finrequete != "")
$sql="SELECT * FROM charts WHERE $finrequete ORDER BY
`date` ASC" ;
else
$sql="SELECT * FROM charts ORDER BY `date`
ASC" ;

// Meilleure position
$requete="SELECT MIN(position)
FROM charts";
$results = mysql_query($requete);


$result=mysql_query($sql, $db) or die('Erreur de requete');
echo "Il y a
".mysql_num_rows($result)." résultats.";
if($result)
//si il n'y a
pas de résultats
{
if(mysql_num_rows($result)==0) echo
"<center>Pas de

Résultat</center>";
else
{
echo
"<center> Résultat(s) </center>
";

//
début du tableau
echo '<center>'.\"\n\";
// première ligne on affiche les titres prénom
et surnom dans 2 colonnes
echo '----
';
echo 'Date, ';
echo
'Artiste, ';
echo
'Titre, ';

echo 'Position, ';
echo
''.\"\n\";

// lecture et affichage des résultats sur 2
colonnes, 1 résultat par
ligne.
while($row =
mysql_fetch_array($result))
{
echo '----
';
echo ''.$row['date'].', ';
echo
''.$row['artiste'].', ';
echo
''.$row['titre'].', ';

echo ''.$row['position'].', ';

echo
''.\"\n\";
}
echo '
</center>'."\n";
// fin
du tableau.
while($result = mysql_fetch_array($results))
{

echo
$result["Max"];
}
}
mysql_free_result($result);
}
;

Merci
d'avance

10 réponses

Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006

En fait c'est résolu (désolé pour les 3 messages postés à la suite )


// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.



$meilleure_position = 50;



while($row = mysql_fetch_array($result)) {

echo '<tr>';

echo '<td bgcolor="#CCCCCC">'.$row['date'].'</td>';

echo '<td bgcolor="#CCCCCC">'.$row['artiste'].'</td>';

echo '<td bgcolor="#CCCCCC">'.$row['titre'].'</td>';

echo '<td bgcolor="#CCCCCC">'.$row['position'].'</td>';

echo '</tr>'."\n";



// si la position est meilleure que la précédente, on l'attribut comme nouvelle meilleure position

$meilleure_position = ($row['position']<$meilleure_position) ? $row['position']: $meilleure_position;

}

echo '</table></center>'."\n";

// fin du tableau.



echo "<center> Plus forte position : </center>";

echo '<center><td bgcolor ="#CCCCCC">'.$meilleure_position.'</td></center>';




}

// mysql_free_result($result);

}

?>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello

Affiche $sql, à mon avis la requête est foireuse.
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006

Je ne pense pas, car sans si j'enlève ce qu'il y a après //Fin du tableau, cela marche sans problème
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
salut
tu as dejà utilisé la variable $result pour autre chose
essaie une autre variable (mais je ne jurerai de rien)
...
while($result2 = mysql_fetch_array($results))
{
echo $result2["Max"];
}
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006

Non, ça ne donne rien
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Mais tu veux faire quoi au juste...?
Moi je vois :
$requete="SELECT MIN(position) FROM charts";
$results = mysql_query($requete);

puis

while($result = mysql_fetch_array($results))
{
echo $result["Max"];
}

D'où sors 'Max'...???

Maintenant :

$requete="SELECT MIN(position) as minpos FROM charts";
$results = mysql_query($requete);
while($result = mysql_fetch_array($results))
{
echo $result['minpos'];
}

Mais je ne vois pas où tu veux en venir...
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006

Oui désolé c'est un peu le bordel vu que je suis très débutant
Comme je l'ai énoncé, j'ai crée un formulaire où lorsqu'un utilisateur entre un artiste et/ou un titre, le requête affiche dans un tableau date / l'artiste / le titre / position (de 1 à 100).

Dans ce tableau affiché, je voudrais extraire la valeur minimale de la colonne position et l'afficher après le tableau comme tel :
"Plus forte position : 'position_min' "
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ca :
$requete="SELECT MIN(position) as minpos FROM charts";
$results = mysql_query($requete);
while($result = mysql_fetch_array($results))
{
echo $result['minpos'];
}

t'affichera lma position min de ta table charts.
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006

Merci mais je ne voulais pas qu'il me retourne la position mininimale de toutes les entrées de de la colonne position se trouvant dans la table charts mais seulement dans les positions affichée par ma requête.

Je te donne le lien de mon site : http://frenchcharts.free.fr/resultat.php
Dans artiste, cherche Jumpy, je voudrais qu'il m'affiche Meilleur position : 33
Messages postés
7
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
5 avril 2006