[RESOLU] Lien avec id

Mammouth du PHP | 643 Messages

24 sept. 2014, 21:28

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

Eléphant du PHP | 151 Messages

24 sept. 2014, 21:44

il sort d'où ce $aRegion ??

Pourquoi tu boucles pas avec ton fetch ?? #-o #-o
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Mammouth du PHP | 643 Messages

24 sept. 2014, 21:57

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');
	

Mammouth du PHP | 2278 Messages

25 sept. 2014, 09:15

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 "
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 151 Messages

25 sept. 2014, 10:39

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
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Mammouth du PHP | 2278 Messages

25 sept. 2014, 10:58

@ 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?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 151 Messages

25 sept. 2014, 11:12

@ 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.
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Mammouth du PHP | 643 Messages

25 sept. 2014, 12:18

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>'
  
  ;
 }
?>

Eléphant du PHP | 151 Messages

25 sept. 2014, 14:45


<?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 ?
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Mammouth du PHP | 643 Messages

25 sept. 2014, 15:23

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>';
 }



?>
Modifié en dernier par yoann38 le 25 sept. 2014, 15:29, modifié 1 fois.

Eléphant du PHP | 151 Messages

25 sept. 2014, 15:28

Tu peux mettre le résultat de la sortie générée stp
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Mammouth du PHP | 643 Messages

25 sept. 2014, 15:31

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

Mammouth du PHP | 643 Messages

26 sept. 2014, 07:47

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 ;)

Mammouth du PHP | 2278 Messages

26 sept. 2014, 09:48

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?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 643 Messages

26 sept. 2014, 10:05

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>';
 }



?>