par
Sebe » 09 févr. 2007, 19:35
Bonjour,
Je suis un adepte du portail Joomla! (CMS) et je me suis dit qu'il fallait que j'apporte moi aussi ma pierre à l'édifice en créant un composant ! Voici un beau programme surtout quand on sait que je ne suis pas programmeur et c'est bien pour cela que je coince et je viens vous demander un peu d'aide.
Donc j'ai 2 tables:
- jos_societaire (id_societaire, nom, prenom, sexe, date, naissance)
jos_acrho_cat (id_categorie, nom_categorie, age_min, age_max)
La requete que je voudrais faire est que soit selection par exemple tous les espoirs hommes c-à-d agé de moins de 20 ans ... pas de problème, il ne faut qu'une table dans ce cas là:
Code : Tout sélectionner
$requete = "SELECT t1.id_societaire, t1.nom, t1.prenom, t1.sexe, YEAR(NOW()) - YEAR(t1.naissance) AS age"
. "\n FROM jos_societaire AS t1"
. "\n WHERE (YEAR(NOW()) - YEAR(t1.naissance) BETWEEN 0 AND 19)"
. "\n ORDER BY t1.nom ASC"
;
Le système Joomla est assez spécial et pour envoyer vers une autre page, j'utilise une fonction. Il faut donc ajouter ceci à la requête:
Code : Tout sélectionner
$database->setQuery( $requete );// met le bon préfixe à la table
$espoirslist = $database->loadObjectList ();
//print_r($espoirslist);
$resultat = $database->getQuery();
//echo $resultat;
societaire_html::categorie($mosConfig_live_site, $link, $espoirslist, $resultat);
}
Cela c'était juste pour l'information pour expliquer que je récupére les données sur une autre page dont voici le code qui nous intéresse:
<?php
function categorie($url, $link, $espoirslist, $resultat) {
echo $resultat;
?>
</p>
<table width="100%" border="1" cellspacing="1" cellpadding="1">
<tr>
<td><div align="center">Nom</div></td>
<td><div align="center">Prénom</div></td>
<td><div align="center">Catégorie</div></td>
</tr>
<?php //echo count($espoirslist).' enregistrement(s).<br />';
if ( count($espoirslist) > 0 )
{
foreach ($espoirslist as $espoir){
?>
<tr>
<td><?php echo $espoir->nom; ?></td>
<td><?php echo $espoir->prenom; ?></td>
<td><div align="center"><?php echo $espoir->nom_categorie; ?> <?php echo $espoir->age; ?></div></td>
</tr>
<?php
}
}else{
echo '$espoirslist est vide';
}
?>
<?php
}
?>
Ne faites pas trop attention aux diff. balises car cela fonctionne en l'état ... c'est juste pour un peu visualisé le problème !
Le problème est que je voudrais que la requête se fasse sur 2 tables pour que la catégorie de la personne soit prise en compte et surtout affiché donc je transforme ma requete ainsi:
Code : Tout sélectionner
$requete = "SELECT t1.id_societaire, t1.nom, t1.prenom, t1.sexe as sexe1, YEAR(NOW()) - YEAR(t1.naissance) AS age, t2.nom_categorie, t2.sexe as sexe2"
. "\n FROM jos_societaire AS t1, jos_acrho_cat AS t2"
. "\n WHERE YEAR(NOW()) - YEAR(t1.naissance) BETWEEN t2.age_min AND YEAR(NOW()) - YEAR(naissance) <= 19"
. "\n ORDER BY t1.nom ASC"
;
Là, j'ai déjà un gros soucis ... il me prend toutes les personnes de la table et pas seulement dont l'age est <= à 19 ans ! De plus, la requete me renvoit chacune des personnes 14X (nbre de catégorie) accompagné de toutes les catégories !
Plus rien ne va si j'introduits cette ligne en plus:
Y'a-t-il une bonne âme qui pourrait m'aider, me donner des trucs pour trouver l'erreur, ... d'avance merci
Bonjour,
Je suis un adepte du portail Joomla! (CMS) et je me suis dit qu'il fallait que j'apporte moi aussi ma pierre à l'édifice en créant un composant ! Voici un beau programme surtout quand on sait que je ne suis pas programmeur et c'est bien pour cela que je coince et je viens vous demander un peu d'aide.
Donc j'ai 2 tables:
[list]jos_societaire (id_societaire, nom, prenom, sexe, date, naissance)
jos_acrho_cat (id_categorie, nom_categorie, age_min, age_max)[/list]
La requete que je voudrais faire est que soit selection par exemple tous les espoirs hommes c-à-d agé de moins de 20 ans ... pas de problème, il ne faut qu'une table dans ce cas là:
[code]$requete = "SELECT t1.id_societaire, t1.nom, t1.prenom, t1.sexe, YEAR(NOW()) - YEAR(t1.naissance) AS age"
. "\n FROM jos_societaire AS t1"
. "\n WHERE (YEAR(NOW()) - YEAR(t1.naissance) BETWEEN 0 AND 19)"
. "\n ORDER BY t1.nom ASC"
;[/code]
Le système Joomla est assez spécial et pour envoyer vers une autre page, j'utilise une fonction. Il faut donc ajouter ceci à la requête:
[code]$database->setQuery( $requete );// met le bon préfixe à la table
$espoirslist = $database->loadObjectList ();
//print_r($espoirslist);
$resultat = $database->getQuery();
//echo $resultat;
societaire_html::categorie($mosConfig_live_site, $link, $espoirslist, $resultat);
}[/code]
Cela c'était juste pour l'information pour expliquer que je récupére les données sur une autre page dont voici le code qui nous intéresse:
[php]<?php
function categorie($url, $link, $espoirslist, $resultat) {
echo $resultat;
?>
</p>
<table width="100%" border="1" cellspacing="1" cellpadding="1">
<tr>
<td><div align="center">Nom</div></td>
<td><div align="center">Prénom</div></td>
<td><div align="center">Catégorie</div></td>
</tr>
<?php //echo count($espoirslist).' enregistrement(s).<br />';
if ( count($espoirslist) > 0 )
{
foreach ($espoirslist as $espoir){
?>
<tr>
<td><?php echo $espoir->nom; ?></td>
<td><?php echo $espoir->prenom; ?></td>
<td><div align="center"><?php echo $espoir->nom_categorie; ?> <?php echo $espoir->age; ?></div></td>
</tr>
<?php
}
}else{
echo '$espoirslist est vide';
}
?>
<?php
}
?>[/php]
Ne faites pas trop attention aux diff. balises car cela fonctionne en l'état ... c'est juste pour un peu visualisé le problème !
Le problème est que je voudrais que la requête se fasse sur 2 tables pour que la catégorie de la personne soit prise en compte et surtout affiché donc je transforme ma requete ainsi:
[code]$requete = "SELECT t1.id_societaire, t1.nom, t1.prenom, t1.sexe as sexe1, YEAR(NOW()) - YEAR(t1.naissance) AS age, t2.nom_categorie, t2.sexe as sexe2"
. "\n FROM jos_societaire AS t1, jos_acrho_cat AS t2"
. "\n WHERE YEAR(NOW()) - YEAR(t1.naissance) BETWEEN t2.age_min AND YEAR(NOW()) - YEAR(naissance) <= 19"
. "\n ORDER BY t1.nom ASC"
;[/code]
Là, j'ai déjà un gros soucis ... il me prend toutes les personnes de la table et pas seulement dont l'age est <= à 19 ans ! De plus, la requete me renvoit chacune des personnes 14X (nbre de catégorie) accompagné de toutes les catégories !
Plus rien ne va si j'introduits cette ligne en plus:
[code]. "\n INNER JOIN jos_acrho_cat ON t1.sexe = t2.sexe"[/code]
Y'a-t-il une bonne âme qui pourrait m'aider, me donner des trucs pour trouver l'erreur, ... d'avance merci