Compter entrées table avec un critère <

Sh00ter
Invité n'ayant pas de compte PHPfrance

12 avr. 2007, 19:31

Bonjour à tous, une petite question rapide (enfin je pense)
Y-a t-il un équivalent pour...
$retour_nbre_pronos = mysql_query('SELECT COUNT(*) AS nb_messages FROM grilles WHERE debut<"'.time().'"');
...qui ne marche apparament pas...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 avr. 2007, 20:12

Il serait plus simple pour tout le monde d'expliquer ce que tu veux faire (fonctionnellement, style "je veux les messages postés avant une certaine date, contenue dans cette colonne") plutôt que de balancer du SQL. (bon là ça va encore c'est vrai, mais c'est une habitude à prendre, plutôt que de laisser les lecteurs décrypter)

Surtout que ce qui est vraiment utile, c'est le SQL généré :
$sql = 'SELECT COUNT(*) AS nb_messages FROM grilles WHERE debut<"'.time().'"';
echo $sql // <--------------- ça
Ainsi, tu verras ce que tu envoies à MySQL déjà, ce qui permettra de voir certaines erreurs déjà. Ensuite... suis ce post, une base de débug y est : http://www.phpfrance.com/forums/voir_sujet-19378.php

Ah oui, et pour les questions sur les BDD et le SQL, il y a un forum dédié...

Invité
Invité n'ayant pas de compte PHPfrance

12 avr. 2007, 21:11

Ok ben excusez moi je vais être plus clair: je fais un système de pages en fait je compte le nombre d'entrées dans une table, je divise ce nombre par le nombre de message que je veux afficher par page. Mais il faut que mysql compte uniquement les entrées où le champ 'debut' (de type int) soit inférieur au time() actuel. Et en fait ce n'est pas réellement une erreur mais la requête n'a pas l'air d'avoir lieu et ce à cause du critère WHERE... En effet en enlevant ce critère WHERE ca marche mais comme je désire uniquement les entrées où debut<time()
Merci d'avance.

PS: Si vous pensez que je n'ai pas posté dans la bonne section, déplacez mais comme j'hésitait sur l'endroit où le placer je l'ai mis ici.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 avr. 2007, 21:55

Comment tu sais que ce n'est pas une erreur ? Tu ne les affiches pas

=> mysql_error()

Il y a avait d'autres suggestions dans mon post, tu as essayé ?

Invité
Invité n'ayant pas de compte PHPfrance

12 avr. 2007, 22:11

Ah oui désolé j'avais éssayé le or die... Mais pas d'erreur...
Les autres suggestions? A part le mysql_fetch_rows que je ne sais pas utiliser je ne vois pas
Sinon voilà mon code complet peut-être que ce sera plus claire...

Code : Tout sélectionner

<?php mysql_connect("***", "***", "***"); mysql_select_db("***"); $nombreDeMessagesParPage = 3; $retour_nbre_pronos = mysql_query('SELECT COUNT(*) AS nb_messages FROM grilles WHERE fin>"'.time().'"'); $donnees_nbre_pronos = mysql_fetch_array($retour_nbre_pronos); $totalDesMessages = $donnees_nbre_pronos['nb_messages']; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page = 1; } $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse_aff = mysql_query('SELECT * FROM grilles ORDER BY fin LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); while ($donnees_aff = mysql_fetch_array($reponse_aff)) { if ($donnees_aff['debut'] < time()) { if ($donnees_aff['fin'] > time()) {?><hr width="200" /><div align="center"><?php echo $donnees_aff['nom_grille']; ?><br /><?php ?></div><?php }}} ?><hr width="200" /><div align="center">-<?php for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="index.php?page=' . $i . '">' . $i . '</a>- '; } ?></div><?php mysql_close(); ?>

Invité
Invité n'ayant pas de compte PHPfrance

12 avr. 2007, 22:24

Autant pour moi le problème ne résidait pas dans le comptage des entrées mais dans leur affichage. Merci encore...