Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2007, 14h35   #1
Invité de passage
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 3
Points : 3
Par défaut [SQL] Soucis avec une requête

Bonjour,

Je me tourne vers vous car je suis confronté à un problème de débutant.

J'ai une base (boutique) composée de deux colonnes :
Une colonne nommée "crit1" qui contient une note sur 10 et une autre nommée "date" qui contient la date de l'enregistrement.

Je souhaite calculer et afficher le nombre d'enregistrements datant de moins de 6 mois.


Je suppose que ça ne doit pas être bien compliqué mas si quelqu'un a un piste je suis preneur !

Merci
Auden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 14h53   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Après quelques tests je dirai que ca ca peut marcher :
SELECT * from matable where date > (NOW()-INTERVAL 6 MONTH)

Et tu récupères le nombre de résultats avec un mysql_num_rows()
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 15h00   #3
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Salut,

Essaye ça:

Code SQL :
SELECT count(*) FROM boutique WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)

Cordialement.

Dernière modification par julp ; 30/05/2007 à 18h09.
  Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 21h45   #4
Invité de passage
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 3
Points : 3
Merci pour votre aide, mais je ne dois pas être doué

j'ai essayé ça :

Code :
1
2
3
4
 
$nb = mysql_query("SSELECT * from boutiqueanimalissaintpriest where date > (NOW()-INTERVAL 6 MONTH)");
$preado = mysql_fetch_row($nb);
echo $preado;
Erreur :
Citation:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home.10.8
J'ai essayé cela :

Code :
1
2
$nombre = mysql_query("SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH")
echo $nombre;
Erreur
Citation:
Parse error: syntax error, unexpected T_ECHO in /home.10.8...
Je suppose que j'ai du faire une erreur de syntaxe.. mais où ? Désolé de vous embeter avec ça mais il ya trois jours je ne savais même pas ce qu'était une table...


Merci
Auden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 22h55   #5
Invité de passage
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 3
Points : 3
Citation:
Envoyé par Fabouney
Salut,

Essaye ça:

Code SQL :
SELECT count(*) FROM boutique WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)

Cordialement.
Merci
En passant par phpmyadmin cette requête fonctionne...


Code :
1
2
3
4
5
 
// on crée la requête SQL
$sql = 'SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)';
$res = mysql_num_rows($sql); 
echo .$res. ;
Mais là ça coince :-(
Auden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 13h13   #6
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Où est-ce que tu effectue ta requete (mysql_query) ?

Essaye ca :
Code PHP :
1
2
3
4
5
 
$sql = "SELECT count(*) FROM boutique WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)";
$query = mysql_query($sql) or die($sql . ' : '  . mysql_error());
$data = mysql_num_rows($query);
echo $data;
Sinon je vois pas trop
__________________
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 14h42   #7
Invité de passage
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 3
Points : 3
Voici le code complet qui est placé dans un tableau

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php 
// connexion à la base
$db = mysql_connect('mysql5-3', 'aaaaaa', 'bbbbbbb')  or die('Erreur de connexion '.mysql_error());
 
// sélection de la base  
mysql_select_db('aaaaaa')  or die('Erreur de selection '.mysql_error());
 
// Creation et envoi de la requete
$sql = "SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)";
$query = mysql_query($sql) or die($sql . ' : '  . mysql_error());
$data = mysql_num_rows($query);
 
 
echo "($data avis)" ;
 
mysql_close();  // on ferme la connexion
 
?>
Le probléme c'est que la valeur affichée dans le tableau est toujours 1.
Pourtant dans phpmyadmin la requête
Code :
1
2
 
$sql = 'SELECT count(*) FROM boutiqueanimalissaintpriest WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)';
me donne le bon nombre....

Quelqu'un voit d'où vient le problème ??

3 heures que je sèche dessus :-(
Auden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 14h53   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Parce que mysql_num_rows() retourne le nombre de lignes dans le résultat. toi tu as une seule ligne dans le résultat vu que tu fais un Select count(*)

Il me semble que tu voulais avoir les résultats ET leur nombre dans ce cas faut faire un SELECT * FROM, utiliser mysql_num_rows() pour avoir le nombre de résultats et utiliser mysql_fetch_*() pour récupérer chaque résultat.

Si tu veux juste leur nombre dans ce cas il faut faire comme ca :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 
// connexion à la base
$db = mysql_connect('mysql5-3', 'aaaaaa', 'bbbbbbb')  or die('Erreur de connexion '.mysql_error());
 
// sélection de la base  
mysql_select_db('aaaaaa')  or die('Erreur de selection '.mysql_error());
 
// Creation et envoi de la requete
// on donne un nom au résultat du count pour l'avoir facilement
$sql = "SELECT count(*) AS NbEnreg FROM boutiqueanimalissaintpriest WHERE date > SUBDATE(DATE(NOW()), INTERVAL 6 MONTH)";
$query = mysql_query($sql) or die($sql . ' : '  . mysql_error());
 
//$data = mysql_num_rows($query);
// récupéres dans un tableau la premiere (et seule) ligne du résultat
$result = mysql_fetch_assoc($query);
// récupère la valeur du count :
$nbEnreg = $result['NbEnreg'];
 
echo "($nbEnreg avis)" ;
 
mysql_close();  // on ferme la connexion
 
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h01   #9
Invité de passage
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 3
Points : 3
Merci ! Cela fonctionne au moment où je commençais à perdre tout espoir !!

Un grand merci !!!
Auden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h07   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
De rien !
Penses a mettre Résolu a ton post maintenant puisque le problème est réglé
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h14.


 
 
 
 
Partenaires

Hébergement Web