Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 23/11/2011, 16h27   #1
 
Homme jessy elter
salarié
Inscription : mars 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme jessy elter
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : salarié
Secteur : Alimentation

Informations forums :
Inscription : mars 2011
Messages : 55
Points : -1
Points : -1
Par défaut Problème requête SQL "INTERVAL DAY"

Bonjour,

J'ai posté un message que j'ai mis en résolu mais ce n'est pas le cas.
Je voudrais afficher le résultat du week-end dernier des matchs de foot, voila la requête qu'on m'a trouvée à mettre sur le site.
Le problème cela ne m'affiche rien et change l'aspect du site "Le texte devient gras, des décalages sur mes div Prochains matchs, derniers matchs"

Code :
1
2
3
4
SELECT cal_date, cal_heure, cal_locaux, cal_visiteurs, cal_lieu, cal_stade
FROM calmatchs
WHERE cal_date BETWEEN CURRENT_DATE AND DATE_ADD(CURRENT_DATE, INTERVAL -7 DAY)
	AND DAYOFWEEK(cal_date) IN (7, 1)
Voici une image après insertion du signe "-" devant le 7 quand je l’enlève je n'ai pas de bug.
http://jelter.fr/bug.jpg
jesaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h29   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Le SQL agit sur les sites web, c'est de notoriété publique.

Votre précédent problème avait une cause PHP, vous devriez commencer dans cette direction.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h31   #3
 
Homme jessy elter
salarié
Inscription : mars 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme jessy elter
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : salarié
Secteur : Alimentation

Informations forums :
Inscription : mars 2011
Messages : 55
Points : -1
Points : -1
d'ou viendrait mon erreur ?
jesaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h42   #4
 
Homme jessy elter
salarié
Inscription : mars 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme jessy elter
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : salarié
Secteur : Alimentation

Informations forums :
Inscription : mars 2011
Messages : 55
Points : -1
Points : -1
en php voila ce que j'affiche d'apres ma requete.
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
  function get_resultats()
    {
 
        ConnectionDb();
 
         $sql = 'SELECT cal_date, cal_heure, cal_locaux, cal_visiteurs, cal_lieu, cal_stade
FROM calmatchs
WHERE cal_date BETWEEN CURRENT_DATE AND DATE_ADD(CURRENT_DATE, INTERVAL -7 DAY)
	AND DAYOFWEEK(cal_date) IN (7, 1)';         $query = mysql_query($sql) or die("Erreur : requête sql affichage liste des joueurs");
 
        return $query;
 
    }

En php
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <div id="resultats"><h2>Dernier Matchs ...
  <?php 
 
 
    $result = get_resultats();
    $num_ligne = 1;     // initialisation du numero de chaque champs
    while($match = mysql_fetch_assoc($result) ):
 
?></h2>
        <table width="100%" border="0">
        <tr>
            <td>
 
           <?php echo $match['cal_locaux']; ?> - <?php echo $match['cal_visiteurs']; ?>
            <p style="text-align: center;"><span class="score"><?php echo $match['cal_score_locaux']; ?></span> - <?php echo $match['cal_score_visiteurs']; ?><span class="score"></span></p>
 
            </td>
        </tr><?php endwhile; ?>
</table>
  </div>
jesaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h42   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Et comme dit dans l'autre discussion, essaie avec DATE_SUB qui est un peu plus logique que d'ajouter -7 jours !

EDIT :
Affiche la requête avant envoi au serveur.
Je soupçonne que cela pourrait venir de l'absence d'espace entre les lignes SQL.
Avec une bonne indentation du code, tu ne devrais pas avoir de problème :
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function get_resultats()
{
 
	ConnectionDb();
 
	$sql = '
		SELECT cal_date, cal_heure, cal_locaux, cal_visiteurs, cal_lieu, cal_stade
		FROM calmatchs
		WHERE cal_date BETWEEN CURRENT_DATE AND DATE_ADD(CURRENT_DATE, INTERVAL -7 DAY)
			AND DAYOFWEEK(cal_date) IN (7, 1)
	';         
	$query = mysql_query($sql) OR die("Erreur : requête sql affichage liste des joueurs");
 
	return $query;
}
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h48   #6
 
Homme jessy elter
salarié
Inscription : mars 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme jessy elter
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : salarié
Secteur : Alimentation

Informations forums :
Inscription : mars 2011
Messages : 55
Points : -1
Points : -1
Code :
1
2
WHERE cal_date BETWEEN CURRENT_DATE 
AND DATE_SUB(CURRENT_DATE, INTERVAL -7 DAY)
En ajoutan DATE_SUB j'ai plus de bug mais cela m'affiche les matchs du week end a venir. J'ai vu aussi que j'avais deux fois la variables match donc j'ai mis une autre en resultat
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <div id="resultats"><h2>Dernier Matchs ...
  <?php 
 
 
    $result = get_resultats();
    $num_ligne = 1;     // initialisation du numero de chaque champs
    while($resultat = mysql_fetch_assoc($result) ):
 
?></h2>
        <TABLE width="100%" border="0">
        <tr>
            <td>
 
           <?php echo $resultat['cal_locaux']; ?> - <?php echo $resultat['cal_visiteurs']; ?>
            <p style="text-align: center;"><span class="score"><?php echo $resultat['cal_score_locaux']; ?></span> - <?php echo $resultat['cal_score_visiteurs']; ?><span class="score"></span></p>
 
            </td>
        </tr><?php endwhile; ?>
</table>
  </div>
.
jesaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h49   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Évidemment ! Tu soustrais -7 jours donc tu les ajoutes !
Essaie quand même de comprendre un peu ce que fait le code que tu utilises !

Pas sûr entre autre qu'il soit très utile de faire appel à ConnexionDb pour chaque requête !

J'ai édité mon précédent message.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h51   #8
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Si vous utilisez DATE_SUB il faut enlever le moins.

On ajoute -7 ou on retire + 7 :
x + ( - y ) = x - ( + y ) = x - y
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h10   #9
 
Homme jessy elter
salarié
Inscription : mars 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme jessy elter
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : salarié
Secteur : Alimentation

Informations forums :
Inscription : mars 2011
Messages : 55
Points : -1
Points : -1
en elevant j'ai plus de bug mais j'arrive pas à avoir le match que du week end je me retrouve avec tous les matchs de la saison toutes catégories.
jesaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h19   #10
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 646
Points : 2 643
Points : 2 643
Quand vous faites "une_valeur between A and B", on doit avoir A <= B

Sinon c'est normale qu'il ne trovue rien, donc gardez le between et adaptez
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h24   #11
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Bis repetita :
Citation:
Essaie quand même de comprendre un peu ce que fait le code que tu utilises !
Tu veux une traduction en français ?
Code :
1
2
3
4
SELECT cal_date, cal_heure, cal_locaux, cal_visiteurs, cal_lieu, cal_stade
		FROM calmatchs
		WHERE cal_date BETWEEN CURRENT_DATE AND DATE_ADD(CURRENT_DATE, INTERVAL -7 DAY)
			AND DAYOFWEEK(cal_date) IN (7, 1)
Sélectionner un paquet de colonnes
de la table calmatchs
où la cal_date est comprise entre aujourd'hui et aujourd'hui + (-7) jours (donc entre aujourd'hui et il y a 7 jours)
et où le jour de semaine de cal_date est dans l'ensemble (7, 1) (c'est à dire samedi ou dimanche).

La requête répond au besoin.
Si la requête pour le week-end prochain fonctionne, il n'y a pas de raison que celle-ci ne fonctionne pas.

As-tu exploré la piste que je t'ai donnée dans l'ajout à mon antépénultième message ?

EDIT :
Citation:
Quand vous faites "une_valeur between A and B", on doit avoir A <= B

Sinon c'est normale qu'il ne trovue rien, donc gardez le between et adaptez
Oh punaise ! Je ne l'avais pas vue celle-là !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h35   #12
 
Homme jessy elter
salarié
Inscription : mars 2011
Messages : 55
Détails du profil
Informations personnelles :
Nom : Homme jessy elter
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : salarié
Secteur : Alimentation

Informations forums :
Inscription : mars 2011
Messages : 55
Points : -1
Points : -1
C'est bon j'ai trouvé mon probleme voici le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	    FUNCTION get_resultats()
    {
 
        ConnectionDb();
 
         $sql = 'SELECT *
FROM calmatchs
WHERE cal_date 
BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW() 
ORDER BY cal_date
';
 
        $query = mysql_query($sql) OR die("Erreur : requête sql affichage liste des joueurs");
 
        RETURN $query;
 
    }
Mais maintenant je cherche a afficher le resultat du week end mais que de l'equipe 1. Champ : Equ_name : Seniors Equ 1
jesaye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 21h20   #13
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Et revoilà la guerre des étoiles !

Et CURRENT_DATE est plus standard que NOW() !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h43.


 
 
 
 
Partenaires

Hébergement Web