Page 1 sur 1

array; undefined offset

Posté : 28 janv. 2016, 10:28
par esther123
Bonjour, étant très satisfaite de la réponse de mon premier poste sur ce forum, je continue.
Je réalise des statistiques d'un site. Je souhaite afficher le nb total de pages vues chaque jour du mois, ceci dans un tableau $visite_par_jour. Une incrémentation est faite à chaque fois qu'une page est chargée. Une liste déroulante me permet de choisir n'importe quel mois de l'année.

Enfait, tout fonctionne parfaitement bien. Mais j'ai cependant une erreur" undefined offset" liée à mon tableau( je pense), malgrès que l'affichage soit correct.
$visite_par_jour = array();
$sql = 'SELECT date FROM statistiques WHERE date LIKE "'.$date_mois.'%" ORDER BY date ASC';
$result = mysqli_query($base,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());
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_d) ) { 
		if($date_d < "10") {
			$date_d = substr($date_d, -1);
		} else {
			$visite_par_jour[$date_d]=$visite_par_jour[$date_d] + 1;
		}
	}	
}
var_dump($result);
var_dump($sql);


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

sscanf($date_mois, "%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 jours
echo '<br />Les statistiques du '.$date_m.'/'.$date_Y.' : <br /><br />';

for($i = 1; $i <= 31; $i++) {
	if (!isset($visite_par_jour[$i])) {
	echo 'le '.$i.' : 0 page vue<br />';
	}
	else {
	echo 'le '.$i.' : '.$visite_par_jour[$i].' pages vues<br />';
	}
}
Exemple de l'erreur: "Undefined offset: 28...", 28 correspondant au jour d'aujourd'hui. Ceci depuis le 12 Janvier !
Avez-vous des idées pour corriger cela ?
Merci d'avance pour vos réponses :)

Re: array; undefined offset

Posté : 28 janv. 2016, 12:06
par Saian
Bonjour, comme hier sauf que la c'est avec le tableau $visite_par_jour dont les index de jours ne sont jamais initialisés.

Quand l'algo passe sur cette ligne :
$visite_par_jour[$date_d]=$visite_par_jour[$date_d] + 1;
Si $visite_par_jour[$date_d] n'a pas été initialisé il va faire un undefined offset sur $visite_par_jour[$date_d] + 1.

Et comme hier également, il y a un problème avec ce if else :
if($date_d < "10") {
  $date_d = substr($date_d, -1);
} else {
  $visite_par_jour[$date_d]=$visite_par_jour[$date_d] + 1;
}
Si $date_d est inférieur à 10 (tu devrais enlever les " comme le suggérait Spols) alors $visite_par_jour[$date_d] n'est jamais incrémenté.

Re: array; undefined offset

Posté : 28 janv. 2016, 12:53
par esther123
Je ne vois aucun changement... Les messages sont toujours présent :/

Re: array; undefined offset

Posté : 28 janv. 2016, 12:55
par Saian
Qu'as tu fais ?

Re: array; undefined offset

Posté : 28 janv. 2016, 12:56
par esther123
J'ai copié coller ton code et enlevé les guillemets

Re: array; undefined offset

Posté : 28 janv. 2016, 12:59
par esther123
j'ai peut-être mal compris.. je reprend le code, que tu m'avais déjà donné pour l'autre sujet et je le réadapte à cette situation

Re: array; undefined offset

Posté : 28 janv. 2016, 13:00
par Saian
Copié collé quel code ? car la je n'ai fait que citer ton code.

Sais tu comment vérifier qu'un index de tableau existe ?

Comprends tu ce qui ne va pas sur le if else ?

Réadapter l'autre code devrait fonctionner oui. Le mieux étant de bien comprendre ce qui ne va pas et en quoi l'autre code règle ces problèmes.

Re: array; undefined offset

Posté : 28 janv. 2016, 14:04
par esther123
J'ai repris le code de mon précédent sujet et ça a fonctionné. j'ai juste une question. j'ai fait un var_dump de $result et il m'a renvoyé:
object(mysqli_result)[1]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => null

Re: array; undefined offset

Posté : 28 janv. 2016, 14:17
par Saian
Et quelle est la question ?

Re: array; undefined offset

Posté : 28 janv. 2016, 14:25
par esther123
J'ai cru comprendre que le "null" partout était anormal (ou peut-être pas finalement). Je voulais savoir enfait ce que cela signifiait :)

Re: array; undefined offset

Posté : 28 janv. 2016, 14:37
par Saian
Apparemment, ce serait un comportement normal :
http://stackoverflow.com/questions/1128 ... -a-integer
The object is implemented "lazily", i.e. it does not retrieve data from the server until it's actually required (i.e. you access something from the result object).

var_dump doesn't seem to trigger the property getters so they are shown as null.
A tester éventuellement, avant, pendant et après la boucle voir si ça retourne des valeurs différentes...

Re: array; undefined offset

Posté : 28 janv. 2016, 14:42
par esther123
Je le ferai. En tout cas merci beaucoup pour ton aide :)

Re: [RESOLU] array; undefined offset

Posté : 28 janv. 2016, 14:47
par Saian
Je t'en prie. En espérant que tu aies bien compris et que ça te permette de corriger ce genre de petites erreurs sans aide ! ;)