Page 1 sur 2

Lien avec id

Posté : 24 sept. 2014, 21:28
par yoann38
Salut tt le monde,
Petit soucis avec des liens <a></a>
Je recupere bien dans ma requete la colonne url ( testé dans PHPMYADMIN ) la requete est nikel.
Tout marche les regions s'affiche et le nombre de club en rapport avec la region également, maintenant j'aimerais que dans le <a></a> soit associer l'url en rapport:

Exemple d'une url par rapport à une region:
http://monsite/toute-les-clubs-en-regio ... alpes.html

<!-- carte de France SVG -->  
 <div class="container">
  <div class="col-md-6 col-md-offset-2 col-sm-8 col-sm-offset-2">
    <div id="francemap" style="width: 500px; height: 500px;"></div>
  </div>
<!-- Fin carte de France SVG -->  
<!-- Liste regions -->
<div class="col-md-3">  
<?php

 // Requete pour afficher uniquement les régions ou des sorties sont proposées
 $count = array();
 $liste = $bdd-> query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url` FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `date_fin_sortie` > NOW( )  AND`valide` = 1 GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
 $count[$row['id_region']] =  $row['nb'];
 }
 
 foreach($aRegion as $k => $v) {
  $nb = array_key_exists($k, $count) ? $count[$k] : 0;
 echo '

  <li class="list-unstyled cal_sorties">
    <a href="toute-les-clubs-en-region-'.$url.'.html">
         <span class="badge pull-right">'.$nb.'</span>'.$v.'
    </a>
  </li>'
 
  ;
 }
?>
</div>
<!-- Fin liste regions -->
Merci pour l'aide a venir

Re: Lien avec id

Posté : 24 sept. 2014, 21:44
par arnaud69
il sort d'où ce $aRegion ??

Pourquoi tu boucles pas avec ton fetch ?? #-o #-o

Re: Lien avec id

Posté : 24 sept. 2014, 21:57
par yoann38
salut aregion viens d'un include que j'appel dans ma page

$aRegion = array(1 => 'Alsace', 2 => 'Aquitaine', 3 => 'Auvergne', 4 => 'Basse-Normandie', 5 => 'Bourgogne', 6 => 'Bretagne', 7 => 'Centre',  8=> 'Champagne-Ardenne', 9 => 'Corse', 10 => 'Franche-Comté', 11 => 'Haute-Normandie', 12 => 'Ile-de-France', 13 => 'Languedoc-Roussillon', 14 => 'Limousin', 15 => 'Lorraine', 16 => 'Midi-Pyrénées', 17 => 'Nord-Pas-de-Calais', 18 => 'Pays de la Loire', 19 => 'Picardie', 20 => 'Poitou-Charentes', 21 => 'Provence-Alpes-Côte d\'Azur', 22 => 'Rhône-Alpes', 23 => 'Outre-Mer');
	

Re: Lien avec id

Posté : 25 sept. 2014, 09:15
par sirakawa
Bjr,
ne remarque sur SQL:
il est déconseillé par plusieurs sites officiels de mettre des ` autour du nom des champs


URLS
$aRegion = array(1 => 'Alsace', 2 => 'Aquitaine', 3 => 'Auvergne', 4 => 'Basse-Normandie', 5 => 'Bourgogne', 6 => 'Bretagne', 7 => 'Centre', 8=> 'Champagne-Ardenne', 9 => 'Corse', 10 => 'Franche-Comté', 11 => 'Haute-Normandie', 12 => 'Ile-de-France', 13 => 'Languedoc-Roussillon', 14 => 'Limousin', 15 => 'Lorraine', 16 => 'Midi-Pyrénées', 17 => 'Nord-Pas-de-Calais', 18 => 'Pays de la Loire', 19 => 'Picardie', 20 => 'Poitou-Charentes', 21 => 'Provence-Alpes-Côte d\'Azur', 22 => 'Rhône-Alpes', 23 => 'Outre-Mer');
pourrait devenir:
$aRegion = array(
1 => array ( "nom"=> 'Alsace', "url"=>"charlie"),
2 => array ( "nom" => 'Aquitaine',"url" => "bouzou"),
);
print_r($aRegion);

Autre idée :avec ton tableau d'origine;
arborescence du site
racine (là où est ton index.html ou index.php)
---- sous_rep regions
--------Alsace
infos.html
-------- Aquitaine
infos.html
foreach ($aRegion as $region)
{
$nom = $region;
$la_region = str_replace (" ","_",$nom);
$lien = $la_region."/infos.html";
avec comme lien "

Re: Lien avec id

Posté : 25 sept. 2014, 10:39
par arnaud69
Au lieu d'avoir tes régions en fichier plat (tableau ou ce que tu veux), je les mettrais en base, et tu fais une jointure et tu es tranquille.

Parfois y'a des choses que j'arrive pas à comprendre #-o #-o

Re: Lien avec id

Posté : 25 sept. 2014, 10:58
par sirakawa
@ arnaud69
"Au lieu d'avoir tes régions en fichier plat (tableau ou ce que tu veux), je les mettrais en base, et tu fais une jointure et tu es tranquille."
Il y a deux situations:
-- quand la solution choisie est complètement aberrante (bdd mal conçue)
-- quand la solution choisie fonctionne mais est incomplète.
(tableau ou ce que tu veux):
c'est quoi ce ce que tu veux.

Il suffit de suffit rarement: je les mettrais en base : comment? sous quelle forme?
et tu fais une jointure jointure entre quoi et quoi?

Re: Lien avec id

Posté : 25 sept. 2014, 11:12
par arnaud69
@ arnaud69
"Au lieu d'avoir tes régions en fichier plat (tableau ou ce que tu veux), je les mettrais en base, et tu fais une jointure et tu es tranquille."
Il y a deux situations:
-- quand la solution choisie est complètement aberrante (bdd mal conçue)
-- quand la solution choisie fonctionne mais est incomplète.
(tableau ou ce que tu veux):
c'est quoi ce ce que tu veux.

Il suffit de suffit rarement: je les mettrais en base : comment? sous quelle forme?
et tu fais une jointure jointure entre quoi et quoi?
C'est une blague ou une attaque ? :( :( :( Je comprends pas.
Tu fais du mysql visiblement, donc 'create table regions', 2 champs : id et nom, jointure sur l'id dans ta requête.
Je me suis peut être mal exprimé, désolé, mais c'est tout simple en fait.

Re: Lien avec id

Posté : 25 sept. 2014, 12:18
par yoann38
Re,
Merci pour l'aide en tt cas.
Enfait je n'ai pas d'importance sur la facon de procéder. Array ou SQL

Mais ma requete comporte deja la fameuse Jointure:
$liste = $bdd-> query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url` FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `date_fin_sortie` > NOW( )  AND`valide` = 1 GROUP BY `id_region`");
La jointure s'effectue avec la table region et cette table région comporte une colonne url

Mais ca l'air plus simple qu'elle selon vous la meilleur facon de proceder, peut etre l'array nan ?
Si tel est le cas, comment procéder ?
Merci encore

Pour rapel voici code actuel:
<?php


 // Requete pour afficher uniquement les régions ou des sorties sont proposées
 $count = array();
 $liste = $bdd-> query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url` FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `date_fin_sortie` > NOW( )  AND`valide` = 1 GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
 $count[$row['id_region']] =  $row['nb'];
 }
 
 foreach($aRegion as $k => $v) {
  $nb = array_key_exists($k, $count) ? $count[$k] : 0;
 echo '

  <li class="list-unstyled cal_sorties">
	<a href="toutes-les-sorties-en-region-'.$url.'.html">
		 <span class="badge pull-right">'.$nb.'</span>'.$v.'
    </a>
  </li>'
  
  ;
 }
?>

Re: Lien avec id

Posté : 25 sept. 2014, 14:45
par arnaud69

<?php


 // Requete pour afficher uniquement les régions ou des sorties sont proposées
 $count = array();
 $liste = $bdd->query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url` 
                   FROM `loisirs` 
                   JOIN `regions` 
                         ON `regions`.`region_id` = `loisirs`.`id_region` 
                   WHERE `date_fin_sortie` > NOW( )  AND `valide` = 1 
                   GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
     $count[$row['id_region']] =  $row['nb']; // donc là tu mets en tableau le nombre de sorties associées au régions
     // et pourquoi pas ça :
     echo '<li class="list-unstyled cal_sorties"><a href="toutes-les-sorties-en-region-'.$row['url'].'.html"><span class="badge pull-right">'.$row['nb'].'</span>'.$v.'</a></li>';
 }



?>


PAr contre le $v c'est quoi que tu veux mettre dedans ?

Re: Lien avec id

Posté : 25 sept. 2014, 15:23
par yoann38
bah en fait '.$v.' correspond à l'affichage des regions et '.$nb.' au nombre ( comme tu t'en doute ).

Ca l'air de marcher mais problème je n'ai plus toutes les regions comme avant avec un echo a 0 en cas ou il n ya pas de sortie
et du coup plus nom des regions .....

Code actuel ( le tien )
<?php


 // Requete pour afficher toutes les sorties avec un echo 0 si pas de sortie
 $count = array();
 $liste = $bdd->query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url`
                   FROM `loisirs`
                   JOIN `regions`
                         ON `regions`.`region_id` = `loisirs`.`id_region`
                   WHERE `date_fin_sortie` > NOW( )  AND `valide` = 1
                   GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
     $count[$row['id_region']] =  $row['nb']; // donc là tu mets en tableau le nombre de sorties associées au régions
     // et pourquoi pas ça :
     echo '<li class="list-unstyled cal_sorties"><a href="toutes-les-clubs-en-region-'.$row['url'].'.html"><span class="badge pull-right">'.$row['nb'].'</span>'.$v.'</a></li>';
 }



?>

Re: Lien avec id

Posté : 25 sept. 2014, 15:28
par arnaud69
Tu peux mettre le résultat de la sortie générée stp

Re: Lien avec id

Posté : 25 sept. 2014, 15:31
par yoann38
code source de la page:
<div class="col-md-3">  
<li class="list-unstyled cal_sorties"><a href="toutes-les-sorties-en-region-poitou-charentes.html"><span class="badge pull-right">1</span></a></li><li class="list-unstyled cal_sorties"><a href="toutes-les-sorties-en-region-rhone-alpes.html"><span class="badge pull-right">3</span></a></li>
Le code actuel du coup affiche que le nombre de clubs et le lien marche mais du coup je n'ai pas le nom des regions d'afficher et dans le code tu a supprimer que si pas de sorties
 echo 0
.

Mon code:
<?php
 // Requete pour afficher uniquement les régions ou des sorties sont proposées
 $count = array();
 $liste = $bdd-> query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url` FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `date_fin_sortie` > NOW( )  AND`valide` = 1 GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
 $count[$row['id_region']] =  $row['nb'];
 }
 
 foreach($aRegion as $k => $v) {
  $nb = array_key_exists($k, $count) ? $count[$k] : 0;
 echo '

  <li class="list-unstyled cal_sorties">
	<a href="toutes-les-clubs-en-region-'.$url.'.html">
		 <span class="badge pull-right">'.$nb.'</span>'.$v.'
    </a>
  </li>'
  
  ;
 }
?>
Ton code
<?php


 // Requete pour afficher uniquement les régions ou des sorties sont proposées
 $count = array();
 $liste = $bdd->query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url`
                   FROM `loisirs`
                   JOIN `regions`
                         ON `regions`.`region_id` = `loisirs`.`id_region`
                   WHERE `date_fin_sortie` > NOW( )  AND `valide` = 1
                   GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
     $count[$row['id_region']] =  $row['nb']; // donc là tu mets en tableau le nombre de sorties associées au régions
     // et pourquoi pas ça :
     echo '<li class="list-unstyled cal_sorties"><a href="toutes-les-sorties-en-region-'.$row['url'].'.html"><span class="badge pull-right">'.$row['nb'].'</span>'.$v.'</a></li>';
 }



?>

Donc en resumé, '.$v.' affiche le nom des regions, ['url'] sert au lien et ['nb'] le nombre de sorties

Re: Lien avec id

Posté : 26 sept. 2014, 07:47
par yoann38
Re, Voici mon actuel celui ci fonctionne mais le seul hic reste le lien qui ne marche pas.....
<?php
 // Requete pour afficher la liste des regions avec le nb de clubs a coté ...
 $count = array();
 $liste = $bdd->query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url`
                   FROM `loisirs`
                   JOIN `regions`
                   ON `regions`.`region_id` = `loisirs`.`id_region`
                   WHERE `date_fin_sortie` > NOW( )  AND `valide` = 1
                   GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
     $count[$row['id_region']] =  $row['nb'];
  }
 
 foreach($aRegion as $k => $v) {
  $nb = array_key_exists($k, $count) ? $count[$k] : 0;
  echo '<li class="list-unstyled cal_sorties"><a href="toutes-les-sorties-en-region-'.$row['url'].'.html"><span class="badge pull-right">'.$nb.'</span>'.$v.'</a></li>';
 }
?>
Pour rapel url = ( exemple : bourgogne ) , $nb contient le nombre et $v contient le nom de la région
Merci encore pour l'aide ;)

Re: Lien avec id

Posté : 26 sept. 2014, 09:48
par sirakawa
Si j'ai bien interprété ton code le lien est par exemple, :
toutes-les-sorties-en-region-NORD.html
c'est à dire un fichier aumême niveau que le fichier appelant.
Au passage pourquoi ne pas stocker les url complètes dans la base de donées, ou avoir une table url : url varchar et id_region int, et dans la table que tu consultes un moyen de retrouver cet id de région?

Re: Lien avec id

Posté : 26 sept. 2014, 10:05
par yoann38
Tu as bien interpreté le code.

J'ai bien une table region en bdd dans la quelle je recupere

.region_id
.nom
.url


Maintenant je cherche juste a faire le lien du coup en fonction de l'id region.
pas de problème pour le count ca marche
J'ai bien le nombre d'événement en fonction de la region..... mais pas les liens ( genre : monsite/toutes-les-sorties-en-region-franche-compte.html )

Mon code actuel:
<?php

// Requete pour calculer le nombre d'annonces en cours de validité
$sql = "SELECT * FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1";
$req = $bdd->query($sql);
$nb = $req->rowCount();
echo 'Actuellement <strong>'.$nb.'</strong> annonces en cours'.'<br><br>';



 // Requete pour afficher uniquement les régions ou des sorties sont proposées
 $count = array();
 $liste = $bdd->query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url`
                   FROM `loisirs`
                   JOIN `regions`
                   ON `regions`.`region_id` = `loisirs`.`id_region`
                   WHERE `date_fin_sortie` > NOW( )  AND `valide` = 1
                   GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
     $count[$row['id_region']] =  $row['nb'];
  }
 
 foreach($aRegion as $k => $v) {
  $nb = array_key_exists($k, $count) ? $count[$k] : 0;
  
     echo '<li class="list-unstyled cal_sorties"><a href="toutes-les-sorties-en-region-'.$row['url'].'.html"><span class="badge pull-right">'.$nb.'</span>'.$v.'</a></li>';
 }
?>

Le code d'arnaud marhe mais du coup les regions ne s'affiches plus mais le liens marche :/
son code:
<?php


 // Requete pour afficher toutes les sorties avec un echo 0 si pas de sortie
 $count = array();
 $liste = $bdd->query ("SELECT COUNT( * ) AS `nb` , `id_region`,`url`
                   FROM `loisirs`
                   JOIN `regions`
                         ON `regions`.`region_id` = `loisirs`.`id_region`
                   WHERE `date_fin_sortie` > NOW( )  AND `valide` = 1
                   GROUP BY `id_region`");
 while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
     $count[$row['id_region']] =  $row['nb']; // donc là tu mets en tableau le nombre de sorties associées au régions
     // et pourquoi pas ça :
     echo '<li class="list-unstyled cal_sorties"><a href="toutes-les-clubs-en-region-'.$row['url'].'.html"><span class="badge pull-right">'.$row['nb'].'</span>'.$v.'</a></li>';
 }



?>