8768 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

J'ai un code qui fonctionne en php 5.4 et qui refuse de fonctionner en php 7.

<?php
$Phi = $data1['nbre_entrees'];
$total = $Totaux;
$Stat1 = cacul_pourcentage($Phi,$total,100)." %";
$_SESSION['Stat1'] = $Stat1;
$valeur_pourcentage = 100;
echo "<u>Pourcentage du stock pour la phil</u> : ";
echo cacul_pourcentage($Phi,$total,100)." %";
?>


Je n'arrive pas à trouver l'erreur. Aucun message d'erreur.

Merci de vos lumières.
Modifié par Tintin75 (18 Feb 2016 - 10:12)
Tu as copier tous le code ??

$Totaux; il sort d'où ?

cacul_pourcentage() peut être que c'est elle qui plante....

$Stat1; il sort d'où ?
n'hesite pas a faire un var_dump() pour chaque variable, voir si c'est du string ou du int.. et partage nous le résultat.
Modifié par JENCAL (17 Feb 2016 - 17:45)
tu as raison, j'ai oublié de te filer un bout de code !!!

$_SESSION['data1'] = $data1['nbre_entrees'];

Ca doit être cacul_pourcentage() qui plante

Je récupère des valeurs pour en faire des % pour un graph dynamique.
Modifié par Tintin75 (17 Feb 2016 - 17:48)
pour savoir si c'est ta fonction, tu met un var_dump(ta variable);exit() avant l'appel de ta fonction, si cela marche tant mieux et tu deplace ton couple var_dump();exit(); après ta fonction, si sa plante, cela vient bien de celle ci.
Comme ça :

<?php
var_dump(dataS1);
exit();
$dataS1 = $dataS1['nbre_entrees'];
$total = $Totaux;
$Etat1 = cacul_pourcentage($dataS1,$total,100)." %";
$_SESSION['Etat1'] = $Etat1;
$valeur_pourcentage = 100;
echo "<u>Pourcentage des articles en stock</u> : ";
echo cacul_pourcentage($dataS1,$total,100)." %";
?>
Oui plus ou moins, y'a une erreur

var_dump(dataS1); <<<----- Là tu appel une variable (fais gaffe tu as oublier le "$"
exit(); <<<----- te permet de quitter le programme et de s'arreter, donc juste après le var dump() pour "voir" le résultat

moi j'aurais fais ça :


$dataS1 = $dataS1['nbre_entrees'];
$total = $Totaux;
var_dump($dataS1 );
var_dump($total );
exit();
Modifié par JENCAL (17 Feb 2016 - 18:04)
Tintin75 a écrit :
int(1012) NULL

Merci pour l'explication Smiley cligne


donc c'est bien ce que je disais :

JENCAL a écrit :

$Totaux; il sort d'où ?


$Totaux; n'existe pas.
$_SESSION['Totaux'] = $Total;

En haut de mon code.

J'ai bien le Total des mes enregistrement qui correspond à $Total.

$Total = $Total->rowCount();

Je pige pas pourquoi mon code fonctionnait à merveille en 5.4 et niet en 7 Smiley fache
Modifié par Tintin75 (17 Feb 2016 - 18:33)
<?php
function cacul_pourcentage($nombre,$total)
{
$resultat = ($nombre *100 ) / $total;
return round($resultat,2); // Arrondi la valeur à 2 chiffres
}
?>

<?php
$Phi = $data1['nbre_entrees'];
$total = $Totaux;
$Stat1 = cacul_pourcentage($Phi,$total,100) .'%';
$_SESSION['Stat1'] = $Stat1;
$valeur_pourcentage = 100;
echo "<u>Pourcentage du stock pour la philat</u> : ";
echo cacul_pourcentage($Phi,$total,100)." %";
?>

J'ai à l'écran : INF %

Ma fonction est elle bonne en php 7 ? Bon, il faut que je revois calmement pour récupérer mes variables et voir ou ça bloque. Le code est sur la même page, les totaux ainsi que l'ensemble de mes calculs. Tout fonctionne sauf les pourcentages Smiley bawling
Modifié par Tintin75 (17 Feb 2016 - 20:15)
Après test, le code fonctionne bien sauf que j'arrive pas à récupérer mes variables dans ma fonction. Si je remplace les variables par des chiffres le calcul se fait nickel chrome.

Il faut que je trouve la coquille Smiley murf

Le bug se trouve au niveau des variables dans la fonction.
Modifié par Tintin75 (18 Feb 2016 - 07:53)
Bonjour,

But de la manœuvre pour toi, faire des écho un peu partout...

Par exemple dans ta fonction :
function cacul_pourcentage($nombre,$total) {
  echo "nombre=$nombre<br>";
  echo "total=$total<br>";
  $resultat = ($nombre *100 ) / $total;
  return round($resultat,2); // Arrondi la valeur à 2 chiffres
} 

Si tu ne vois pas tes valeurs, il faut remonter à l'appel.
D''ailleurs chose étrange, tu lui passes trois paramètres à l'appel, alors qu'il y en a que deux à la définition, sur le principe ce n'est pas grave, mais il y a de quoi se poser des questions sur le pourquoi du comment.
J'ai trouvé le bug

<?php

$data1['nbre_entrees']=$connexion->query('SELECT * FROM Articles where t="Phil" ');
$Bob = $data1['nbre_entrees']->rowCount();
echo "<u>Nombre d&apos;enregistrement pour la Phil</u> : " , $Bob;
?>

Il faut que j'arrive à récupérer Bob. Si je remplace $Bob par 33 le calcul se fait bien.

C'est idiot, mais je n'y arrive pas Smiley ohwell
Modifié par Tintin75 (18 Feb 2016 - 09:20)
Pense à toujours regarder la doc !
http://php.net/ a écrit :

Exemple #2 Comptage des lignes retournées par une requête SELECT
Pour la plupart des bases de données, PDOStatement::rowCount() ne retourne pas le nombre de lignes affectées par une requête SELECT. À la place, utilisez PDO::query() pour faire une requête SELECT COUNT(*)...
Je n'ai pas de $del->execute(); dans ma page.

Il faut que j'arrive à déclarer Bob comme variable.

C'est bête comme choux mais je n'y arrive pas, la honte à moi Smiley confus

La valeur Bob, s'affiche bien en haut de ma page. Je veux juste récupérer la valeur pour faire mon calcul.

Bob = affiche 423

Je veux faire donc Bob * 2258 / 100 = pour avoir mon %
Modifié par Tintin75 (18 Feb 2016 - 10:10)
Le topic est marqué Résolu, tu as fini par y arriver ?
Si c'est le cas, pense toujours à mettre la solution que tu as trouvé, pour que d'autres personnes qui auraient le même soucis que toi puisse le corriger.
Pages :