> Tous les forumsForum des Webmasters

 Eclater une valeur d'une bdd
Statut du sujet : NON RESOLU Imprimer
 sotomayor01
  Posté le 25/07/2005 @ 20:17  
 Petit astucien

468 Messages
Bonjour à toutes et à tous, J'ai un champs dans ma bdd qui contients des valeurs du type 356, que je voudrais afficher comme tel : 3 m 56. Ce qui reviens à inserer la lettre m après le premier chiffre... Merci de votre future aide
 Afficher le profil de sotomayor01 Envoyer un message privé à sotomayor01
 
 
Publicité
 koala01  Posté le 26/07/2005 à 00:58  
Astucien

4715 Messages
Salut, D'abord, il faut savoir que, idéalement, les seuls champs qui devraient avoir un type numérique (en ce, y compris les champs date/heure), ce sont des champs sur lesquels on prévoit de faire un calcul (la somme, la moyenne, la recherche du min et du max etc)... Pour tous les autres, il est sans doute préférable de choisir un champs alphanumérique (par exemple, le code postal...on ne le multipliera jamais par deux[clindoeil]) La première question que j'aurais envie de te poser est donc: "faudra-t-il que tu effectues des calculs (de moyenne, de multiplications etc) sur ces valeur [question]". Si tu réponds non à cette question, j'aurais tendance à te dire que la solution la plus facilement réalisable est encore tout simplement de changer le type du champs pour du texte, en y prévoyant suffisemment d'espace pour pouvoir mettre les différentes unités. Si, par contre, tu me réponds oui, je commencerai par te mettre en garde sur le fait que l'unité qui sera utilisée doit absolument rester toujours la même. Il serait en effet impossible de gérer le fait que 360 représente une fois 360mm, mais 3,60 m la fois d'après et 36,0m la fois d'encore après. Au passage, à part pour le temps, la monnaie et les mesures anglo-saxonnes, l'unité se trouve apres les derniers chiffres: on écrit 3,6m, 4,8ko 7,9kg mais ¤ 2,50 , 3h25'36"44 et 3'6" (trois pieds six pouces)... Je ne peux évidemment pas t'obliger à respecter ce que j'écris, mais saches, au moins, que ce n'est pas francais[clindoeil] Une fois que tu es sur que toutes les valeurs utilisent les memes unités, tu pourras utiliser une concaténation simple, assortie à substr et strlen pour obtenir le résultat que tu souhaites. Cela donnerait un code du genre
<?$finale=substr($variable_obtenue,1,strlen($variable_obtenue)."m".substr($variable_obtenue,-2);?>
Ici, j'ai décidé de récupérer le résultat dans une variable, mais tu aurais très bien pu le faire écrire directement si tu le voulais...ca aurait alors donné
<? echo substr($variable_obtenue,1,strlen($variable_obtenue)."m".substr($variable_obtenue,-2);?>
Tu trouveras toutes les informations concernant la fonction substr [url="http://www.php.net/manual/fr/function.substr.php"]=>en suivant ce lien[/url] et celle concernant strlen [url="http://www.php.net/manual/fr/function.strlen.php"]=>en suivant celui-ci<=[/url]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 sotomayor01  Posté le 26/07/2005 à 10:22  
Petit astucien

468 Messages
Bon alors, je vais répondre dans l'ordre : Les chiffres sont stockés dans un champ CHAR limité à trois caractères. Donc les enregistrement se retrouvent sous la forme 123, sachant que ce nombre est en fait un nombre de centimètre. Je souhaite donc eclater l'enregistrement pour que la valeur soit affiché en mètre : 1 m23. Mais ca ne s'arrete pas là : je souhaiterais aussi convertir cette valeur en unité metrique anglo-saxone (pieds/pouces) pour les visiteurs étrangers... D'apèrs les lies que tu me donne, je peux inserer la lettre m comme ca : <?php echo substr('abcdef', 1); echo m; echo substr('abcdef', 2, 3); non ? Pour ce qui est de la conversion, je rame pas mal, n'ayant pas trouvé deux fois la meme valeur pour passer de mètre à pieds/pouces [boom][boom] Merci de ta réponse Koala01, c'est toujours le meme plaisir de te lire !!!
Afficher le profil de sotomayor01 Voir la configuration de sotomayor01Envoyer un message privé à sotomayor01
 Revenir en haut de la page
 NoNoZeBeSt  Posté le 26/07/2005 à 11:01  
Petit astucien

167 Messages
Salut, Pour le PHP je ne crois pas pouvoir apporter d'autres informations mais pour les conversions : 1 mètre = 3.2808399 pieds 1 mètre = 39.3700787 pouces 1 pied = 30.48 cm 1 pouce = 2.54 cm résultat obtenus sur [url="http://www.immofrance.com/convert_unit.htm"]http://www.immofrance.com/convert_unit.htm[/url] @+
Afficher le profil de NoNoZeBeSt Voir la configuration de NoNoZeBeStEnvoyer un message privé à NoNoZeBeSt
   Revenir en haut de la page
 koala01  Posté le 26/07/2005 à 11:16  
Astucien

4715 Messages
Dans quelle mesure, alors, ne serait-il pas intéressant de passer en char 4, de manière à pouvoir écrire systématiquement le m (modifier les valeur existantes) et à rajouter un champs "anglo-saxon", de type char 6, dans lequel tu mettrait la taille en pied et pouce Le pied vaut 30,48 cm (30,479 et les chiffres suivants variant selon le pied anglais ou américain..on peut donc valablement l'arrondire à 30,48) Comme il y a 12" dans 1', selon que l'on aille jusqu'au millieme de milimetre (le micron) avec 30,479 ou jusqu'au centieme de milimetre avec 30,48, on obtien une valeur pour le pouce comprise entre 2,539cm et 2,54cm La formule pour arriver à des valeurs correctes est donc: T'=Tcm/30.48 ou T'=Tcm/30.479 (selon la précision voulue) T"=décimale de T'*12 Ceci dit, si tu souhaites que ce soit le système qui effectue ces calcul, il est peut etre alors préférable de modifier le type de ton champs pour un entier (exprimé en cm)... Une troisième solution pourrait très bien consister en la création de deux champs numériques: Le premier champs ne prendrait que les metres complets alors que le deuxieme prendrait les centimetres restants... cela donnerait, pour 3,60m 3 dans le premier champs et 60 dans le deuxieme... Pour l'affichage du concatenerais simplement les différentes valeurs à ton gré, et pour la conversion en valeur anglosaxone, tu multiplierait la valeur metre par 100, et tu y additionnerait la valeur centimetre, pour finir par l'application de la formule... J'ai franchement l'impression qu'il te serait plus facile d'utiliser la méthode des deux champs de type char...
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 koala01  Posté le 26/07/2005 à 11:24  
Astucien

4715 Messages
NoNoZeBeSt a écrit :
Salut, Pour le PHP je ne crois pas pouvoir apporter d'autres informations mais pour les conversions : 1 mètre = 3.2808399 pieds 1 mètre = 39.3700787 pouces 1 pied = 30.48 cm 1 pouce = 2.54 cm résultat obtenus sur [url]http://www.immofrance.com/convert_unit.htm[/url] @+
Héhé comme je l'expliquais, la valeur 30.48cm pour le pied est un arrondit correct (je n'avais pas pris connaissance de ton post avant de finir le mien...) En effet, si tu fais 1(m)/30.2808399*100, tu obtiens une valeur de 30.479 999 95 et quelques... Selon mes sources, la taille d'un pied anglais était historiquement en fait de 30.479 947 2cm, un peu plus court que le pied américain... un peu plus proche de l'estimation fournie par la taille d'un metre en pied Toujours selon mes sources [url]http://fr.wikipedia.org/wiki/Pied_(unit%C3%A9)[/url], un pied fait exactement 1200/3937 m ... ce qui correspond à 30.480 06 cm... Bref, au vu de la complexité, il semble juste d'effectuer la conversion sur base de 1'=30.48cm...

Modifié par koala01 le 26/07/2005 11:54
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 NoNoZeBeSt  Posté le 26/07/2005 à 11:39  
Petit astucien

167 Messages
Salut koala01
je n'avais pas pris connaissance de ton post avant de finir le mien...
Ce n'est pas un probleme, surtout que le tien à l'air mieux détaillé Cela prouve aussi ce que disait sotomayor01:
Pour ce qui est de la conversion, je rame pas mal, n'ayant pas trouvé deux fois la meme valeur pour passer de mètre à pieds/pouces
Afficher le profil de NoNoZeBeSt Voir la configuration de NoNoZeBeStEnvoyer un message privé à NoNoZeBeSt
   Revenir en haut de la page
 NoNoZeBeSt  Posté le 26/07/2005 à 12:21  
Petit astucien

167 Messages
Re, si c'est une valeur numérique pourquoi ne pas faire ceci :
$var=356;//on prend une valeur $meter=$var/100; //on divise par 100 $fini=str_replace(".","m",$meter); //on remplace le point par m echo $fini;//on affiche le résultat : 3m56
Afficher le profil de NoNoZeBeSt Voir la configuration de NoNoZeBeStEnvoyer un message privé à NoNoZeBeSt
   Revenir en haut de la page
 sotomayor01  Posté le 24/08/2005 à 15:26  
Petit astucien

468 Messages
Bon ben après quelques modifs sur mn site, je reviens à mon problème de convertion, voilà ce que j'ai commencé à ecrire : [code]$pied = ($m*100 + $cm)/30.479 $pouce =[/code] (avec $m le nombre de metrtre (entier), et $cm le nombre de centimètres restants, vous l'aurez compris [clindoeil] Ensuite, je bloque pour récuperer la partie décimale de la décimale de $pied*12 pour obtenir $pouce, ainsi que récupere la partie entière de $pied... Merci d'avance pour votre future aide
Afficher le profil de sotomayor01 Voir la configuration de sotomayor01Envoyer un message privé à sotomayor01
 Revenir en haut de la page
 NoNoZeBeSt  Posté le 24/08/2005 à 15:33  
Petit astucien

167 Messages
Salut sotomayor, Pour recuperer la partie entiere tu peux utiliser intval() pour la partie decimale tu utilise intval() puis tu soustrais le resultat a la valeur de depart en pratique
$partie_entiere= intval($pied); $partie_decimale= $pied*12-intval($pied*12);
@+
Afficher le profil de NoNoZeBeSt Voir la configuration de NoNoZeBeStEnvoyer un message privé à NoNoZeBeSt
   Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Les sujets pertinents liés
bouton radio et enregistrement BdD
Importer valeurs excel dans BDD
récup d'1 valeur d'1 table pour une autre table
Tri d'un tableau resultant d'une requête Mysql
PHP -- extraire caractères d'une chaine Urg-SVP
Réparer index Table SQL.
Précharger une valeur sur un champ texte de formul
php et javascript: passation de variable: comment?
Qu'est-ce qu'une bonne page Web ?
Problème d'affichage d'une liste de membres
objet liste... selectionné en php
retour de formulaire
Upper tables d'une bdd sur serveur ????
PHP/MySQL: count () plusieurs champs
Calcul sur valeur d'un champ ds bdd
exporter une partie d'une BDD
[PHP] Ajouter la valeur 1
 
Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !



 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page
Comme PC Astuces, mettez-vous au vert avec Ikoula !
Faites le choix d'un hébergeur acteur de l'environnement !