Mysql : problème de creation d'un polygone lors d'une requèt

Eléphanteau du PHP | 37 Messages

07 mars 2012, 21:15

Bonjour voila mon problème.
Je souhaite faire un polygone dynamiquement.

Pas de problème, suffit que je fasse la fonction :

Code : Tout sélectionner

<? ImagePolygon ($im, $points, $num_points, $col);?>
Le problème est que mes variables $points sont appelés à l'aide d'une requête. (de type SELECT),
les points sont une liste de champs, que je souhaite assembler pour faire un polygone.
(mes points sont sur ma base de donné)

Voila je ne comprend pas comment récuperer plusieurs variables dans un select.

Lorsque je veux faire un cercle dynamique, aucun soucis car il utilise une variable par fonction, avec une requete je peux donc tracer les cercles pour chaques champs que me liste la requete

MAIS la fonction polygone utilise plusieurs variables, donc je ne sais pas du tout comment faire. Il me semble qu'il fait faire une requete dans un tableau mais je ne suis pas sûr, merci pour votre aide

Eléphanteau du PHP | 37 Messages

07 mars 2012, 22:46

par exemple
$sql = "
SELECT  `polygone1`
FROM  `FORMES`
";
$result = mysql_query($sql) or die ("probleme de generation"); 
while ($donnee = mysql_fetch_array($result))
{

$p1 = $donnee["polygone1"];



ImagePolygon ($im, $p1, 4_points, $col);
}




Pour chaque enregistrements de mon champs je ne peux insérer qu'une variable,

comment faire pour recuper mes 4 valeurs d'enregistrement dans une meme boucle ?


j'espere que je suis plus claire ? merci

Mammouth du PHP | 2278 Messages

08 mars 2012, 10:51

<? ImagePolygon ($im, $points, $num_points, $col);?>
$im : quelles valeurs possibles?
$points : un entier?, un réel, une paire d'entiers ou de réels (style coordonnées du/des points? Un caractère (Le nom du point)?
$num_points : ???
$col : ???
A priori, j'aurais stocké en BDD:
nom_de_fig : text (carre_1, cercle_392...)
type de figure (polygone, ovale (comprenant le cercle puisque le cercle est une ovale dont les deux foyers sont confondus)
et on voit à l'évidence que les informations à stocker sont différentes suivant le type de figure:
segment de droite : coordonnées des deux extrémités....
triangles :
quadrilatères : coordonnées des quatre sommets
cercles et ovales : coordonnées des deux foyers, et longueur du rayon
polygones réguliers( non croisés) : je crois qu'il suffit des coordonnées du centre, du rayon, et du nombre de sommets,
chaque coordonnée comportant deux valeurs exemple
x=12,35 y =131,9 on peut les loger dans un tableau PHP:
t[0]['x'] = 12,35; // coordonnées du foyer 1, si ovale. du centre si cercle. du premier sommet si quadrilatère
t[0]['y'] = 131.9;
t[1]['x'] // coordonnées du foyer 2, si ovale. du centre si cercle. du deuxième sommet si quadrilatère
t[1]['y']
t[2]['x'] // dès lors ce sont les coordonnées des sommets successifs mises à 0 si inutiles

Ce tableau, pour le stocker en BDD, on va lui appliquer deux fois la fonction implode, une fois sur chaque ligne, donnant un tableau de paires, une fois sur ce deuxième tableau
<?PHP
$t = array(); // le tableau initial de points
for ($i=0; $i<6; $i++)
{
	$t[$i]['x'] = "X".$i;
	$t[$i]['y'] = "Y".$i;
}
print_r($t);
$t_champ = array(); // le tableau intermédiaire
foreach($t as $t_ligne)
{
	/*implosion avec un séparateur multiple parce que, partant d'un tableau à 2
	dimensions, on a besoin de deux séparateurs distincts et que je trouve commode 
	de les hiérarchiser par le nombre de points /::/ à esploser en second*/	
	$ligne = implode("/::/", $t_ligne);
	$t_champ[]= $ligne;
}
$champ = implode ("/:/", $t_champ); // la chaine à stocker en BDD
print"<br>$champ";
?>
A l'utilisation, on explode ("/:/"..) d'abord, avant de s'en servir, puis chaque ligne du tableau résultat par explode("/::/..) au moment de s('en servir
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 37 Messages

08 mars 2012, 16:04

A oui rassembler tous les points dans une seule variable, je n'y avait pas penser.

Je vais étudier tes fonctions, merci