Comment récupérer le nombre de ligne dans une table de donnée SQL ?
- Accueil
- Forum
- Programmation
- PHP
- Comment récupérer le nombre de ligne dans une table de donnée SQL ?
Ce topic est suivi par : Le_Futuriste, twinny, lecteursdb, TheOldNoob
Le_Futuriste Le 17 juillet 2016 à 16:43 (Édité le 25 janvier 2019 à 17:51)
Tout est dans le titre, je recherche pour mon système de blog en php une méthode permetant d'afficher le nombre de lignes que j'ai dans mon tableau sql.
En gros sur ma table nommé "articles" il y a la liste des articles avec le titre, le texte ect.. Je veux pouvoir récupérer le nombre d'articles et l'afficher ensuite.
J'ai rechercher sur internet mais je n'ai pas réussi à trouver la solution malgré tout. 😦
Voila pour le problème.
Merci de votre aide ! 😀
twinny Le 17 juillet 2016 à 17:47 (Édité le 17 juillet 2016 à 17:51)
<?php
$db = new PDO('mysql:host=******;dbname=*****', '******', '*****'); ?>
$select=$db->prepare("SELECT COUNT(*) AS nb FROM ta_table");
$select->execute();
$s=$select->fetch(PDO::FETCH_OBJ);
?>
et ensuite pour afficher :
<?php echo $s->nb; ?>
TheFlameflo Le 17 juillet 2016 à 18:17 (Édité le 1 janvier 1970 à 01:00)
Ce que tu peux faire, c'est une query SELECT * FROM articles et ensuite faire un rowcount() sur le résultat.
Bonne chance à toi ! 😀
Le_Futuriste Le 18 juillet 2016 à 08:43 (Édité le 1 janvier 1970 à 01:00)
[/url]Vachement plus sécurisé que http://php.net/manual/fr/function.mysql-num-rows.php
<?php
}
$link = mysqli_connect("localhost", "root", "", "blog");
/*Code permetant d'affiher le nombre de ligne d'une table*/
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
if ($result = mysqli_query($link, "SELECT * FROM articles")) {
/* Détermine le nombre de lignes du jeu de résultats */
$row_cnt = mysqli_num_rows($result);
/*Affichage*/
printf("Le jeu de résultats a %d lignes.\n", $row_cnt);
/* Ferme le jeu de résultats */
mysqli_free_result($result);
}
/* Ferme la connexion */
mysqli_close($link);
?>
lecteursdb Le 18 juillet 2016 à 09:24 (Édité le 1 janvier 1970 à 01:00)
un code t'a déjà été donné, tu peux l'exploiter. J'aimerais tout de même apporter mon avis sur cela. J'aurais à la place de 'twinny' utiliser query au lieu d'une requête préparée. on fait des requêtes préparées pour pouvoir éviter des injections sql, alors que avec query aucune information provient de l'utilisateur, tout ce qui est tapé c'est toi même qui le tape je suppose. j'espère t'avoir aussi donné un coup de pouce ;)
TheOldNoob Le 22 juillet 2016 à 23:14 (Édité le 1 janvier 1970 à 01:00)
Compliquer tout ca, comme dis lecteursdb, avec un query, tout tes plus facile 😉
<?php
$req = $pdo->query('SELECT COUNT(*) AS nb FROM contact WHERE message_state = "unread"');
$req->execute();
$data = $req->fetch();
?>
<li style="color: red;"><?php echo $data['nb']; ?> nouveaux message</li>
Voilà, le code que j'utilise pour afficher le nombre de nouveau message sur une barre de navigation.
Tu retir tout ce qu'il y a après contact et dans l'echo tu va avoir le nombre de ligne dans ta table (la ma table c'est "contact")
Le_Futuriste Le 24 juillet 2016 à 15:37 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 24 juillet 2016 à 19:22 (Édité le 1 janvier 1970 à 01:00)
<?php
$req = $pdo->query('SELECT COUNT(*) AS nb FROM table_name');
$req->execute();
$data = $req->fetch();
echo $data['nb'];
?>
Je peu pas faire plus simple 😀
TheOldNoob Le 24 juillet 2016 à 19:23 (Édité le 1 janvier 1970 à 01:00)
Tu évolura pas si tu cherche pas 😀
TheFlameflo Le 24 juillet 2016 à 23:56 (Édité le 1 janvier 1970 à 01:00)
Si tu cherches à le faire en une ligne, il te suffit de faire une fonction, c'est ce qu'il y a de plus court :
// Création de la fonction
function countRow($table_name)
{
$req = $db->query("SELECT * FROM $table_name");
// J'ai pas protégé contre les injections SQL, mais vu que rien n'est demandé à l'utilisateur, il devrait pas y avoir de problèmes graves.
$nb = $req->rowCount();
return $nb;
}
// Utilisation de la fonction
echo countRow("articles"); // Tu mets le nom de la table
C'est ce qu'il y a de plus simple si tu comptes calculer le nombre de lignes plusieurs fois sur ton site.
Je n'ai pas testé le code, il se peut qu'il y ait des erreurs...
Cependant, je dois t'avertir : ça ne marche qu'avec PDO.
De plus, c'est pas super super sécurisé à la requête, mais comme rien n'est saisi pas l'utilisateur, il y a peu de chances qu'il y ait un problème.
Tu peux toujours arranger le tout en utilisant prepare() et execute().
J'espère t'avoir aidé ! 😉
Nobodief Le 25 juillet 2016 à 03:07 (Édité le 25 juillet 2016 à 03:41)
function GetCount($table, $where, $value) {
global $bdd;
$req = $bdd->prepare('SELECT * FROM '.$table.' WHERE '.$where.' = ?');
$req->execute(array($value));
$req = $req->rowCount();
return $req;
}
//Utile pour les conditions
if(GetCount('users', 'name', $_POST['username']) == 0) {
} else {
}
Méthode pour calculer :
function GetAmount($table) {
global $bdd;
$req = $bdd->prepare('SELECT COUNT(*) AS nb FROM '.$table.'');
$req->execute();
$req = $req->fetch();
return $req['nb'];
}
echo GetAmount('users');
Comme la dit notre chers amis @TheHoldNoob , tu dois apprendre par toi même, c'est pas comme si les ressources et la documentation sur la programmation n'existé pas.
Tu as juste à taper la fonction que tu recherche et tu devrais trouver.
Pour terminer, prend l'habitude de passer ce genre de requête en "Fonction", car pour une interface administrative tu va devoir faire ce code pour la plupart de tes tables.
Cela t'évite de ré-écrire ton code.
Le_Futuriste Le 25 juillet 2016 à 11:28 (Édité le 1 janvier 1970 à 01:00)