Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2881 connectés 

  FORUM HardWare.fr
  Programmation

  [SQL/PHP]Comment faire ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL/PHP]Comment faire ?

n°93028
kayasax
Posté le 24-01-2002 à 17:04:24  profilanswer
 

Ca doit pas etre tres dur mais je trouve pas la logique...
J'ai une table comme ca :
toto|date1
tata|date1
toto|date2
titi|date3
toto|date4
 
et je veux que ca m'affiche un truc du style :
toto ; 3 ; (date1,date2,date4)
tata ; 1 ; (date1)
titi ; 1 ; (date3)
 
donc faire un select distinct sur les noms, avec le nombre de fois ou il apparait (count (*)) (si c'est trop  contraignant on laissse tomber les dates)...
 
si kkun veut bien me pondre le code php correspondant ca m'arrangerai (ce qui me bloque c'est de recuper le nombre de fois ou le nombre apparait (je n'ai pas de variables associée).
 
++


---------------
All we need is a soul revolution
mood
Publicité
Posté le 24-01-2002 à 17:04:24  profilanswer
 

n°93069
Mara's dad
Yes I can !
Posté le 24-01-2002 à 18:08:27  profilanswer
 

En une seule requête, ce n'est pas possible.
Sinon, pour le count, tu fait :
 
select count(*) as nb_fois from ...
 
Et t'as une variable.
 
Sinon, tu utilise l'indice numérique dans le tableau des résultats 0, 1, 2... au lieu du nom de champ. Mais "as nb_fois" c'est mieux !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°93079
irulan
Posté le 24-01-2002 à 18:24:34  profilanswer
 

Du point de vue SQL c'est tout à fait possible, sans le détail des dates !!
 
SELECT NOM, COUNT(*) FROM MA_TABLE
GROUP BY NOM;
 
Pour ce qui est du PHP, désolé je ne peux pas t'aider :(

n°93083
FLY LM
Posté le 24-01-2002 à 18:33:00  profilanswer
 

C'est pas optimisé, mais ça répond à ton problème :
 
$query = "SELECT COUNT(id) as compt,nom FROM test3 GROUP BY nom";
$result = mysql_db_query ($cfgBase,$query) or die ("Erreur 1" );
 
 while($row = mysql_fetch_object($result))
 {
  $compteur[$row->nom] = $row->compt;
 }
 
$query2 = "SELECT id,nom,date FROM test3 ORDER BY nom";
$result2 = mysql_db_query ($cfgBase,$query2) or die ("Erreur 2" );
 
 $i = 0;
 while($row2 = mysql_fetch_object($result2))
 {
  $nom[$i] = $row2->nom;
   
  if($nom[$i]!=$nom[$i-1])
  {
   echo '<br>'.$nom[$i].' - '.$compteur[$nom[$i]].' - '.$row2->date;
  }
  else
  {
   echo ' - '.$row2->date;
  }
  $i++;
 }
 
Sans les dates :
 
$query = "SELECT COUNT(id) as compt,nom FROM test3 GROUP BY nom";
$result = mysql_db_query ($cfgBase,$query) or die ("Erreur 1" );
 
while($row = mysql_fetch_object($result))
{
 echo  $row->nom." - ".$row->compt."<br>";
}

n°93106
kayasax
Posté le 24-01-2002 à 19:51:42  profilanswer
 

Merci a tous c'etait le AS qqchose qui me manquait.
 
FlyLM peux tu m'expliquer cette instruction stp :
$compteur[$row->nom] = $row->compt;

n°93132
Mara's dad
Yes I can !
Posté le 24-01-2002 à 21:24:19  profilanswer
 

C'est pour générer un tableau associatif (dont l'index est le nom) qui contient donc pour chaque nom, le nombre de fois qu'il apparait.
 
En gros c'est pour stocker le résultat de la première requête avant de faire la seconde.
 
Comme il dit, c'est pas optimisé !  :lol:  
 
Donc c'est à toi de comprendre ce que çà fait et de le refaire mieux.
 
Je te souhaite un bon exercice.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°93216
kayasax
Posté le 24-01-2002 à 23:22:00  profilanswer
 

houla ben c'est pô gagné  :cry:

n°93316
kayasax
Posté le 25-01-2002 à 12:08:53  profilanswer
 

Et ca sert a quoi les points qui entourent les variables ??:
 echo '<br>'.$nom[$i].' - '.$compteur[$nom[$i]].' - '.$row2->date;


---------------
All we need is a soul revolution
n°93317
FLY LM
Posté le 25-01-2002 à 12:12:42  profilanswer
 

kayasax a écrit a écrit :

Et ca sert a quoi les points qui entourent les variables ??:
 echo '<br>'.$nom[$i].' - '.$compteur[$nom[$i]].' - '.$row2->date;  




 
->pour que PHP interprète les variables.

n°93318
Mara's dad
Yes I can !
Posté le 25-01-2002 à 12:12:50  profilanswer
 

Le Point, c'est l'opérateur de concaténation.
 
echo '<br>'.$nom[$i].' - '.$compteur[$nom[$i]].' - '.$row2->date;  
 
Mais si tu utilise les guillemets doubles, tu n'en as pas besoin:
echo "<br>$nom[$i]" - ".$compteur[$nom[$i]]." - ".$row2->date;  
 
Sauf pour les tableaux à plus d'une dimension "$compteur[$nom[$i]]", et peut-être aussi pour les objets, mais je suis pas certain "$row2->date".


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [SQL/PHP]Comment faire ?

 

Sujets relatifs
[PHP + MS SQL SERVER] : garder des 0 devant un nombre ....[PHP] Prob requête SQL... (débutant)
PHP SQL MSSQL : mon COUNT n'a qu'un seul doigt !!PHP & SQL Server 7.0
Comment debuter le PHP? et SQL?[PHP + SQL] ORDER BY
[PHP / SQL Server] Procédures stockées?a l'aide ! (probleme de base SQL /PHP)
[PHP] affichage de resultat d'une requete SQL ds un tableau[PHP] Apache - PHP - Sybase SQL Server 11...
Plus de sujets relatifs à : [SQL/PHP]Comment faire ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR