Lecture de données de la BDD et utilisation de ces données

Petit nouveau ! | 4 Messages

27 nov. 2007, 18:29

Bonjour je voudrai faire une requete a ma BDD :

J'ai un tableau de données avec une colonne "mois". (chaque mois pouvant appraitre X fois sur X lignes).

Je voudrais lire la colonne "mois", et obtenir chaque mois apparut au moins une fois dans une ligne, mais je ne vois pas comment m'y prendre.

(exemple)
colonne mois
janvier
janvier
février
mars
avril
mars

me donnerai comme résultat : janvier, février, mars, avril.

Ensuite je voudrai obtenir ces résultats pour faire une requete du type "SELECT nom WHERE mois = janvier" (et ensuite passer au mois suivant).

Merci de votre aide !

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 nov. 2007, 18:36

La requête SQL doit sélectionner les mois sans doublons de la colonne "mois" de la table, voici comment:

Code : Tout sélectionner

SELECT DISTINCT mois FROM matable
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 nov. 2007, 19:13

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "SQL & Bases de données".

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 4 Messages

28 nov. 2007, 15:35

désolé de m'etre trompé de forum :)

merci sadeq pour ta reponse , cela m'a aidé à avancer, je me retrouve confronté à ce probléme maintenant :

j'ai avancé sur une partie, j'explique ce qu'il me manque :

J'ai une table avec comme données les mois et l'id des inscrits (nom table : "asco"). et une table avec comme données l'id des inscrits et le nom des inscrits (nom "inscritionaj").

je liste les mois ou il ya des inscrits :

Code : Tout sélectionner

mysql_select_db($database_sql, $sql); $query_Recordset1 = "SELECT DISTINCT acsco.mois FROM acsco"; $Recordset1 = mysql_query($query_Recordset1, $sql) or die(mysql_error()); while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) { $mois = $row_Recordset1['mois']; echo "<p>".$row_Recordset1['mois']."</p>"; }
je voudrais ensuite utiliser cette requete qui liste les noms des inscrits pour chaque mois (variable $mois) :

Code : Tout sélectionner

$query_Recordset2 = "SELECT acsco.asco_adhid, inscriptionaj.adh_nom FROM acsco, inscriptionaj WHERE acsco.mois = '$mois' AND inscriptionaj.adh_id = acsco.asco_adhid";
je voudrais obtenir un affichage sous cette forme de tableau :

janvier | février |mars |
inscrit1 |inscrit1 |inscrit1 |
inscrit2 |inscrit2 |inscrit2 |

je ne sais pas comment bien intégrer la boucle dans la boucle, quand j'essaie, mon tableau est soit presenté nimporte comment, soit il manque des données !

en esperant que ce soit assez clair pour etre compris, merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

28 nov. 2007, 21:45

Il faut d'abord obtenir les données dans le format d'organisation que tu veux pour l'affichage, c'est à dire selon toi : les inscrits sont regroupés par mois.
Pour celà t'as pas besoin de la requête qui extrait les mois distincts car tu peux faire le regroupement des inscrits par mois dans la même requête sachant que PHP peut te regrouper le résultat de la requête dans un tableau indexé par mois où chaque index de mois contient la liste des inscrits le concernant comme l'exemple suivant:
$inscrits_par_mois = array(
    "janvier" => array (....., ..... , ......) , //ici : les id des inscrits pour ce mois
    "février" => array (....., ..... , ......) , //ici : les id des inscrits pour ce mois
    ...
); //fin du tableau

Pour construire un tel tableau, on réécrit la boucle while qui fait le mysql_fetch :
//
mysql_select_db($database_sql, $sql);
//
$query_Recordset = "
SELECT acsco.mois, acsco.asco_adhid, inscriptionaj.adh_nom
FROM acsco, inscriptionaj WHERE inscriptionaj.adh_id =  acsco.asco_adhid
GROUP BY acsco.mois";
//
$Recordset = mysql_query($query_Recordset, $sql) or die(mysql_error());
//
while ($row_Recordset = mysql_fetch_assoc($Recordset))   
{ 
    //Champs du recordset
    $mois = $row_Recordset['mois'];
    $asco_adhid= $row_Recordset['asco_adhid'];
    $adh_nom= $row_Recordset['adh_nom'];
   
    //Remplir le tableau des inscrits par mois: Ajouter l'inscrit en cours
    $inscrits_par_mois [$mois][] = array ("asco_adhid"=> $asco_adhid, "adh_nom"=> $adh_nom);
    
} 

//Affichage du tableau $inscrits_par_mois
echo "<pre>";
print_r ($inscrits_par_mois);
echo "</pre>";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène