8768 sujets

Développement web côté serveur, CMS

Bonjour à tous, premier post sur ce forum , je ne trouve pas de sectio nmysql, donc je poste ici, car c'est aussi en rapport avec php, :

J'ai besoin de votre aide à propos d'une requête pdo avec le paramètre Sum:
J'ai une table mysql, avec ces colonnes =>

année, ip, visites, le but est de connaître / afficher le nombre de visites sur mon site par Ip, et par an, j'ai essayé quelque chose comme:

   
    $SQL=$pdo->query("SELECT SUM(answered) as total FROM `".$idLevel."` WHERE answered >0);
$data = $SQL->fetch();
$sommeanswered = $data['total'];


echo "Table"stats".$data['total'];


puis, pour afficher les résultats =>


    $SQL=$pdo->query("SELECT SUM(visits) as total FROM `".$idLevel."` WHERE visits >0");
$data = $SQL->fetch();
$sommeanswered = $data['total'];


echo "Table stats" $data['total'];

echo "Table stats" $data['total'];


J'ai du mal à saisir comment utiliser la valeur "$sommeanswered"; ( j'ai trouvé ça sur votre fo² )
et ça fait longtemps ( en années )que je n'ai pas pratiqué la progra'...
rien ne s'affiche( ni même de message d'erreur Smiley rolleyes

Je suppose qu'il manque ausssi un while, bref, j'ai du mal à réaliser ce que je faire !

Une petite aide svp ?
Merci par avance pour vos lumières !
Guillaume.
Modifié par niuxe (17 Dec 2023 - 12:31)
Bonjour Marc, merci pour votre /ta réponse rapide, comme mentionné, je n'ai pas pratiqué la progra' depuis x années ( environ 15 ans ! ) pour raison médical, peu importe, et je ne sais même pas comment activer ces paramètres..
Modifié par Guibs63 (17 Dec 2023 - 10:30)
peut-être ça :
_________________________


<?php
// Reporte toutes les erreurs PHP (Voir l'historique des modifications)
error_reporting(E_ALL);

// Connexion à la BDD
try {
  $bdd = new PDO('mysql:host=localhost;dbname=basetest','root','root');

}catch(Exception $e) {
    echo 'Erreur : '.$e->getMessage().'<br />';
    echo 'N° : '.$e->getCode();
}
?>

Modifié par niuxe (17 Dec 2023 - 12:33)
Re, pour PHP oui
error_reporting(E_ALL);
ou
error_reporting(-1);
. Pour PDO voir ici ? https://www.php.net/manual/fr/pdo.error-handling.php. Du coup je vous propose ceci:
error_reporting (-1);
try {
	$bdd = new PDO('mysql:host=XXXXX;dbname=YYYYY', 'ZZZZZ', 'RRRR', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch(Exception $e) {
    die('Erreur connexion: '.$e->getMessage());
}

$requete = 'SELECT
  SUM(visits) as nb
  ,Ip
  FROM matable
  group by Ip
  order by Ip
';
foreach  ($bdd->query($requete) as $ligne) {
    echo ('Ip: '.$ligne['Ip'].', nb visites: '.$ligne['nb'].'<br>');
}
. Ce code vous donnerait le nb de visites par IP.
Modifié par comar91 (17 Dec 2023 - 13:10)
Je rejoins comar :

// Supposons que $pdo est ton objet PDO

// Remplacez 'ta_table' par le nom réel de ta table
$idLevel = 'ta_table';

// Sélectionne  la somme des visites par IP et année
$SQL = $pdo->query("SELECT ip, année, SUM(visites) as totalVisites FROM $idLevel WHERE visites > 0 GROUP BY ip, année");

// Parcoure  les résultats avec une boucle while
while ($data = $SQL->fetch(PDO::FETCH_ASSOC)) {
    $ip = $data['ip'];
    $année = $data['année'];
    $totalVisites = $data['totalVisites'];

    // Affiche  les résultats
    echo "IP: $ip, Année: $année, Total des visites: $totalVisites<br>";
}

Modifié par JENCAL (19 Dec 2023 - 11:45)