Boucle

Jerz
Invité n'ayant pas de compte PHPfrance

03 déc. 2011, 16:06

Bonjour à tous et à merci d'avance à tous ceux qui liront ce post.

Voila mon problème.
Suite à une requête j'obtiens le tableau suivant :
id_adresse	                               nom	                         id_categorie	
1	                                       Hôpital Laval	                   2	                
2	                                       Marie de Tours                     6	                
3	                                       Mairie de Marseille	          6	
4	                                       Mairie Angers	                  6	
5	                                       Hôpital de Bordeaux                2	
Donc juste là, tout va bien, ..., mais là ou cela se complique un peu c'est je voudrais définir une nouvelle variable (n'appartenant pas à ma table), pour obtenir ceci :
id_adresse	                               nom	                         id_categorie	type
1	                                       Hôpital Laval	                     2	          1
2	                                       Marie de Tours                       6	         2
3	                                       Mairie de Marseille	            6	         3
4	                                       Mairie Angers	                    6	         4
5	                                       Hôpital de Bordeaux                  2            2
6	                                       Préfecture Niort                     7            1
7	                                       Hôpital de Caen                      2            3
8	                                       Préfecture Toulouse                  7            2
...
Je voudrais donc qu'a changement de id_categorie, on incrémente de 1 chaque enregistrement de cet id_categorie.
Tout ceci, afin de pouvoir active ou non des marqueur d'une google maps via des cases à cocher.

D'avance merci beaucoup pour vos réponses et/ou vos encouragements.

Jérôme

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 déc. 2011, 16:14

salut,


c'est vraiment pas clair ton histoire la ;)

est ce que tu peux être plus clair ?

tu veux compter le nombre d’élément par catégorie ? si oui select count(*) from table group by idcategorie;
tu aura un ligne par catégorie avec le nb d’élément par catégorie !


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

03 déc. 2011, 16:19

Si tu donnais un exemple du résultat attendu, ce serait plus simple
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Jerz
Invité n'ayant pas de compte PHPfrance

03 déc. 2011, 16:24

Merci de ta réponse, et désolé pour le manque de clarté

En faîte, je ne veux pas compter le nombre d’éléments par catégorie (ca je sais faire), je voudrais qu'à chaque changement d'id_categorie, qu'une variable i s'incrémente de 1 à chaque fois
exemple :
pour le 1er id_categorie = 2 , i =1
pour le 2nd id_categorie = 1, i=2
pour le 1er id_categorie = 6, i=1
pour le 2nd id_categorie = 6, i=2
pour le 3eme id_categorie = 6, i=3
...
En espérant avoir été pluc clair.

Le but de tout cela, est de permette d'afficher ou non ces marqueurs sur une google map, via des checkboxs.
Le javascript que j'ai récupéré ne fonctionne qu'à cette condition et n'étant pas expert dans ce langage, j'essaie de trouver une alternative en PHP.

Eléphant du PHP | 267 Messages

03 déc. 2011, 16:29

salut,

ce serait pas plutôt ça :
id_adresse                                     nom                               id_categorie   type
1                                              Hôpital Laval                        2            1
2                                              Marie de Tours                       6            1
3                                              Mairie de Marseille                  6            2
4                                              Mairie Angers                        6            3
5                                              Hôpital de Bordeaux                  2            2
6                                              Préfecture Niort                     7            1
7                                              Hôpital de Caen                      2            3
8                                              Préfecture Toulouse                  7            2
...
dix2

Jezr
Invité n'ayant pas de compte PHPfrance

03 déc. 2011, 16:38

En effet.
Dsl pour cette erreur.

Eléphant du PHP | 267 Messages

03 déc. 2011, 17:26

le script devrait ressembler à ça :
$data = array(
  array(
    'id_adresse' => 1,
    'nom' => 'Hôpital Laval',
    'id_categorie' => 2
  ),
  array(
    'id_adresse' => 2,
    'nom' => 'Marie de Tours',
    'id_categorie' => 6
  ),
  array(
    'id_adresse' => 3,
    'nom' => 'Mairie de Marseille',
    'id_categorie' => 6
  ),
  array(
    'id_adresse' => 4,
    'nom' => 'Mairie Angers',
    'id_categorie' => 6
  ),
  array(
    'id_adresse' => 5,
    'nom' => 'Hôpital de Bordeaux',
    'id_categorie' => 2
  ),
  array(
    'id_adresse' => 6,
    'nom' => 'Préfecture Niort',
    'id_categorie' => 7
  ),
  array(
    'id_adresse' => 7,
    'nom' => 'Hôpital de Caen',
    'id_categorie' => 2
  ),
  array(
    'id_adresse' => 8,
    'nom' => 'Préfecture Toulouse',
    'id_categorie' => 7
  )
);

foreach($data as $record){
  $id_adresse = $record['id_adresse'];
  $id_categorie = $record['id_categorie'];
  if(isset($tabTemp[$id_categorie])){
    $tabTemp[$id_categorie] = $tabTemp[$id_categorie] + 1;
  }
  else{
    $tabTemp[$id_categorie] = 1;
  }
  $tabRes[] = array($id_adresse, $tabTemp[$id_categorie]);
}

print_r($tabRes);
@+
dix2

pression brerp
Invité n'ayant pas de compte PHPfrance

03 déc. 2011, 18:00

Merci.
Je regarde cela de suite, mais à 1ere vue cela semble correspondre à ce que je recherche.
Je te tiens au courant.

Merci.
Jerome