Euh ba en fait je me suis planté, les apostrophe c'est pour donner une valeur a une variable, je sais pas pourquoi j'ai eu une brusque envie d'en mettreC'est quoi, ces apostrophes ???Bien essayé ! Mais ça m'affiche "ville activite"$sql = "SELECT DISTINCT 'ville', 'activite' FROM table";![]()
$sql = "SELECT truc FROM table WHERE variable='valeur'";
Je suis bête ... excusez moi de ma grossière erreur ...$sql = "SELECT ville, activite FROM {$tablename} GROUP BY ville ORDER BY {$order_by} {$order_dir} ";
Chaque ville ne s'affiche qu'une fois. Et si je clique sur Antibes par exemple, je retrouve bien les 5 activités que je sais devoir y trouver et les enseignes qui vont avec.C'est ce qui est en ligne actuellement. Lorsqu'on clique sur une ville, on a un second tableau avec les activités de cette ville. Ou lorsqu'on clique sur une activité, on a un second tableau avec les villes où l'on trouve ces activités.En gros tu veux une liste deroulante avec les villes et lorsque je selectionne l'autre ville il y a une seconde liste déroulante avec les activités qu'il y a dans cette ville ?
$sql_ville = "SELECT DISTINCT ville FROM table";
$sql_activite = "SELECT DISTINCT activite FROM table";
Tout simplement le problème est que je ne sais pas réutiliser ces 2 requêtes !A ok
Ba alors oui deux requetes comme j'avais ditTout simplement$sql_ville = "SELECT DISTINCT ville FROM table"; $sql_activite = "SELECT DISTINCT activite FROM table";
$tab_ville = array();
$sql_ville = "SELECT DISTINCT ville FROM table";
$result_ville = mysql_query($sql_ville);
while ($ville = mysql_fetch_assoc($result_ville)) $tab_ville[] = $ville['ville'];
$tab_activite = array();
$sql_activite = "SELECT DISTINCT activite FROM table";
$result_activite = mysql_query($sql_activite);
while ($activite = mysql_fetch_assoc($result_activite)) $tab_activite[] = $activite['activite'];
//// Liste des villes
$sql_ville = "SELECT DISTINCT ville FROM table";
while($result_ville=mysql_fetch_array($sql_ville)){
echo $result_ville['ville'];
}
//// liste des activités
$sql_activite = "SELECT DISTINCT activite FROM table";
while($result_activite=mysql_fetch_array($sql_activite)){
echo $result_activite['activite'];
}
<p>Voici un exemple de table HTML qui fait un regroupement de lignes autour d'une cellule fusionnée verticalement (ROWSPAN)</p>
<table border="1">
<tr><td rowspan="4">Ville 1</td></tr>
<tr><td>Activité 1</td></tr>
<tr><td>Activité 2</td></tr>
<tr><td>Activité 3</td></tr>
<tr><td rowspan="3">Ville 2</td></tr>
<tr><td>Activité 1</td></tr>
<tr><td>Activité 2</td></tr>
</table>
<p>Et voici la même table produite par PHP depuis une source de données tableau (Array)</p>
<table border="1">
<?php
// Source de données pour affichage
$data = array(
'ville 1' => array('Activité 1', 'Activité 2', 'Activité 3'), // Les activités sont regroupées par ville
'ville 2' => array('Activité 1', 'Activité 2'),
);
// Affichage des données de la source $data
foreach($data as $ville=>$tab_activités){ // ROWSPAN = le nombre de lignes à fusionner = le nombre d'activités + une ligne pour la ville
echo sprintf('<tr><td rowspan="%d">%s</td></tr>', count($tab_activités)+1, $ville);
foreach($tab_activités as $activité){
echo sprintf('<tr><td>%s</td></tr>', $activité);
}
}
?>
</table>
<p>Et voici la même table produite par PHP depuis une source de base de données (SQL)</p>
<table border="1">
<?php
// Source de données pour affichage
$sql = "SELECT ville, activite FROM matable ORDER BY ville"; // liste des villes et activités classée par ville -+
$result = mysql_db_query('test', $sql, mysql_connect('localhost', 'root')) or die (mysql_error());
$data = array(); //tableau de données à produire pour l'affichage
while ($result && $row = mysql_fetch_array($result)){
$ville = $row['ville']; // le champ ville servira comme index sans doublons pour le tableau $data
$data[$ville][] = $row['activite']; //le champ activite sera stocké dans chaque index ville comme sous-tableau
}
mysql_close();
// Affichage des données de la source $data
if (count($data)>0){
foreach($data as $ville=>$tab_activités){
echo sprintf('<tr><td rowspan="%d">%s</td></tr>', count($tab_activités)+1, $ville);
if (count($tab_activités)>0){
foreach($tab_activités as $activité){
echo sprintf('<tr><td>%s</td></tr>', $activité);
}
}
else { echo '<tr><td>Aucune activité trouvée !</td></tr>'; }
}
}
else { echo '<tr><td>Aucune ville trouvée !</td></tr>'; }
?>
</table>
<p>ANNEXE: Voici le code SQL de la base de données de test</p>
<pre>
-- phpMyAdmin SQL Dump
-- version 3.1.3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 01 Juillet 2009 à 14:53
-- Version du serveur: 5.1.32
-- Version de PHP: 5.2.9-1
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `test`
--
-- --------------------------------------------------------
--
-- Structure de la table `matable`
--
CREATE TABLE IF NOT EXISTS `matable` (
`ville` varchar(255) NOT NULL,
`activite` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `matable`
--
INSERT INTO `matable` (`ville`, `activite`) VALUES
('Aix-en-Provence', 'Agence de voyages d''affaires'),
('Aix-en-Provence', 'Conseil en management de l''innovation'),
('Aix-en-Provence', 'Courtage en prêt professionnel'),
('Aix-en-Provence', 'Economie d''Impôt, Création de Valeurs - Patrimoine'),
('Aix-en-Provence', 'Formation professionnelle'),
('Aix-en-Provence', 'Formation, conseil'),
('Aix-en-Provence', 'Gestion de Patrimoine, conseils et courtage assurances et financier'),
('Aix-en-Provence', 'Prestations de services informatiques pour aider les chefs d entreprises '),
('Nice', 'Agence Conseil en communication'),
('Nice', 'Agence de business development'),
('Nice', 'Agence de Voyages'),
('Tunis, Tunisie', 'Affaires internationales');
</pre>
//// Liste des villes
$sql_ville = "SELECT DISTINCT ville FROM table";
while($result_ville=mysql_fetch_array($sql_ville)){
echo $result_ville['ville'];
}
//// liste des activités
$sql_activite = "SELECT DISTINCT activite FROM table";
while($result_activite=mysql_fetch_array($sql_activite)){
echo $result_activite['activite'];
}
Tu fais un traitement pour les villes qui ne sont donc ainsi pas en doubleJ'ai essayé mais ça ne fonctionne pas sans doute à cause du code préexistant.Pourquoi pas tout simplement ://// Liste des villes $sql_ville = "SELECT DISTINCT ville FROM table"; while($result_ville=mysql_fetch_array($sql_ville)){ echo $result_ville['ville']; } //// liste des activités $sql_activite = "SELECT DISTINCT activite FROM table"; while($result_activite=mysql_fetch_array($sql_activite)){ echo $result_activite['activite']; }
<?php
// Le nom de notre table
$tablename = 'jos_acajoom_subscribers';
// Tri sur colonne
$tri_autorises = array('ville','activite');
$order_by = in_array($_GET['order'],$tri_autorises) ? $_GET['order'] : 'ville';
// Sens du tri
$order_dir = isset($_GET['inverse']) ? 'DESC' : 'ASC';
// Préparation de la requête
$sql = "
SELECT ville, activite
FROM {$tablename}
GROUP BY ville
ORDER BY {$order_by} {$order_dir}
";
$result = mysql_query($sql);
// Notre fonction qui affiche les liens
function sort_link($text, $order=false)
{
global $order_by, $order_dir;
if(!$order)
$order = $text;
$link = '<a href="?order=' . $order;
if($order_by==$order && $order_dir=='ASC')
$link .= '&inverse=true';
$link .= '"';
if($order_by==$order && $order_dir=='ASC')
$link .= ' class="order_asc"';
elseif($order_by==$order && $order_dir=='DESC')
$link .= ' class="order_desc"';
$link .= '>' . $text . '</a>';
return $link;
}
// Affichage
?>
<style type="text/css">
a.order_asc,
a.order_desc:hover {
padding-right:15px;
background:transparent url(images/s_asc.png) right no-repeat;
}
a.order_desc,
a.order_asc:hover {
padding-right:15px;
background:transparent url(images/s_desc.png) right no-repeat;
}
</style>
<table>
<tr bgcolor="#FF9900">
<th valign="top">
<?php echo sort_link('Ville', 'ville') ?>
</th>
<th valign="top">
<?php echo sort_link('Activité', 'activite') ?>
</th>
</tr>
<?php while( $row=mysql_fetch_assoc($result) ) : ?>
<tr>
<td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><a href="http://www.businessclub-caz.com/ville.php?ville=<?php echo $row['ville'] ?>">
<?php echo $row['ville'] ?>
</a></font></td>
<td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><a href="http://www.businessclub-caz.com/activite.php?activite=<?php echo $row['activite'] ?>"><?php echo $row['activite'] ?></a></font></td>
</tr>
<?php endwhile ?>
</table>