Bonjour,

Souhaitant mettre en place un système d'affichage du nombre de personnes connectées, je rencontre un message d'erreur de type "Notice: Undefined offset".
Comme je ne comprends pas complètement l'origine du message d'erreur, je joins ci-après les différents fichiers potentiellement concernés, soit index.php, adet1.php, adet2.php et enfin adet11.php

index.php est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
	session_start();
	$_SESSION['langue_util'] = 'français';		// Initialisation de la langue
	include('adet11.php');	// MAJ du compteur
?>
<HTML>
<HEAD></HEAD>
<BODY>
 
<?php
	include('adet2.php');
?>
 
</BODY>
</HTML>
adet1.php est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
	// Paramètres de configuration de la base de données
	$host = 'localhost';
	$base = 'mabase';
	$login = 'root';
	$password = '';
 
	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));
	mysqli_set_charset ( $link , 'UTF8' );
 
 
/* Vérification de la connexion */
	if (!$link) {
		echo "Error: Unable to connect to MySQL." . PHP_EOL;
		echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
		echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
		exit;
	}
 
	if (mysqli_connect_errno())
		{
			printf("Échec de la connexion SSS: %s\n", mysqli_connect_error());
			exit();
		}
 
?>
adet2.php est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
	include "php/adet1.php"; // Inclusion du fichier de connexion &agrave; la base de données
	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion à MySql
 
 
if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}
 
 
 
 
$retour = mysqli_query($link,'SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysqli_fetch_array($retour);
 
if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
    mysqli_query($link,'INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
    mysqli_query($link,'UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}
 
$timestamp_5min = time() - (60 * 5);
mysqli_query($link,'DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);
 
$retour = mysqli_query($link,'SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysqli_fetch_array($retour);
 
echo '(actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés)';
?>
Enfin, adet11.php est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
//	session_start(); // A mettre sur chaque page utilisant la session
 
	if (!isset($_COOKIE["monCook"]))
		{
			// Cookie inexistant donc création du cookie et incrémentation du nbre de visiteurs
			setcookie("monCook","OK",time()+600);
			$fp = fopen("compteur.txt","r+");
			$visiteurs=fgets($fp,10);
			$visiteurs++;
			fseek($fp,0);
			fputs($fp,$visiteurs);
			fclose($fp);
 
			// On met à jour les hits de connexion par pays
			include "php/adet1.php"; // Inclusion du fichier de connexion à la base de données
			$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion &agrave; MySql
//			$base = mysql_select_db($base); // Sélection de la base		// Utilité ?
 
			if (!$base)
				{echo 'impossible d\'ouvrir la base.';
				}
			else
				{
					// On commence par récupérer l'IP du visiteur
					$dotted = $_SERVER['REMOTE_ADDR'];
 
					//On transforme cet IP A.B.C.D en un nombre valant A * (256*256*256) + B * (256*256) + C * 256 + D
					$dotted = preg_split( "/[.]+/", $dotted);			
					$ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]); 	// Nbre calculé sans les points et avec la formule
					// On interroge la table:		
					$result = mysqli_query($link,"SELECT CODE FROM `HitsParPaysNew` WHERE `IP_FROM` <= $ip AND `IP_TO` >= $ip");
					$rows = mysqli_num_rows($result);
					if ($rows == 1)
						{
							$req = mysqli_query($link,"UPDATE `HitsParPaysNew` SET hits=hits+1 WHERE `IP_FROM` <= $ip AND `IP_TO` >= $ip");
							if (!$req )
							   {
									$message = 'Requête invalide : ' . mysqli_error() . "\n";
									$message .= 'Requête complète : ' . $req ;
									die($message);
							   }
						}	
 
 
 
				// -----------------        On met aussi à jour les visiteurs connectés à l'instant t --------------------------- 
					// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table. on compte le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
					$retour = mysqli_query($link,'SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
					$donnees = mysqli_fetch_array($retour);
 
					if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
						{
							// -----------------        On met à jour la table HitsParPaysNew --------------------------- 
							mysqli_query($link,'INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
 
						}
					else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
						{
							mysqli_query($link,'UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
						}
 
					// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.
 
					// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
					$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
					mysqli_query($link,'DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);
 
					// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
					$retour = mysqli_query($link,'SELECT COUNT(*) AS nbre_entrees FROM connectes');
					$donnees = mysqli_fetch_array($retour);
			}
		}
else
{			$fp = fopen("compteur.txt","r+");
			$visiteurs=fgets($fp,10);
}
//echo $visiteurs.' visiteurs depuis le 1er novembre 2002';
?>
J'ai trouvé sur le net différents messages relatifs à cette erreur mais pas quelque chose qui se rapproche à mon cas.
Pourriez-vous me renseigner, svp ?
Merci d'avance.