Problème avec la foonction count et distinct

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec la foonction count et distinct

par djtec » 29 juin 2007, 20:50

Ben cela ne fonctionne pas non plus.

EDIT:

Voilà j'ai trouvé.
if (!isset($_GET['total']))
{
$sql = "SELECT COUNT(*) FROM `".$prefixe."_".$type."` WHERE `titre` LIKE CONVERT(_utf8 '%".addslashes($mot)."%' USING latin1) COLLATE latin1_general_ci ORDER By titre";
$p = mysql_query($sql,$c);
$total = mysql_result($p, 0);
}
else $total = intval($_GET['total']);

if ($total == 0)
{ 
$result = '- Aucun résultat pour le mot <b>"'.$mot.'"</b>';
} 
elseif($total == 1)
{ 
$result = '- 1 résultat pour le mot <b>"'.$mot.'"</b>';
} 
else 
{
$result = '- '.$total.' résultats pour le mot <b>"'.$mot.'"</b>';
}

J'ai mit ça
$p = mysql_query($sql,$c);
$total = mysql_result($p, 0);
A la place de ça
$p = @mysql_query($sql,$c);
$total = @mysql_result($p,'0','qte');

En faites les "@" et le "mysql_result($p,'0','qte')" empêchait l'éxécution de la requète.


Mais une question.

Vaut-il mieux utiliser ce type de requète?
$sql = "SELECT COUNT(*) FROM `".$prefixe."_".$type."` WHERE `titre` LIKE CONVERT(_utf8 '%".addslashes($mot)."%' USING latin1) COLLATE latin1_general_ci ORDER By titre";
Ou alors celle-ci?
$sql = "SELECT COUNT(*) FROM `".$prefixe."_".$type."` WHERE `titre` LIKE '%".addslashes($mot)."%' ORDER By titre";

par tanky » 29 juin 2007, 20:29

Avec la clause GROUP BY tu dois pouvoir t'en sortir avec quelques chose de ce genre :

Code : Tout sélectionner

$sql = "SELECT COUNT(*) FROM `".$prefixe."_".$type."` WHERE `titre` LIKE CONVERT(_utf8 '%".addslashes($mot)."%' USING latin1) GROUP BY titre COLLATE latin1_general_ci";

Problème avec la foonction count et distinct

par djtec » 29 juin 2007, 19:42

Bonjour,

Voila j'ai un script de recherche dans ma base et je voudrais afficher le nombre de résultat trouvé.

Mais cela m'affiche toujours aucun résultat.

Voici mon code:
if (!isset($_GET['total']))
{
$sql = "SELECT COUNT(DISTINCT titre) FROM `".$prefixe."_".$type."` WHERE `titre` LIKE CONVERT(_utf8 '%".addslashes($mot)."%' USING latin1) COLLATE latin1_general_ci";
$p = @mysql_query($sql,$c);
$total = @mysql_result($p,'0','qte');
}
else $total = intval($_GET['total']);

if ($total == 0)
{ 
$result = '- Aucun résultat pour le mot <b>"'.$mot.'"</b>';
} 
elseif($total == 1)
{ 
$result = '- 1 résultat pour le mot <b>"'.$mot.'"</b>';
} 
else 
{
$result = '- '.$total.' résultats pour le mot <b>"'.$mot.'"</b>';
}


J'ai essayé ceci aussi mais le résultat et le même:
if (!isset($_GET['total']))
{
$sql = "SELECT COUNT(*) FROM `".$prefixe."_".$type."` WHERE `titre` LIKE CONVERT(_utf8 '%".addslashes($mot)."%' USING latin1) COLLATE latin1_general_ci";
$p = @mysql_query($sql,$c);
$total = @mysql_result($p,'0','qte');
}
else $total = intval($_GET['total']);

if ($total == 0)
{ 
$result = '- Aucun résultat pour le mot <b>"'.$mot.'"</b>';
} 
elseif($total == 1)
{ 
$result = '- 1 résultat pour le mot <b>"'.$mot.'"</b>';
} 
else 
{
$result = '- '.$total.' résultats pour le mot <b>"'.$mot.'"</b>';
}
Donc voilà si quelqu'un avait une idée.

Merci d'avance.