Recherche moyenne

Fermé
Mystic1812 Messages postés 10 Date d'inscription mardi 21 août 2012 Statut Membre Dernière intervention 30 juillet 2013 - 18 juil. 2013 à 10:55
 Utilisateur anonyme - 18 juil. 2013 à 13:31
Bonjour,

Les requetes SQL dans mon script sont justes mais ca ne m'affiche rien comme résultat meme pas ou se situe le probleme. :(

<?
$host = 'localhost';
$user = 'root';
$bdd = 'stage';
$passwd = '';
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");



$req1="SELECT max(weborange) ,max (iphone), max(keypro) , max(keygp) , max(flyboxgp) ,
max(mms), max (blackberry) FROM kpi_ggsn";
$res1 = mysql_query($req1);

while($row = mysql_fetch_row($res1)){
$Weborange = $row[0];
$Iphone= $raw[1];
$Keypro = $row[2];
$Keygp= $row [3]
$Flybox=$row [4];
$MMS= $row [5];
$Blackberry = $row [6];
}

$req2="SELECT weborange ,iphone, keypro, keygp, flyboxgp ,mms, blackberry FROM kpi_max" ;
$res2 = mysql_query($req2);

while($row1 = mysql_fetch_row($res1)){
$MaxWeborange = $row1[0];
$MaxIphone= $raw1[1];
$MaxKeypro = $row2[2];
$MaxKeygp= $row3 [3]
$MaxFlybox=$row4 [4];
$MaxMMS= $row5 [5];
$MaxBlackberry = $row6 [6];
}


$resultat1=$Weborange/$MaxWeborange;
$resultat2=$Iphone/$MaxIphone;
$resultat3=$Keypro/$MaxKeypro;
$resultat4=$Keygp/$MaxKeygp;
$resultat5=$Flybox/$MaxFlybox;
$resultat6=$MMS/$MaxMMS;
$resultat7=$Blackberry/$MaxBlackberry;

echo $resultat1;
echo $resultat2;
echo $resultat3;
echo $resultat4;
echo $resultat5;
echo $resultat6;
echo $resultat7;

mysql_close();

?>

3 réponses

Utilisateur anonyme
18 juil. 2013 à 11:02
salut,
ici : https://www.php.net/manual/fr/function.doubleval.php

tu verra :

<?php
 $mynumstr = "100,000,000.75";
 $mynum = doubleval(str_replace(",","",$mynumstr));
 echo "Normal Value:".number_format($mynumstr);
?>
 


faire des opération mathématiques sur des chaines de caractère est à éviter, autant travailler avec des doubles (vu que tu fais des divisions ... )

(avec du int tu aura des arrondis)

naga
0
Mystic1812 Messages postés 10 Date d'inscription mardi 21 août 2012 Statut Membre Dernière intervention 30 juillet 2013
18 juil. 2013 à 11:15
BOnjouuur,

Merci mais j'ai pas bien saisi ce que je dois faire :D
0
Utilisateur anonyme
18 juil. 2013 à 11:42
bah en gros :
 
$a = "100";
$b = "10";
echo $a / $b;

ne devrait rien donner
mais :
 
$a = 100;
$b = 10;
echo $a / $b;

devrait afficher 1
et si tu fais :
 
$a = "100";
$b = "10";
echo intval($a) / intval($b);

tu auras ici 1 aussi

dans ton cas tu récupère des valeurs de requetes, soit des chaines de caractères. Il faut les convertir en entier pour faire des calculs. De plus tu risque fortement de te retrouver avec des valeurs à virgules vu que tu effectue des divisions (dans mon cas j'ai fais exprès d'utiliser le fonction pour convertir en entier, je vais pas tout mâcher ^^).

DONC : convertir tes varibles de types chaines (récupérées grâce à ta requête) vers un type entier ou double (double sera mieux je pense), et afficher le résultat de la division.

Note : effectuer une opération sur des entiers génèrera un résultat entier (sauf si tu cast comme il faut) ensuite, le père à fait de bonnes remarques, surtout la 3&4 qui pose de gros problème (concrètement faire un while sur un résultat unique fonctionnera mais c'est inutile)
0
Utilisateur anonyme
18 juil. 2013 à 11:47
$a = "100";
$b = "10";
echo $a / $b;
ne devrait rien donner

Bien sûr que si ça marche. Ça donne bien 10

$a = 100;
$b = 10;
echo $a / $b;

devrait afficher 1
et si tu fais :

$a = "100";
$b = "10";
echo intval($a) / intval($b);

tu auras ici 1 aussi

Non, ça affiche 10 et non pas 1.

Il est parfaitement inutile de convertir les chaînes en nombres pour effectuer des calculs, php s'en charge tout seul
0
Utilisateur anonyme
18 juil. 2013 à 11:51
ah oui ca fait 10 xD
mais la conversion peu être utile car si le cast automatique récupère la valeur du caractère les résultats risquent d'être sympas ... (il y a des languages d'assistés, comme windev, qui le font pas trop mal, mais même là on a parfois des surprises).

si les données sont bien typées dans sa base, il peu aussi faire une seule requête qui effectuera les calcul
0
Utilisateur anonyme
18 juil. 2013 à 11:30
Bonjour

1 - <?
Ça commence mal. Normalement c'est <?php, sauf si tu as configuré ton php pour accepter les balises courtes.

2 - while($row...
Pourquoi faire une boucle alors que cette requête ne rend qu'une seule ligne ???

3 - while($row1 = mysql_fetch_row($res1)
Tu viens de faire une requête dont le résulta est dans $res2, pourquoi faire un mysql_fetch_row sur $row1 ?

4 - Pourquoi ta variable $row s'appelle-t-elle subitement $raw[1] ? Et pourquoi ta variable $row1 donne-t-elle aussi $raw1[1] mais de plus $row2[2], $row3[3]...

5 - Es-tu conscient avec ta deuxième requête que quand tu fais tes calculs, tu es sorti de la boucle et donc, tu ne travailles que sur la dernière ligne de résultats

Voilà pour la première lecture. Bon courage !
0
Utilisateur anonyme
18 juil. 2013 à 13:31
[edit]
au 3, il faut lire "pourquoi faire un mysql_fetch_row sur $res1" et non pas "pourquoi faire un mysql_fetch_row sur $row1"
0