Probleme niveau "Mois" SQL Décalage
Résolu
James007b4
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
C'est encore moi, ma dernière question...
J'ai un petit problème,
j'ai une page qui génère un tableau avec les mois allant de Octobre a septembre (fixé écrit à la mains se sont les cellules qui sont générées ).
Dans les TD en dessous des 'mois', je vais chercher mes valeurs dans ma BDD avec la commande ci dessous pour les classer par mois et annee :
Sauf que parfois mon Secteur_ID est différent donc ca veux dire que
Secteur_ID = 1 :
Octobre pas de visite, novembre visite, decembre visite, janvier pas de visite, fevrier visite...
Secteur_ID = 3 :
Octobre visite, novembre visite, decembre visite, janvier visite, fevrier visite...
La commande fonctionne, est donc
pour reprendre le tableau ( Secteur_ID= 1 par exemple ), les visites du mois de novembres vont dans le mois d'octobre, il y a un décalage. Ceux qui est normal vu qu'il n'y pas de visite au mois d'octobre donc vide ( rien ne s'affiche depuis la commande SQL sur phpmyAdmin normal )
La question est : Comment je fais pour ne pas avoir de décalage ?
Merci beaucoup de votre aide, grâce à votre aide je pourrais débloquer le reste du projet.
C'est encore moi, ma dernière question...
J'ai un petit problème,
j'ai une page qui génère un tableau avec les mois allant de Octobre a septembre (fixé écrit à la mains se sont les cellules qui sont générées ).
Dans les TD en dessous des 'mois', je vais chercher mes valeurs dans ma BDD avec la commande ci dessous pour les classer par mois et annee :
$req = "SELECT ID,Nom,secteur,Secteur_ID, MONTH(Date) AS mois, YEAR(Date) AS Annee, COUNT(DISTINCT Chantier) AS visite FROM visite_chantier WHERE Secteur_ID = 6 GROUP BY annee, mois"; $res = mysql_query($req) ; //Boucle while ($row = mysql_fetch_array($res)) { echo "<td> ".$row['visite']." </td>"; $cellule2 = ($row['visite']/1)*100; if($cellule2 >= 100) { echo "<td bgcolor='#C6EFCE'> ",$cellule2,"%</td>"; } else if($cellule2 = 0) { echo "<td bgcolor='#FFC7CE'>0</td>"; } }
Sauf que parfois mon Secteur_ID est différent donc ca veux dire que
Secteur_ID = 1 :
Octobre pas de visite, novembre visite, decembre visite, janvier pas de visite, fevrier visite...
Secteur_ID = 3 :
Octobre visite, novembre visite, decembre visite, janvier visite, fevrier visite...
La commande fonctionne, est donc
pour reprendre le tableau ( Secteur_ID= 1 par exemple ), les visites du mois de novembres vont dans le mois d'octobre, il y a un décalage. Ceux qui est normal vu qu'il n'y pas de visite au mois d'octobre donc vide ( rien ne s'affiche depuis la commande SQL sur phpmyAdmin normal )
La question est : Comment je fais pour ne pas avoir de décalage ?
Merci beaucoup de votre aide, grâce à votre aide je pourrais débloquer le reste du projet.
A voir également:
- Probleme niveau "Mois" SQL Décalage
- Mise a niveau windows 7 vers 10 - Accueil - Mise à jour
- Excel mois en lettre ✓ - Forum Bureautique
- Iptv decalage son image - Forum Box et Streaming vidéo
- Youtube premium 2 mois gratuit - Accueil - TV & Vidéo
- 600h en mois ✓ - Forum Excel
1 réponse
Bonjour,
1 - Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
À la place, tu peux (<gras DOIS </gras> ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
2 - Ton script affiche ce qui vient de ta bdd.
Si tu n'as pas de données pour le mois d'octobre ... il ne va pas pouvoir l'inventer !
A la limite, tu peux faire une boucle sur chaque MOIS et pour chaque mois afficher la valeur (si elle existe sinon vide) de ta requête....
Pour t'en dire plus il faudrait que nous connaissions le contenu du résultat de ta requête.
Tu pourrais, pour ce faire, mettre en commentaire tes ECHO et à la place nous faire un
PS: Tes lignes de code suivantes :
peuvent s'écrire plus proprement comme ceci :
Cordialement,
Jordane
1 - Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
À la place, tu peux (<gras DOIS </gras> ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
2 - Ton script affiche ce qui vient de ta bdd.
Si tu n'as pas de données pour le mois d'octobre ... il ne va pas pouvoir l'inventer !
A la limite, tu peux faire une boucle sur chaque MOIS et pour chaque mois afficher la valeur (si elle existe sinon vide) de ta requête....
Pour t'en dire plus il faudrait que nous connaissions le contenu du résultat de ta requête.
Tu pourrais, pour ce faire, mettre en commentaire tes ECHO et à la place nous faire un
print_r($row);
PS: Tes lignes de code suivantes :
if($cellule2 >= 100) { echo "<td bgcolor='#C6EFCE'> ",$cellule2,"%</td>"; } else if($cellule2 = 0) { echo "<td bgcolor='#FFC7CE'>0</td>"; }
peuvent s'écrire plus proprement comme ceci :
$cel2 = $cellule2 >= 100 ? "<td bgcolor='#C6EFCE'> ",$cellule2,"%</td>" : ($cellule2 = 0 ? "<td bgcolor='#FFC7CE'>0</td>" : ""); echo $cel2;
Cordialement,
Jordane
voici le résultat de ma requête sous phpMyAdmin c'est mieux je pense.
Ensuite si on prends l'ID 1, c'est pareil sauf que sa commence a 12.
Ca serait plus simple pour te proposer un code par la suite que si je dois recréer manuellement l'array pour simuler la requête chez moi.... (pas envie de créer une table juste pour ça....)
mais bon...
Tu peux retravailler la sortie de ta requête pour en faire un Array associatif ayant pour clés : l'année, puis le mois ...
Un truc du genre
Puis pour afficher les données dans ton tableau...
les étoiles sont les noms.
Je vais essayer le code ci dessus avec les petites modif
- On évite de mettre des majuscules dans le nom des tables ou des champs d'une BDD.
En général on écrit tout en minuscule.
- Comme déjà dit.. tu es avec l'ancienne extension de mysql .... je t'invite vivement à passer à PDO ou mysqli.