Page 1 sur 1

var_dump: array empty

Posté : 27 janv. 2016, 17:31
par esther123
Bonjour, je cherche à récupérer le nombres de pages vues, dans le mois d'un site, ceci dans un tableau. Seulement il ne se rempli pas. J'ai pu le voir grâce au var_dump, car il n'y a aucune erreur d'affichée :shock:
$visite_par_mois = array();
$sql = 'SELECT date FROM statistiques WHERE date LIKE "'.$date_annee.'%" ORDER BY date ASC';

$result = mysqli_query($base,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error($base));
while ($data = mysqli_fetch_array($result)) {
	$date=$data['date'];
	
	sscanf($date, "%4s-%2s-%2s %2s:%2s:%2s", $date_Y, $date_m, $date_d, $date_H, $date_i, $date_s);
	
	if(isset($date_m) ) {
		if($date_m < "10") {
			$date_m = substr($date_m, -1);
		} else {
			$visite_par_mois[$date_m]=$visite_par_mois[$date_m] + 1;
		}
	}
}
var_dump($visite_par_mois);

$total_pages_vu = mysqli_num_rows($result);
mysqli_free_result($result);

sscanf($date_annee, "%4s-%2s-%2s %2s:%2s:%2s", $date_Y, $date_m, $date_d, $date_H, $date_i, $date_s);

// on affiche le nombre de pages vues en fonction des mois
echo '<br />Les statistiques de l\'année '.$date_annee.' : <br /><br />';

for($i = 1; $i <= 12; $i++) {
	if (!isset($visite_par_mois[$i])) {
	echo 'Mois : '.$i.' : 0 page vue<br />';
	}
	else {
	echo 'Mois : '.$i.' : '.$visite_par_mois[$i].' pages vues<br />';
	}
}
Avez-vous des idées pour corriger cela ?
Merci d'avance :)

Re: var_dump: array empty

Posté : 27 janv. 2016, 17:38
par Spols
if($date_m < "10") {
Ceci me semble douteux, une comparaison de string ne va rien apporter de bon, et surement que la condition est toujours remplie.

Vérifie avec var_dump le contenu de $date_m et son type, et enlève peut être les guillemets pour faire une comparaison d'entier.

En règle générale, tu aura plus facile si tu gérais directement des timestamp dans MYSQL et PHP plutot qu'un format précis que tu dois parser à chaque utilisation

Re: var_dump: array empty

Posté : 27 janv. 2016, 17:41
par esther123
le var_dump de $date_m me renvoie "1" o.O

Re: var_dump: array empty

Posté : 27 janv. 2016, 17:42
par Saian
Salut, je vois au moins 2 problèmes sur le script ici :
if($date_m < "10") {
  $date_m = substr($date_m, -1);
} else {
  $visite_par_mois[$date_m]=$visite_par_mois[$date_m] + 1;
}
Si $date_m est inférieur à 10 alors $visite_par_mois[$date_m] n'est pas incrémenté.
Et les différents index de $visite_par_mois ne sont jamais initialisés.

L'algo devrait plutôt ressembler à ceci :
if($date_m < 10)
  $date_m = substr($date_m, -1);

if(!isset($visite_par_mois[$date_m]))
  $visite_par_mois[$date_m] = 0;

$visite_par_mois[$date_m]+= 1;

Re: var_dump: array empty

Posté : 27 janv. 2016, 17:45
par esther123
Saian, je reste sans voix, je suis passé par plusieurs forum durant 6 jours entier, un copier/coller a suffit pour tout arranger.
Merci beaucouuup :)

Re: [RESOLU] var_dump: array empty

Posté : 27 janv. 2016, 17:53
par Saian
Héhé 8-)