[RESOLU] Lien avec id

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Lien avec id

Re: Lien avec id

par yoann38 » 02 oct. 2014, 22:43

Merci a Arnaud pour le coup de pouce et bien plus...
Sujet clos.
Merci encore

Re: Lien avec id

par yoann38 » 26 sept. 2014, 12:38

du coup qu'elle est la solution avec le foreach please et mon code actuel merci encore

Re: Lien avec id

par arnaud69 » 26 sept. 2014, 12:15

Je préfère ce style :
$row['url'] = 'NORD';
$nb = 12;
$url= "toutes-les-sorties-en-region-".$row['url'].".html";
print "$url";
echo ("<a href='$url'>$nb</a>");
pas de concaténation dans l'echo, facilité de vérification...
Oui, pour débugger !

Re: Lien avec id

par yoann38 » 26 sept. 2014, 10:56

Je trouve plus visible le code actuel.
Mais il devrait etre possible de pouvoir afficher les $v en laissant le foreach , nan ?

Re: Lien avec id

par sirakawa » 26 sept. 2014, 10:46

Je préfère ce style :
$row['url'] = 'NORD';
$nb = 12;
$url= "toutes-les-sorties-en-region-".$row['url'].".html";
print "$url";
echo ("<a href='$url'>$nb</a>");
pas de concaténation dans l'echo, facilité de vérification...

Re: Lien avec id

par yoann38 » 26 sept. 2014, 10:39

donc comme je diser ton code marche en partie :)
Mais dans le code tu supprime la boucle qui permet de parcourir et afficher les regions, on les affiche grace à $v.
...
// on parcourt le tableau des regions et on calcul le nombre d'événement si rien alors echo 0
foreach($aRegion as $k => $v) {
  $nb = array_key_exists($k, $count) ? $count[$k] : 0;
cette partie de code est égal à l'array suivant:
$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');

Ton code:
<?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'];
  // ne pe pas s'afficher $v car la boucle n'y est plus .....
     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>';
 }
?>

Re: Lien avec id

par arnaud69 » 26 sept. 2014, 10:29

Ah ! appremment il y manque le nom, mais je sais pas où tu veux le mettre !

Tu peux faire ça éventuellement :
<?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">'.stripslashes($row['nom']). '  (' .$row['nb'].')</span>'.$v.'</a></li>';
 }



?>

Re: Lien avec id

par yoann38 » 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>';
 }



?>

Re: Lien avec id

par sirakawa » 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?

Re: Lien avec id

par yoann38 » 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 ;)

Re: Lien avec id

par yoann38 » 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

Re: Lien avec id

par arnaud69 » 25 sept. 2014, 15:28

Tu peux mettre le résultat de la sortie générée stp

Re: Lien avec id

par yoann38 » 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>';
 }



?>

Re: Lien avec id

par arnaud69 » 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 ?

Re: Lien avec id

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