J'ai un problème avec mon compteur de visite.
Suite a la mise à jour de MariaDB.
Pouvez-vous me dire ce qui cloche dans le code.
Mille Mercis à vous

12 réponses


$servername = "localhost";
$database = "*************";
$table = "*************";
$username = "*************";
$password = "*************";

mysqli_connect($servername, $username, $password);
mysqli_select_db($database);
$retour = mysqli_query('SELECT COUNT(*) AS nbre_entrees FROM $table');
$donnees = mysqli_fetch_array($retour); 
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
$retour = mysqli_query('SELECT COUNT(*) AS nbre_entrees FROM $table WHERE timestamp>\'' . $timestamp_5min . '\'');
$donnees = mysqli_fetch_array($retour);
if ($donnees['nbre_entrees'] == 1) {    // respect du singulier 
    echo '<strong>' . $donnees['nbre_entrees'] . '</strong> visiteur connecté<br />';
} else {
    echo '<strong>' . $donnees['nbre_entrees'] . '</strong> visiteurs connectés<br />';
}
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$aujourd_hui = mktime(0, 0, 0, $mois, $jour, $annee);
$retour = mysqli_query('SELECT COUNT(*) AS nbre_entrees FROM $table WHERE timestamp>\'' . $aujourd_hui . '\'');
$donnees = mysqli_fetch_array($retour);
if ($donnees['nbre_entrees'] == 1) {    // respect du singulier
    echo '<strong>' . $donnees['nbre_entrees'] . '</strong> visiteur aujourd\'hui<br />';
} else {
    echo '<strong>' . $donnees['nbre_entrees'] . '</strong> visiteurs aujourd\'hui<br />';
}  
$retour = mysqli_query('SELECT COUNT(*) AS nbre_entrees FROM $table');
$donnees = mysqli_fetch_array($retour);
echo '<strong>' . $donnees['nbre_entrees'] . '</strong> visites au total<br />';
echo $donnees['nbre_entrees'];

les variables php entouré de ' ne sont pas interprétées

Ok je test

La valeur de $donnees['nbre_entrees'] ne safiche pas avec ou sans '

REPONSE DU CODE
visiteurs connectés
visiteurs aujourd'hui
visites au total

qu'elle est le nouveau code ?

je suis novice dans php et null en MySQL, mon code est celui du dessus.
Appartement ma variable $donnees['nbre_entrees'] est toujours nul !
J'ai modifié tous les mysql en mysqli, ce qui a supprimé l'ERREUR 500 sur la page, mais ne résous qu'une petite partie du problème.
Expliquez-moi avec des exemple.
je patauge vraiment... J'ai vraiment besoin de vous, merci à vous !

ceci : $retour = mysqli_query('SELECT COUNT(*) AS nbre_entrees FROM $table');
devient: $retour = mysqli_query("SELECT COUNT(*) AS nbre_entrees FROM $table");
et la $table prendra la valeur qui lui est associée

J'ai fait cette manipulation et pas plus de valeur affichée.
Voici ce que j'ai fait !

<?php
//var_dump(mysqli_connect($servername, $username, $password));
mysqli_connect($servername, $username, $password);
mysqli_select_db($database);
$retour = mysqli_query("SELECT COUNT() AS nbre_entrees FROM $table");
$donnees = mysqli_fetch_array($retour);
//var_dump($donnees);
$timestamp_5min = time() - (60
5); // 60 5 = nombre de secondes écoulées en 5 minutes
$retour = mysqli_query("SELECT COUNT(
) AS nbre_entrees FROM $table WHERE timestamp > \'" . $timestamp_5min . "\'");
$donnees = mysqli_fetch_array($retour);
if ($donnees['nbre_entrees'] == 1) { // respect du singulier
echo "<strong>" . $donnees['nbre_entrees'] . "</strong> visiteur connecté <br/>";
} else {
echo "<strong>" . $donnees['nbre_entrees'] . "</strong> visiteurs connectés <br/";
}
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$aujourd_hui = mktime(0, 0, 0, $mois, $jour, $annee);
$retour = mysqli_query("SELECT COUNT() AS nbre_entrees FROM $table WHERE timestamp > \'" . $aujourd_hui . "\'");
$donnees = mysqli_fetch_array($retour);
if ($donnees[nbre_entrees] == 1) { // respect du singulier
echo "<strong>" . $donnees['nbre_entrees'] . "</strong> visiteur aujourd'hui <br/>";
} else {
echo "<strong>" . $donnees['nbre_entrees'] . "</strong> visiteurs aujourd'hui <br/>";
}
$retour = mysqli_query("SELECT COUNT(
) AS nbre_entrees FROM $table");
$donnees = mysqli_fetch_array($retour);
echo "<strong>" . $donnees['nbre_entrees'] . "</strong> visites au total <br/>";
echo $donnees['nbre_entrees'];
?>

Test N°1 : var_dump(mysqli_connect($servername, $username, $password));
Réponseest : /volume1/web/t/index-8.php:20: class mysqli#1 (19) { public $affected_rows => int(0) public $client_info => string(79) "mysqlnd 5.0.12-dev - 20150407 - $Id: 7cc7cc96e675f6d72e5cf0f267f48e167c2abb23 $" public $client_version => int(50012) public $connect_errno => int(0) public $connect_error => NULL public $errno => int(0) public $error => string(0) "" public $error_list => array(0) { } public $field_count => int(0) public $host_info => string(25) "Localhost via UNIX socket" public $info => NULL public $insert_id => int(0) public $server_info => string(14) "5.5.68-MariaDB" public $server_version => int(50568) public $stat => string(137) "Uptime: 289848 Threads: 1 Questions: 29922 Slow queries: 0 Opens: 498 Flush tables: 2 Open tables: 4 Queries per second avg: 0.103" public $sqlstate => string(5) "00000" public $protocol_version => int(10) public $thread_id => int(8144) public $warning_count => int(0) }

Test N°2 : var_dump($donnees);
Réponseest : /volume1/web/t/index-8.php:27: NULL

La base de données contient 6933 ligne en deux colonnes

tu es sur de te connecté à la bonne BDD ? (mariaDb et non mysql )
$table contient bien le nom de la table ?

Oui pour la table.
Je la lir avec cette routine.
http://felinfo.fr/t/index-6.php

<h1>//------------LIRE LA TABLE-------------------------</h1>
<?php
$mysqli = new mysqli($servername, $username, $password, $database);
$mysqli->set_charset("utf8");
$requete = "SELECT * FROM " . $table;
$resultat = $mysqli->query($requete);
while ($ligne = $resultat->fetch_assoc()) {
echo $ligne['ip'] . ' ' . $ligne['timestamp'] . '<br>';
}
$mysqli->close();
?>

Pouvez-vous me dire pourquoi les variable $retour et $donnees reste vide ?
$retour = mysqli_query("SELECT COUNT(*) AS nbre_entrees FROM " . $table);
$donnees = mysqli_fetch_array($retour);
Merci pour vos reponse !