8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je souhaite additionner la totalité de mes lignes de ma table.

Comme d'habitude le code à changé avec pdo par rapport à mysql.

<?php

$l = (isset($_POST['l']) ? $_POST['l'] : "");

$connexion = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
$connexion->exec("SET CHARACTER SET utf8");

//La connexion à la base de données est déjà réalisée

$req=$connexion->query('SELECT * FROM Articles');
$data = $req->fetch();
?>

Naturellement ça ne fonctionne pas !!! Smiley decu
Modifié par Tintin75 (28 Jan 2016 - 13:14)
Hello
Soit tu souhaite additioner le contenu d'une colonne en particulier et à ce moment là tu utilise en mysql la methode SUM() sur une colonne,
Soit tu souhaite additioner le nombre de ligne trouver, dans ce cas c'est COUNT() qu'il faut utiliser.
Modérateur
Bonjour,

Si tu fais un select * (pour d'autres raisons que le simple fait de compter les lignes), il te suffit d'employer la fonction rowCount(). Exemple :
$req=$connexion->query('SELECT * FROM Articles');
print "Articles a ".$req->rowCount()." lignes<br>";
Amicalement,
Merci ça fonctionne. Si j'ai le temps cet après midi je vais me pencher sur le code.

Merci encore.
Oui utilise la fonction de parsimonhi, car avec le COUNT() SQL tu n'a qu'un seul résultat, un nombre.
Merci, je suis entrain de bosser dessus, mais c'est pas gagné vue que je suis sans arrêt dérangé.

Si j'ai pas le temps je m'y colle ce soir.

Merci encore pour vos cours. Smiley smile
$data2['nbre_entrees']=$connexion->query('SELECT COUNT(*) AS nbre_entrees FROM Articles where t="Voitures" ');
$data2['nbre_entrees'] = $data2['nbre_entrees']->rowCount();

echo "<u>Nombre d&apos;enregistrement pour la catégorie voiture</u> : " , $data2['nbre_entrees'];

Normalement j'en ai 126 et là j'ai 1 à l'écran !!!

Il y a un truc Smiley decu
ah oui c'est sur si tu fait les deux, l'un a la suite de l'autre tu aura 1, c'est ce que j'ai dit, tu aura UN nombre, dans la premiere requete tu compte (avec COUNT()), donc tu as 126, mais si tu rowcount() sur 126 bah t'a 1 ..


il faut utilisé soit l'un, soit l'autre, pas les deux à la suite
Modifié par JENCAL (28 Jan 2016 - 14:54)
J'ai tout une série de calcul à faire. Je crois avoir pigé ton explication mais je n'y arrive pas.
Modifié par Tintin75 (28 Jan 2016 - 15:03)
Je reprend ces lignes
$data2['nbre_entrees']=$connexion->query('SELECT COUNT(*) AS nbre_entrees FROM Articles where t="Voitures" ');
$data2['nbre_entrees'] = $data2['nbre_entrees']->rowCount(); 

sur cette ligne :
$data2['nbre_entrees']=$connexion->query('SELECT COUNT(*) AS nbre_entrees FROM Articles where t="Voitures" ');

$data2['nbre_entrees'] va être égale a 126 car tu fais un count directement dans la requete, donc le résultat sera sur une seul ligne.
Si tu fais un rowcount() (qui va compter le nombre d'occurence) juste derrière il va t'afficher 1, parce que le seul résutlat c'est "126", ya une seule cellule dans le tableau (qui est égale à 126)

Si tu enleve le COUNT() qui est présent dans la requête sql, ton rowcount fonctionnera, car la requete te renverra 126 résultats différents (un tableau avec 126 cellule) ... ce qui n'est pas pareil que un seul résutat (une seul cellule) qui est égale à 126.
Modifié par JENCAL (28 Jan 2016 - 15:30)
Merci, débordé je teste et je te remercie vivement pour tes précieux conseils. Smiley smile

Je suis idiot !!! Tu vas me dire que c'est pas nouveau, mais je n'y arrive pas. Smiley decu Ca m'énerve car tu te donnes du mal à m'expliquer et ça fonctionne pas Smiley bawling

$data1['nbre_entrees']=$connexion->query('SELECT * AS nbre_entrees FROM Articles where t="Voitures" ');
$data1['nbre_entrees'] = $data1['nbre_entrees']->rowCount();

J'ai trouvé et pigé mon erreur. Merci encore de t'avoir donner du mal à m'expliquer. Smiley smile
Modifié par Tintin75 (28 Jan 2016 - 17:37)