Grouper le résultat d'une réquête msql
Adony
-
Adony -
Adony -
Bonjour,
J'aimerai récupérer et afficher par groupe le contenu d'une table sur mon site.
A l'état actuel, voici le code que j'utilise pou lister le contenu de ma table:
--------------------------------------
function showPublishedmembers($option)
{
$db =& JFactory::getDBO();
$query = "SELECT * FROM #__members WHERE country > 'a' ORDER BY country, city, company";
$db->setQuery( $query );
$rows = $db->loadObjectList();
if ($db->getErrorNum())
{
echo $db->stderr();
return false;
}
HTML_members::showmembers($rows, $option);
}
-------------------------------------
J'obtiens un résultat de cette forme:
Country1-City(a)-Company(a)
Country1 cyty(b)-Company(b)
Country2-City-company
Country3-city(a)-company(a)
Country3-city(b)-company(b)
Quelle serait la solution pour regrouper les résulats par country, de sorte à avoir un résultat sous cette forme:
Country1
- City(a)-Company(a)
- cyty(b)-Company(b)
Country2
-City-company
Country3
-city(a)-company(a)
-city(b)-company(b)
Merci d'avance pour vos propositions.
J'aimerai récupérer et afficher par groupe le contenu d'une table sur mon site.
A l'état actuel, voici le code que j'utilise pou lister le contenu de ma table:
--------------------------------------
function showPublishedmembers($option)
{
$db =& JFactory::getDBO();
$query = "SELECT * FROM #__members WHERE country > 'a' ORDER BY country, city, company";
$db->setQuery( $query );
$rows = $db->loadObjectList();
if ($db->getErrorNum())
{
echo $db->stderr();
return false;
}
HTML_members::showmembers($rows, $option);
}
-------------------------------------
J'obtiens un résultat de cette forme:
Country1-City(a)-Company(a)
Country1 cyty(b)-Company(b)
Country2-City-company
Country3-city(a)-company(a)
Country3-city(b)-company(b)
Quelle serait la solution pour regrouper les résulats par country, de sorte à avoir un résultat sous cette forme:
Country1
- City(a)-Company(a)
- cyty(b)-Company(b)
Country2
-City-company
Country3
-city(a)-company(a)
-city(b)-company(b)
Merci d'avance pour vos propositions.
A voir également:
- Grouper le résultat d'une réquête msql
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- Samia, kevin et jason ont gardé la trace de leurs ventes quotidiennes du mois de juillet 2016. dans la feuille bilan, il manque les résultats de jason. insérez une colonne entre samia et kevin et reportez-y les résultats de jason. quel mot secret apparait en f2 ? - Forum LibreOffice / OpenOffice
- 5/90 resultat ✓ - Forum Excel
- Resultat bac 2025 - Guide
2 réponses
Bonjour,
Donc si j'ai bien compris voici ce que tu dois faire
Bon je ne comprends pas trop ton interrogation de base de données mais je vais essayer de t'expliquer le principe.
Pour l'instant tu te contentes de lister uniquement
Pour lister par country tu dois d'abord faire une requête qui va parcourir toutes tes country
$query = "SELECT DISTINCT(country) FROM #__members WHERE country > 'a' ORDER BY country";
Ensuite tu dois faire une boucle pour afficher ces country et à l'interieur tu vas refaire une requête qui va lister les city en fonction des country
boucle {
$country = $db->stderr() //$country reçoit le nom de ta country
$query = "SELECT * FROM #__members WHERE country > 'a' AND country ="$country" ORDER BY city, company";
}
Voila déjà ça dis moi si tu comprends...
Donc si j'ai bien compris voici ce que tu dois faire
Bon je ne comprends pas trop ton interrogation de base de données mais je vais essayer de t'expliquer le principe.
Pour l'instant tu te contentes de lister uniquement
Pour lister par country tu dois d'abord faire une requête qui va parcourir toutes tes country
$query = "SELECT DISTINCT(country) FROM #__members WHERE country > 'a' ORDER BY country";
Ensuite tu dois faire une boucle pour afficher ces country et à l'interieur tu vas refaire une requête qui va lister les city en fonction des country
boucle {
$country = $db->stderr() //$country reçoit le nom de ta country
$query = "SELECT * FROM #__members WHERE country > 'a' AND country ="$country" ORDER BY city, company";
}
Voila déjà ça dis moi si tu comprends...
Tout d'abord merci de votre réponse et de la pédagogie avec laquelle vous procédez.
Je n'ai pas compris votre solution. En fait je croyais l'avoir compris mais quand je l'applique j'ai le message d'erreur suivant: Parse error: parse error in ...\components\com_members\members.php on line 38.
Pour plus de clarté je vais inclure à ce message la totalité de mes script:
members.php=
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
echo '<div class="heading"><h5>ETC Members</h5></div>';
jimport('joomla.application.helper');
require_once( JApplicationHelper::getPath( 'html' ) );
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
jimport( 'joomla.utilities.date');
switch($task)
{
case 'remove':
removemembers( $option );
break;
case 'view':
viewmember($option);
break;
default:
showPublishedmembers($option);
break;
}
function showPublishedmembers($option)
{
$db =& JFactory::getDBO();
$query = "SELECT DISTINCT(country) FROM #__members WHERE country > 'a' ORDER BY country";
{
$country = $db->stderr() //$country reçoit le nom de ta country
$query = "SELECT * FROM #__members WHERE country > 'a' AND country ="$country" ORDER BY city, company";
}
//$query = "SELECT * FROM #__members WHERE country > 'a' ORDER BY country, city, company";
$db->setQuery( $query );
$rows = $db->loadObjectList();
if ($db->getErrorNum())
{
echo $db->stderr();
return false;
}
HTML_members::showmembers($rows, $option);
}
function viewmember($option)
{
$id = JRequest::getVar('id', 0);
$row =& JTable::getInstance('member', 'Table');
$row->load($id);
if(!$row->approved)
{
JError::raiseError( 404, JText::_( 'Invalid ID provided' ) );
}
HTML_members::showmember($row, $option);
$db =& JFactory::getDBO();
$db->setQuery("SELECT * FROM #__members WHERE cb_theatres >= 'A%' ");
$rows = $db->loadObjectList();
}
?>
members.html.php
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
class HTML_members
{
function showmembers($rows, $option)
{
?><table>
<form name="adminForm" action="index.php" method="post">
<table width="100%" cellpadding="4" cellspacing="0" border="0" align="center">
<tr>
<td colspan="4"><?php echo $menuname; ?></td>
<td align="right" nowrap="nowrap"><?php
foreach($rows as $row)
{
$link = JRoute::_('index.php?option=' . $option . '&id=' . $row->id . '&task=view');
echo
'<tr>
<td colspan="1">' . $row->country . '</td>
<td >' . $row->city . '</td>
<td ><a href="' . $link . '">' . $row->company . '</a></td>
</tr>';
}
?></table><?php
}
function showmember($row, $option)
{
?>
<p class="contentheading"><h5><?php echo $row->company; ?></h5></p>
<p><strong>Address:</strong> <?php echo $row->zipcode ; ?> , <?php echo $row->address; ?></p>
<p><strong>City:</strong> <?php echo $row->city; ?></p>
<p><strong>Country:</strong> <?php echo $row->country; ?></p>
<p><strong>Phone:</strong> <?php echo $row->phone; ?></p>
<p><strong>Fax:</strong> <?php echo $row->fax; ?></p>
<p><strong>Email:</strong> <a href="<?php echo $row->cb_email; ?></p>
<span style="font-size: 12pt; font-family: 'Times New Roman','serif'"><a href="mailto://<?php echo $row->cb_email ?> " target="_blank"><?php echo $row->cb_email?></span></a></span>
<p><strong>Website: </strong> <a href="http://<?php echo $row->website;?></p>
<span style="font-size: 12pt; font-family: 'Times New Roman','serif'"><a href="http://<?php echo $row->website ?> " target="_blank"><?php echo $row->website?></span></a></span>
<p><?php echo $row->cb_yourtheaterdescription; ?></p>
<p><em></em> <?php echo $row->cb_theatres;?></p>
<?php $link = JRoute::_('index.php?option=' . $option) ; ?>
<a href="<?php echo $link; ?>">Return to the members list</a>
<?php
}
}
?>
pratiquement j'obtiens le résultat suivant:
Belarus Minsk Le mongadore de Minsk
Belgium Brussels la Communauté Wallonie Bruxelles
Belgium Liège Palais de la Place
Croatia Rijeka Zajca Rijeka
Croatia Zagreb Zagrebacko Kasaliste
Cyprus Nicosia THOC
Finland Helsinki Helsingin Kaupungi
France Nice CDN- de Nice
France paris maison d'europe et d'orient
Or j'aimerai obtenir un classement de ce type:
Belarus
Minsk Le mongadore de Minsk
Belgium
Brussels la Communauté Wallonie Bruxelles
Liège Palais de la Place
Croatia
Rijeka Zajca Rijeka
Zagreb Zagrebacko Kasaliste
Cyprus
Nicosia THOC
Finland
Helsinki Helsingin Kaupungi
France
Nice CDN- de Nice
paris maison d'europe et d'orient
Qu'en pensez vous?
Merci d'avance pour vos réponses
Jérôme
$query = "SELECT * FROM #__members WHERE country > 'a' AND country =".$country." ORDER BY city, company";
Il manquait les points autour de la variable $country
Une autre chose : Tu dois modifier ça en fonction de comment tu récupères ta valeur... Je ne connais toujours pas ta base de données (SQL_SERVER, ORACLE ?)
$country = $db->stderr() //$country reçoit le nom de ta country
Cette ligne va bien mettre la valeur de country dans la variable $country ????
Merci pour ta contribution.
Voici le résultat que j'obtiens:
Parse error: parse error in C:\wamp\www\components\com_members\members.php on line 37
La ligne 37= $query = "SELECT * FROM #__members WHERE country > 'a' AND country =".$country." ORDER BY city, company";
Je n'ai pas pu trouver de solution.
Ma base de donnée est SQL_SERVER.
As tu une idée de ce qui fais problème dans la synthaxe?
Merci
Avec ça ça marche pas non plus ?
Voici le résultat:
Parse error: parse error in C:\wamp\www\components\com_members\members.php on line 37