begin process at 2012 05 31 10:38:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

un tit casse tête de pondération ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

un tit casse tête de pondération ...

lundi 19 mars 2007 à 21:09:37 | un tit casse tête de pondération ...

caviar

    Salut ... alors voila je planche sur un truc en ce moment et j'ai un e problématique peu courante ...
dans une BDD j'ai deux champs
coord_x et coord_y ...ce sont des coordonnées de points
bon ... je récupère ces deux valeurs dans un tableau via php
j'aimerai arriver à pondérer le tableau en fonction du nombre de fois qu'apparait une paire de coordonnées et sortir un tableau avec toutes les coordonnées plus une colone qui servirait à savoir le nombre de fois qu'une paire apparait ...

exemple (ça sera plus compréhensible)

j'ai donc récup les valeurs de ma bdd

j'ai un tableau style

coord[1]['x'] = 10 ;
coord[1]['y'] = 10 ;

coord[2]['x'] = 10 ;
coord[2]['y'] = 10 ;

coord[3]['x'] = 10 ;
coord[3]['y'] = 15 ;

coord[4]['x'] = 30 ;
coord[4]['y'] = 40 ;

ici j'ai deux fois le couple x, y -> 10, 10
j'aimerai sortir un tableau

coord[1]['x'] = 10 ;
coord[1]['y'] = 10 ;
coord[1]['poids'] = 2;

coord[2]['x'] = 10 ;
coord[2]['y'] = 15 ;
coord[2]['poids'] = 1;

coord[3]['x'] = 30 ;
coord[3]['y'] = 40 ;
coord[3]['poids'] = 1;

vala ...
mais bon figurez vous que j'y arrive pas ...lol et j'ai l'impréssion que c'est pas si simple ...
alors si un génie du php peut me donner ne serai-ce qu'une piste :) ça serait cool !!
mercii !
@+
lundi 19 mars 2007 à 21:29:52 | Re : un tit casse tête de pondération ...

caviar

    euh ..encore mieux si c'est possible en mysql direct ... ça peut le faire :)
m'enfin je crois pas :'(
lundi 19 mars 2007 à 22:24:01 | Re : un tit casse tête de pondération ...

audayls

Réponse acceptée !
Salut,
Je suis loin d'être un génie en PHP, et je pense que mon code peut être amplement amélioré mais pour le moment il fait son boulot ^^ :
<?php
function caviar($array) {
    $temp = array();
    $i = 0;
    while (isset($array[++$i])) {
        if (!is_null($array[$i]['x'])) {
            $j = $i;
            $k = 1;
            while (isset($array[++$j])) {
                if (!is_null($array[$j]['x']) AND $array[$j]['x'] === $array[$i]['x'] AND $array[$j]['y'] === $array[$i]['y']) {
                    $array[$j] = array('x' => NULL, 'y' => NULL);
                    $k++;
                }
            }
            $temp[] = array('x' => $array[$i]['x'], 'y' => $array[$i]['y'], 'poids' => $k);
        }
    }
    return $temp;
}

$coord = array();
$coord[1]['x'] = 10 ;
$coord[1]['y'] = 10 ;
$coord[2]['x'] = 10 ;
$coord[2]['y'] = 10 ;
$coord[3]['x'] = 10 ;
$coord[3]['y'] = 15 ;
$coord[4]['x'] = 30 ;
$coord[4]['y'] = 40 ;


print_r(caviar($coord));
?>


For every choice, a consequence (Fable)
mardi 20 mars 2007 à 09:41:58 | Re : un tit casse tête de pondération ...

caviar

    YEah ! ça marche ...
bon maintenant faut que je comprenne ton algo ;)
merci
@++
mardi 20 mars 2007 à 12:32:34 | Re : un tit casse tête de pondération ...

morpheus57

Il y a une autre solution (et beaucoup plus simple) :
Tu fais une requete du style :
SELECT
FROM
GROUP BY
mardi 20 mars 2007 à 18:28:04 | Re : un tit casse tête de pondération ...

audayls

C'est vrai que si tu peux utiliser "GROUP BY" le code serait beaucoup plus leger.

For every choice, a consequence (Fable)
mardi 20 mars 2007 à 22:09:48 | Re : un tit casse tête de pondération ...

garfield90

function ponderationCoord($array){
    $nbCoord   = count($array);
    $pondCoord = array();

    if ( is_array($array) ){
        for( $i=1 ; $i<=$nbCoord ; $i++ ){
            if ( isset($array[$i]['x']) && isset($array[$i]['y']) ){
                if (isset($pondCoord[$array[$i]['x'].'_'.$array[$i]['y']]) ){
                    $pondCoord[$array[$i]['x'].'_'.$array[$i]['y']] += 1 ;
                }else{
                    $pondCoord[$array[$i]['x'].'_'.$array[$i]['y']] = 1;
                }
            }
        }
       
        $i = 1 ;
        $coord = array();
        foreach( $pondCoord as $key=>$value){
            list($x, $y) = explode('_', $key);
            $coord[$i]['x'] = $x ;
            $coord[$i]['y'] = $y ;
            $coord[$i]['poids'] = $value ;
            $i++;
        }
        return $coord ;
    }
    return false;
}

Je pense que ma version PHP est plus rapide car elle a une complexite n+m, m < n alors que la proposition ci-dessus a une compléxite n², mais je me trompe peut etre.

Voila, my 2 cents


"They are 10 sorts of persons whose understand binary and whose not"
mercredi 21 mars 2007 à 09:44:45 | Re : un tit casse tête de pondération ...

morpheus57

Au contraire, il vaut mieux faire le traitement par la base de données.

Si tu as des traitements complexes, tu peux utiliser des stored procedure.
mercredi 21 mars 2007 à 10:37:46 | Re : un tit casse tête de pondération ...

garfield90

Comparons ce qui est comparable, je parlais des 2 facons PHP.
Pour la gestion BDD, ca depend de trop de parametre que l'on a pas.
- type et version de la BDD en autre

"They are 10 sorts of persons whose understand binary and whose not"
mercredi 21 mars 2007 à 14:20:35 | Re : un tit casse tête de pondération ...

caviar

    Salut, et merci pour vos réponses.
La bdd est en mysql ... sous la forme
CREATE TABLE `coord` (
  `id_coord` int(11) NOT NULL auto_increment,
  `x_coord` int(11) NOT NULL default '0',
  `y_coord` int(11) NOT NULL default '0',
  `poids_coord` int(11) NOT NULL default '1',
  `reso_x` int(11) default NULL,
  `reso_y` int(11) default NULL,
  `page` varchar(255) default NULL,
  `click_coord` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id_coord`)
)

c'est possible avec une requette de savoir le nombre de fois qu'apparait le couple x_coord, y_coord et de rajouter un e colonne virtuelle avec cette valeur là ?

1 2

Cette discussion est classée dans : tableau, coordonnées, tit, poids, coord


Répondre à ce message

Sujets en rapport avec ce message

Un p'tit code simple mais je sais pas comment le faire ! [ par N e x u m ] Salut,je voudrais avoir un simple code SANS MYSQL (Si possible) Qui garde le même design dans chaque pageAdmettons on a un design (Un look, un interfa Récupérer le résultat d'une requète pour l'afficher dans un tableau??? [ par DJ'Ska & Dreams... ] Mon problème est le suivant: j'arrive à me connecter à ma base mySQL, lorsque j'execute une requète et que je souhaite afficher mes résultats, mes rés Afficher les données dans un tableau ? [ par inceV ] Contenant 2 lignes et 1 seule cellule :c'est à dire :- 1ère ligne où je veux afficher le titre de l'article par exemple,-2ème ligne où je veux affiche Tableau......Help [ par benett ] Bonjour à tous,comment peut-on cacher une cellule dans un tableau en cliquant sur un lien, et comment faire l'inverse également toujours via le même p filtrer un tableau URGENT [ par flyersy ] je récupère un résultat MySQL dans un tableau1 dont une des colonne contient un identifiant et une autre une chaîne "chem" de type 1,52,4,8. Je concat comment afficher sous forme de tableau [ par Xime ] bonjourvoila j'aimerais savoir comment afficher mes données que je recupere de ma base de données sous forme de tableau (la taille sera en fonction du tri tableau 2 dimensions [ par lebobby ] Bonjour je voudrais savoir comment je pourrais faire pour trier ce tableau :$tab[0]=array("i"=>"23", "c" => "rge", "date" =>'2002-08-03 12:00:00');$ta tableau genere automatiquement avec mysql [ par maivg ] bonjoursvoila je cherche un script pour genere un tableau de 4 sur 5 avec ma base de donne qui ne contient qu'un seul champs.help helpmerci et A+ alimenter un tableau avec des variables de session [ par pichoro ] bonjour,voila mon probleme, je voudrais recuperer des variables et les stocker en tant que variables de session dans un tableau array();.j'ai donc un Taille max d'un tableau [ par ceeno ] Voila je cherche a definir la largeur max d'un tableau parceke lorske l'on fait comme cecica n'indike ke la taille min et si le tableau contient une l


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 10,436 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales