Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/11/2007, à 09:58

abeman

[RESOLU]fonction min en php

Bonjour,
j'ai un petit morceau de scrip qui ne marche pas.

Je veux tester quelle est la valeur la plus petite avec la fonction min()

$maxunitguerrier = min($maxble,$maxor,$maxpierre,$maxbois,$maxfer); 
echo $maxunitguerrier;

LMon problème, c'est que script me renvoie 0 (j'ai bien sur tout déclarer les variable avant, c'est pas le problème...)
En fait, c'est pour lui demander la valeur la plus petite pour savoir combien d'objet je peux faire par example...

Merci

Dernière modification par abeman (Le 29/11/2007, à 10:57)


Un site de vulgarisation scientifique : http://www.etcomment.fr
"Il faut savoir prendre son temps pour aller vite"

Hors ligne

#2 Le 28/11/2007, à 10:57

Martopioche

Re : [RESOLU]fonction min en php

A la lecture de ton post, et selon la doc PHP ( http://fr.php.net/manual/en/function.min.php ), je dirai que les raisons pour lesquelles tu a ce résultat, c'est que soit une de tes variables contient 0, soit qu'il s'agisse d'une valeur non numérique. Tu a testé avec des valeurs contrà´lées ?

Hors ligne

#3 Le 28/11/2007, à 11:34

abeman

Re : [RESOLU]fonction min en php

comment sa des valeur non controlées?
il ne s'agit que de valeurs INT.

blé 2032  	Or 1246  	pierre1347  	pierre 4  	Or 1  	 500
ressource mini : 0

Dernière modification par abeman (Le 28/11/2007, à 11:34)


Un site de vulgarisation scientifique : http://www.etcomment.fr
"Il faut savoir prendre son temps pour aller vite"

Hors ligne

#4 Le 28/11/2007, à 12:38

Martopioche

Re : [RESOLU]fonction min en php

Quand j'ai dit "variables contrà´lées", c'est dans une optique maà®trisée de tests afin de vérifier qu'en fonction de ce qui est envoyé, on obtient ce qu'on attend.

Je suis loin de maà®triser PHP, mais il me semble donc qu'on ne déclare pas le type de variables lors de leur déclaration. Ainsi, rien ne t'empêche de commencer ta partie avec $ble = 100;, d'augmenter ton capital grà¢ce à  ta production et d'avoir $ble = $ble + 10; ( donc $ble = 110) puis de déclarer $ble = "martin";. Forcement, min($ble, 10, 100, 1000) te renvoi (ou plutà´t, d'après la doc, doit te renvoyer) alors 0.

Normalement, toujours en suivant la doc, si tu fait :

$maxble = 10;
$maxor = 100;
$maxpierre = 55;
$maxbois = 69;
$maxfer = 111500;
$maxunitguerrier = min($maxble,$maxor,$maxpierre,$maxbois,$maxfer); 
echo $maxunitguerrier;

tu doit obtenir 10, non ? Si oui, je me pencherait sur la manière de créer tes variables.

Oui, c'est juste des remarques sur les étourderies possibles qui sont 80% des erreurs réalisées en code. Si ça fait avancer kékchose, tant mieux, sinon, moi je peux pas mieux.

Hors ligne

#5 Le 28/11/2007, à 13:10

abeman

Re : [RESOLU]fonction min en php

Le truc, c'est que mes variable $maxquelquechose sont créées a partir de la base de donnée.
Donc il y a pas de soucis.
Sije fais des echo $variable; il m'affiche nikel les valeures pour TOUTE les variable.


Un site de vulgarisation scientifique : http://www.etcomment.fr
"Il faut savoir prendre son temps pour aller vite"

Hors ligne

#6 Le 28/11/2007, à 13:16

abeman

Re : [RESOLU]fonction min en php

ha min, c'est en effet un problème de variable. Elle on beau etre bien déclarées, elle sont mise à  zero pour 2 d'entre elle...
Pourquoi, la est la question.


Un site de vulgarisation scientifique : http://www.etcomment.fr
"Il faut savoir prendre son temps pour aller vite"

Hors ligne

#7 Le 28/11/2007, à 15:16

Martopioche

Re : [RESOLU]fonction min en php

Héhé, voila voila...

Une info que tu n'avait pas donné : l'origine de la valeur de tes variables. Je m'attendais à ce que pour une raison miraculeuse, elles contiennent n'importe quoi. Comme quoi, malgré les certitudes, tu vois ce que j'appelle "maîtriser ses valeurs" wink D'où là, min ok mais accès BD à revoir.

Bon courage.

Hors ligne

#8 Le 29/11/2007, à 10:28

abeman

Re : [RESOLU]fonction min en php

et oui, tu avaisréson.
Dis moi, j'ai un script d'info bulle a inserer dans la page PHP, je n'arriva pas, il ne veux pas marcehr. Tu peux me dire comment faire stp?

<?php  

	if ((!isset($_SESSION['login'])) || (empty($_SESSION['login']))) 

	{ 

		// la variable 'login' de session est non déclaré ou vide 

		echo 'Vous n etes pas connecte'; 

		exit(); 

	}  

	$cestqui = $_SESSION['login']; 

require 'connexion.php';  
?>

<SCRIPT LANGUAGE="javascript" src=\"infobulle.js\"> </SCRIPT>
<?php

$ressources=mysql_query("SELECT * FROM ressources WHERE login='".$cestqui."'") or die(mysql_error()); // requête  

while($row = mysql_fetch_row($ressources)){ 

$or = $row[1];

$pierre = $row[2]; 

$ble = $row[4];  

$habitant = $row[3]; 

$bois = $row[6];   

$fer = $row[7]; 

$temps_ancien = $row[5];

$temps_actuel = time(); 

 

$temps_ecoule = $temps_actuel - $temps_ancien;

}   

?>



<table width="100%" border="0">

  <tr>

    <td onmouseover="montre('Ble');" onmouseout="cache();" width="16%"><img src="images/ble.jpg" alt="bl&eacute;" width="35" height="35" title="ble" /> <?php echo $ble ?> </td>

    <td onmouseover="montre('Or');" onmouseout="cache();" width="16%"><img src="images/PepiteDOr.JPG" alt="Or" width="35" height="35" title="or"/> <?php echo $or ?> </td>

    <td onmouseover="montre('Pierre');" onmouseout="cache();" width="16%"><img src="images/pierre7nd.jpg" alt="pierre" width="35" height="35" title="pierre" /><?php echo $pierre ?></td>

    <td onmouseover="montre('Fer');" onmouseout="cache();" width="16%"><img src="images/fer2.jpg" alt="pierre" width="35" height="35" title="fer"/> <?php echo $fer ?></td>

    <td onmouseover="montre('Bois');" onmouseout="cache();" width="16%"><img src="images/bois_foret.jpg" alt="Or" width="35" height="35" title="bois"/> <?php echo $bois ?></td>

    <td onmouseover="montre('Habitant');" onmouseout="cache();" width="16%"><img src="" alt="" name="habitant" width="35" height="35" id="habitant" title="habitant"/> <?php echo $habitant ?></td>

  </tr>

</table> 



<?php







//on defini notre nombre de mines 

//or

$resultmineor =mysql_query("SELECT * FROM mineor WHERE login='".$cestqui."'") or die(mysql_error()); // requête  

while($row = mysql_fetch_row($resultmineor)){ 

$or = $row[2];

$pierre = $row[3]; 

$ble = $row[4];  

$habitant = $row[5];

$mineor = $row[6];

$bois = $row[7];

$fer = $row[8]; 

$temps_actuel = time();

$temps_ecoule = ($temps_actuel - $temps_ancien)/60;

} 

$prod_or = (($mineor*1)*$temps_ecoule)/3; 



//pierre 

$resultminepierre =mysql_query("SELECT * FROM minepierre WHERE login='".$cestqui."'") or die(mysql_error()); // requête  

while($row = mysql_fetch_row($resultminepierre)){  

$or = $row[2];

$pierre = $row[3]; 

$ble = $row[4];   

$habitant = $row[5];

$minepierre = $row[6]; 

$bois = $row[7];

$fer = $row[8]; 

$temps_actuel = time();

$temps_ecoule = ($temps_actuel - $temps_ancien)/60;

} 

$prod_pierre = (($minepierre*1)*$temps_ecoule)/3;  



//Bois 

$resultbois =mysql_query("SELECT * FROM bucheron WHERE login='".$cestqui."'") or die(mysql_error()); // requête  

while($row = mysql_fetch_row($resultbois)){  

$nombre = $row[6]; 

$temps_actuel = time();

$temps_ecoule = ($temps_actuel - $temps_ancien)/60;

} 

$prod_bois = (($nombre*1)*$temps_ecoule)/3;  



//fer 

$resultminefer =mysql_query("SELECT * FROM minefer WHERE login='".$cestqui."'") or die(mysql_error()); // requête  

while($row = mysql_fetch_row($resultminefer)){  

$or = $row[2];

$pierre = $row[3]; 

$ble = $row[4];   

$habitant = $row[5];

$minefer = $row[6]; 

$bois = $row[7];

$fer = $row[8]; 

$temps_actuel = time();

$temps_ecoule = ($temps_actuel - $temps_ancien)/60;

} 

$prod_fer = (($minefer*1)*$temps_ecoule)/3;  

 



//ferme

$resultchamps =mysql_query("SELECT * FROM champs WHERE login='".$cestqui."'") or die(mysql_error()); // requête  

while($row = mysql_fetch_row($resultchamps)){  

$or = $row[1];  

$pierre = $row[2]; 

$ble = $row[3];    

$habitant = $row[4];  

$nombre = $row[5]; 

$prod = $row[6]; 

$bois = $row[7];

$fer = $row[8]; 

$temps_actuel = time();

$temps_ecoule = ($temps_actuel - $temps_ancien)/60;

} 

$prod_champs = (($nombre*$prod)*$temps_ecoule)/4;   

?>  

Vous avez produit <?php echo floor($prod_or);?> unites d or et <?php echo floor($prod_pierre);?> unites de pierre depuis le dernier rafraichissement et <?php echo floor($prod_champs);?> de ble et <?php echo floor($prod_bois);?> de bois et <?php echo floor($prod_fer);?> de fer

<?php



// Si vous souhaitez determiner la valeur par heure : (($mine*10)/3600)*$temps_ecoule;

//---------------M.A.J--------------

  mysql_query("UPDATE ressources SET ors=ors+$prod_or, timestamp=$temps_actuel WHERE login='".$cestqui."'"); 

  mysql_query("UPDATE ressources SET pierre=pierre+$prod_pierre, timestamp=$temps_actuel WHERE login='".$cestqui."'"); 

  mysql_query("UPDATE ressources SET ble=ble+$prod_champs, timestamp=$temps_actuel WHERE login='".$cestqui."'");

  mysql_query("UPDATE ressources SET bois=bois+$prod_bois, timestamp=$temps_actuel WHERE login='".$cestqui."'");

  mysql_query("UPDATE ressources SET fer=fer+$prod_fer, timestamp=$temps_actuel WHERE login='".$cestqui."'");

// Déconnexion de MySQL

mysql_close(); 





?>

J'ai essayé plusieures syntaxe, rien ne passe :s
Merci encore


Un site de vulgarisation scientifique : http://www.etcomment.fr
"Il faut savoir prendre son temps pour aller vite"

Hors ligne

#9 Le 29/11/2007, à 10:51

Sebcbi1

Re : [RESOLU]fonction min en php

pour ton probleme de min , essaye 'var_dump($or)' plutot que 'echo $or' avant l'appel a la fonction min.

cela t'affichera le type exact de te variable et sa valeur

pour le javascript , sans le contenu de infobulle.js ....

Hors ligne

#10 Le 29/11/2007, à 10:56

abeman

Re : [RESOLU]fonction min en php

ok. j'ai trouvé pour le JS. il me suffisait d'un echo'...';
Bon, topic résolu grace a votre aide big_smile
Merci


Un site de vulgarisation scientifique : http://www.etcomment.fr
"Il faut savoir prendre son temps pour aller vite"

Hors ligne